diff --git a/pkg/app/pipedv1/cmd/piped/grpcapi/plugin_api.go b/pkg/app/pipedv1/cmd/piped/grpcapi/plugin_api.go index 4aba30a988..ecd4cbd9ae 100644 --- a/pkg/app/pipedv1/cmd/piped/grpcapi/plugin_api.go +++ b/pkg/app/pipedv1/cmd/piped/grpcapi/plugin_api.go @@ -18,6 +18,7 @@ import ( "context" "fmt" + "github.com/pipe-cd/pipecd/pkg/app/pipedv1/metadatastore" "github.com/pipe-cd/pipecd/pkg/app/server/service/pipedservice" config "github.com/pipe-cd/pipecd/pkg/configv1" service "github.com/pipe-cd/pipecd/pkg/plugin/pipedservice" @@ -32,8 +33,9 @@ type PluginAPI struct { cfg *config.PipedSpec apiClient apiClient - toolRegistry *toolRegistry - Logger *zap.Logger + toolRegistry *toolRegistry + Logger *zap.Logger + metadataStoreRegistry *metadatastore.MetadataStoreRegistry } type apiClient interface { @@ -46,17 +48,18 @@ func (a *PluginAPI) Register(server *grpc.Server) { service.RegisterPluginServiceServer(server, a) } -func NewPluginAPI(cfg *config.PipedSpec, apiClient apiClient, toolsDir string, logger *zap.Logger) (*PluginAPI, error) { +func NewPluginAPI(cfg *config.PipedSpec, apiClient apiClient, toolsDir string, logger *zap.Logger, metadataStoreRegistry *metadatastore.MetadataStoreRegistry) (*PluginAPI, error) { toolRegistry, err := newToolRegistry(toolsDir) if err != nil { return nil, fmt.Errorf("failed to create tool registry: %w", err) } return &PluginAPI{ - cfg: cfg, - apiClient: apiClient, - toolRegistry: toolRegistry, - Logger: logger.Named("plugin-api"), + cfg: cfg, + apiClient: apiClient, + toolRegistry: toolRegistry, + Logger: logger.Named("plugin-api"), + metadataStoreRegistry: metadataStoreRegistry, }, nil } @@ -112,3 +115,31 @@ func (a *PluginAPI) ReportStageLogsFromLastCheckpoint(ctx context.Context, req * return &service.ReportStageLogsFromLastCheckpointResponse{}, nil } + +func (a *PluginAPI) GetStageMetadata(ctx context.Context, req *service.GetStageMetadataRequest) (*service.GetStageMetadataResponse, error) { + return a.metadataStoreRegistry.GetStageMetadata(ctx, req) +} + +func (a *PluginAPI) PutStageMetadata(ctx context.Context, req *service.PutStageMetadataRequest) (*service.PutStageMetadataResponse, error) { + return a.metadataStoreRegistry.PutStageMetadata(ctx, req) +} + +func (a *PluginAPI) PutStageMetadataMulti(ctx context.Context, req *service.PutStageMetadataMultiRequest) (*service.PutStageMetadataMultiResponse, error) { + return a.metadataStoreRegistry.PutStageMetadataMulti(ctx, req) +} + +func (a *PluginAPI) GetDeploymentPluginMetadata(ctx context.Context, req *service.GetDeploymentPluginMetadataRequest) (*service.GetDeploymentPluginMetadataResponse, error) { + return a.metadataStoreRegistry.GetDeploymentPluginMetadata(ctx, req) +} + +func (a *PluginAPI) PutDeploymentPluginMetadata(ctx context.Context, req *service.PutDeploymentPluginMetadataRequest) (*service.PutDeploymentPluginMetadataResponse, error) { + return a.metadataStoreRegistry.PutDeploymentPluginMetadata(ctx, req) +} + +func (a *PluginAPI) PutDeploymentPluginMetadataMulti(ctx context.Context, req *service.PutDeploymentPluginMetadataMultiRequest) (*service.PutDeploymentPluginMetadataMultiResponse, error) { + return a.metadataStoreRegistry.PutDeploymentPluginMetadataMulti(ctx, req) +} + +func (a *PluginAPI) GetDeploymentSharedMetadata(ctx context.Context, req *service.GetDeploymentSharedMetadataRequest) (*service.GetDeploymentSharedMetadataResponse, error) { + return a.metadataStoreRegistry.GetDeploymentSharedMetadata(ctx, req) +} diff --git a/pkg/app/pipedv1/cmd/piped/piped.go b/pkg/app/pipedv1/cmd/piped/piped.go index ce2a5fcc10..62ac99db63 100644 --- a/pkg/app/pipedv1/cmd/piped/piped.go +++ b/pkg/app/pipedv1/cmd/piped/piped.go @@ -60,6 +60,7 @@ import ( "github.com/pipe-cd/pipecd/pkg/app/pipedv1/controller" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/controller/controllermetrics" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/eventwatcher" + "github.com/pipe-cd/pipecd/pkg/app/pipedv1/metadatastore" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/notifier" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/plugin" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/statsreporter" @@ -299,10 +300,11 @@ func (p *piped) run(ctx context.Context, input cli.Input) (runErr error) { eventLister = store.Lister() } + metadataStoreRegistry := metadatastore.NewMetadataStoreRegistry(apiClient) // Start running plugin service server. { var ( - service, err = grpcapi.NewPluginAPI(cfg, apiClient, p.toolsDir, input.Logger) + service, err = grpcapi.NewPluginAPI(cfg, apiClient, p.toolsDir, input.Logger, metadataStoreRegistry) opts = []rpc.Option{ rpc.WithPort(p.pluginServicePort), rpc.WithGracePeriod(p.gracePeriod), @@ -400,6 +402,7 @@ func (p *piped) run(ctx context.Context, input cli.Input) (runErr error) { commandLister, notifier, decrypter, + *metadataStoreRegistry, p.gracePeriod, input.Logger, tracerProvider, diff --git a/pkg/app/pipedv1/controller/controller.go b/pkg/app/pipedv1/controller/controller.go index a16a7017b7..11d554856a 100644 --- a/pkg/app/pipedv1/controller/controller.go +++ b/pkg/app/pipedv1/controller/controller.go @@ -34,6 +34,7 @@ import ( "google.golang.org/grpc/status" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/controller/controllermetrics" + "github.com/pipe-cd/pipecd/pkg/app/pipedv1/metadatastore" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/plugin" "github.com/pipe-cd/pipecd/pkg/app/server/service/pipedservice" "github.com/pipe-cd/pipecd/pkg/git" @@ -88,12 +89,13 @@ var ( ) type controller struct { - apiClient apiClient - gitClient gitClient - deploymentLister deploymentLister - commandLister commandLister - notifier notifier - secretDecrypter secretDecrypter + apiClient apiClient + gitClient gitClient + deploymentLister deploymentLister + commandLister commandLister + notifier notifier + secretDecrypter secretDecrypter + metadataStoreRegistry metadatastore.MetadataStoreRegistry // The registry of all plugins. pluginRegistry plugin.PluginRegistry @@ -134,19 +136,21 @@ func NewController( commandLister commandLister, notifier notifier, secretDecrypter secretDecrypter, + metadataStoreRegistry metadatastore.MetadataStoreRegistry, gracePeriod time.Duration, logger *zap.Logger, tracerProvider trace.TracerProvider, ) DeploymentController { return &controller{ - apiClient: apiClient, - gitClient: gitClient, - pluginRegistry: pluginRegistry, - deploymentLister: deploymentLister, - commandLister: commandLister, - notifier: notifier, - secretDecrypter: secretDecrypter, + apiClient: apiClient, + gitClient: gitClient, + pluginRegistry: pluginRegistry, + deploymentLister: deploymentLister, + commandLister: commandLister, + notifier: notifier, + secretDecrypter: secretDecrypter, + metadataStoreRegistry: metadataStoreRegistry, planners: make(map[string]*planner), donePlanners: make(map[string]time.Time), @@ -577,6 +581,8 @@ func (c *controller) startNewScheduler(ctx context.Context, d *model.Deployment) c.tracerProvider, ) + c.metadataStoreRegistry.Register(d) + cleanup := func() { logger.Info("cleaning up working directory for scheduler", zap.String("working-dir", workingDir)) err := os.RemoveAll(workingDir) @@ -594,6 +600,7 @@ func (c *controller) startNewScheduler(ctx context.Context, d *model.Deployment) go func() { defer c.wg.Done() defer cleanup() + defer c.metadataStoreRegistry.Delete(d.Id) if err := scheduler.Run(ctx); err != nil { logger.Error("failed to run scheduler", zap.Error(err)) } diff --git a/pkg/app/pipedv1/controller/planner.go b/pkg/app/pipedv1/controller/planner.go index d76f72dabe..1e274eb1d8 100644 --- a/pkg/app/pipedv1/controller/planner.go +++ b/pkg/app/pipedv1/controller/planner.go @@ -30,7 +30,6 @@ import ( "github.com/pipe-cd/pipecd/pkg/app/pipedv1/controller/controllermetrics" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/deploysource" - "github.com/pipe-cd/pipecd/pkg/app/pipedv1/metadatastore" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/plugin" "github.com/pipe-cd/pipecd/pkg/app/server/service/pipedservice" config "github.com/pipe-cd/pipecd/pkg/configv1" @@ -64,10 +63,8 @@ type planner struct { // The gitClient is used to perform git commands. gitClient gitClient - // The notifier and metadataStore are used for - // notification features. - notifier notifier - metadataStore metadatastore.MetadataStore + // The notifier is used for notification features. + notifier notifier // The secretDecrypter is used to decrypt secrets // which encrypted using PipeCD built-in secret management. @@ -118,7 +115,6 @@ func newPlanner( pluginRegistry: pluginRegistry, apiClient: apiClient, gitClient: gitClient, - metadataStore: metadatastore.NewMetadataStore(apiClient, d), notifier: notifier, secretDecrypter: secretDecrypter, doneDeploymentStatus: d.Status, @@ -657,7 +653,7 @@ func (p *planner) reportDeploymentCancelled(ctx context.Context, commander, reas // getApplicationNotificationMentions returns the list of users groups who should be mentioned in the notification. func (p *planner) getApplicationNotificationMentions(event model.NotificationEventType) ([]string, []string, error) { - n, ok := p.metadataStore.Shared().Get(model.MetadataKeyDeploymentNotification) + n, ok := p.deployment.Metadata[model.MetadataKeyDeploymentNotification] if !ok { return []string{}, []string{}, nil } diff --git a/pkg/app/pipedv1/controller/scheduler.go b/pkg/app/pipedv1/controller/scheduler.go index efd9a9fcb6..2ec97c6096 100644 --- a/pkg/app/pipedv1/controller/scheduler.go +++ b/pkg/app/pipedv1/controller/scheduler.go @@ -30,7 +30,6 @@ import ( "github.com/pipe-cd/pipecd/pkg/app/pipedv1/controller/controllermetrics" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/deploysource" - "github.com/pipe-cd/pipecd/pkg/app/pipedv1/metadatastore" "github.com/pipe-cd/pipecd/pkg/app/pipedv1/plugin" "github.com/pipe-cd/pipecd/pkg/app/server/service/pipedservice" config "github.com/pipe-cd/pipecd/pkg/configv1" @@ -47,7 +46,6 @@ type scheduler struct { apiClient apiClient gitClient gitClient - metadataStore metadatastore.MetadataStore notifier notifier secretDecrypter secretDecrypter @@ -99,7 +97,6 @@ func newScheduler( apiClient: apiClient, gitClient: gitClient, pluginRegistry: pluginRegistry, - metadataStore: metadatastore.NewMetadataStore(apiClient, d), notifier: notifier, secretDecrypter: secretsDecrypter, doneDeploymentStatus: d.Status, @@ -717,7 +714,7 @@ func (s *scheduler) reportDeploymentCompleted(ctx context.Context, status model. // getApplicationNotificationMentions returns the list of users groups who should be mentioned in the notification. func (s *scheduler) getApplicationNotificationMentions(event model.NotificationEventType) ([]string, []string, error) { - n, ok := s.metadataStore.Shared().Get(model.MetadataKeyDeploymentNotification) + n, ok := s.deployment.Metadata[model.MetadataKeyDeploymentNotification] if !ok { return []string{}, []string{}, nil } diff --git a/pkg/app/pipedv1/metadatastore/registry.go b/pkg/app/pipedv1/metadatastore/registry.go new file mode 100644 index 0000000000..33c2593bdf --- /dev/null +++ b/pkg/app/pipedv1/metadatastore/registry.go @@ -0,0 +1,153 @@ +// Copyright 2024 The PipeCD Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metadatastore + +import ( + "context" + "fmt" + + "github.com/pipe-cd/pipecd/pkg/model" + service "github.com/pipe-cd/pipecd/pkg/plugin/pipedservice" +) + +// MetadataStoreRegistry is a registry of metadata stores for deployments. +type MetadataStoreRegistry struct { + apiClient apiClient + + // stores is a map of metadata store for each deployment. + // The key is the deployment ID. + stores map[string]*metadataStore +} + +// NewMetadataStoreRegistry creates a new MetadataStoreRegistry. +func NewMetadataStoreRegistry(apiClient apiClient) *MetadataStoreRegistry { + return &MetadataStoreRegistry{apiClient: apiClient, stores: make(map[string]*metadataStore, 0)} +} + +// Register creates a new metadata store for the given deployment. +// This must be called before other Get/Put methods are called for the deployment. +// If the metadata store already exists, the new one will replace the existing one. +func (r *MetadataStoreRegistry) Register(d *model.Deployment) { + store := newMetadataStore(r.apiClient, d) + r.stores[d.Id] = store +} + +// Delete deletes the metadata store for the given deployment in order to release the resources. +// If the metadata store is not found, it is a no-op. +func (r *MetadataStoreRegistry) Delete(deploymentID string) { + delete(r.stores, deploymentID) +} + +// GetStageMetadata implements the backend of PluginService.GetStageMetadata(). +func (r *MetadataStoreRegistry) GetStageMetadata(ctx context.Context, req *service.GetStageMetadataRequest) (*service.GetStageMetadataResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.GetStageMetadataResponse{Found: false}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + value, found := mds.stageGet(req.StageId, req.Key) + return &service.GetStageMetadataResponse{ + Value: value, + Found: found, + }, nil +} + +// PutStageMetadata implements the backend of PluginService.PutStageMetadata(). +func (r *MetadataStoreRegistry) PutStageMetadata(ctx context.Context, req *service.PutStageMetadataRequest) (*service.PutStageMetadataResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.PutStageMetadataResponse{}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + err := mds.stagePutMulti(ctx, req.StageId, map[string]string{req.Key: req.Value}) + if err != nil { + return &service.PutStageMetadataResponse{}, err + } + + return &service.PutStageMetadataResponse{}, nil +} + +// PutStageMetadataMulti implements the backend of PluginService.PutStageMetadataMulti(). +func (r *MetadataStoreRegistry) PutStageMetadataMulti(ctx context.Context, req *service.PutStageMetadataMultiRequest) (*service.PutStageMetadataMultiResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.PutStageMetadataMultiResponse{}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + err := mds.stagePutMulti(ctx, req.StageId, req.Metadata) + if err != nil { + return &service.PutStageMetadataMultiResponse{}, err + } + + return &service.PutStageMetadataMultiResponse{}, nil +} + +// GetDeploymentMetadata implements the backend of PluginService.GetDeploymentMetadata(). +func (r *MetadataStoreRegistry) GetDeploymentPluginMetadata(ctx context.Context, req *service.GetDeploymentPluginMetadataRequest) (*service.GetDeploymentPluginMetadataResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.GetDeploymentPluginMetadataResponse{Found: false}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + value, found := mds.pluginGet(req.PluginName, req.Key) + return &service.GetDeploymentPluginMetadataResponse{ + Value: value, + Found: found, + }, nil +} + +// PutDeploymentMetadata implements the backend of PluginService.PutDeploymentMetadata(). +func (r *MetadataStoreRegistry) PutDeploymentPluginMetadata(ctx context.Context, req *service.PutDeploymentPluginMetadataRequest) (*service.PutDeploymentPluginMetadataResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.PutDeploymentPluginMetadataResponse{}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + err := mds.pluginPutMulti(ctx, req.PluginName, map[string]string{req.Key: req.Value}) + if err != nil { + return &service.PutDeploymentPluginMetadataResponse{}, err + } + + return &service.PutDeploymentPluginMetadataResponse{}, nil +} + +// PutDeploymentMetadataMulti implements the backend of PluginService.PutDeploymentMetadataMulti(). +func (r *MetadataStoreRegistry) PutDeploymentPluginMetadataMulti(ctx context.Context, req *service.PutDeploymentPluginMetadataMultiRequest) (*service.PutDeploymentPluginMetadataMultiResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.PutDeploymentPluginMetadataMultiResponse{}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + err := mds.pluginPutMulti(ctx, req.PluginName, req.Metadata) + if err != nil { + return &service.PutDeploymentPluginMetadataMultiResponse{}, err + } + + return &service.PutDeploymentPluginMetadataMultiResponse{}, nil +} + +// GetDeploymentSharedMetadata implements the backend of PluginService.GetDeploymentSharedMetadata(). +func (r *MetadataStoreRegistry) GetDeploymentSharedMetadata(ctx context.Context, req *service.GetDeploymentSharedMetadataRequest) (*service.GetDeploymentSharedMetadataResponse, error) { + mds, ok := r.stores[req.DeploymentId] + if !ok { + return &service.GetDeploymentSharedMetadataResponse{Found: false}, fmt.Errorf("metadata store not found for deployment %s", req.DeploymentId) + } + + value, found := mds.sharedGet(req.Key) + return &service.GetDeploymentSharedMetadataResponse{ + Value: value, + Found: found, + }, nil +} diff --git a/pkg/app/pipedv1/metadatastore/registry_test.go b/pkg/app/pipedv1/metadatastore/registry_test.go new file mode 100644 index 0000000000..98ef494c40 --- /dev/null +++ b/pkg/app/pipedv1/metadatastore/registry_test.go @@ -0,0 +1,293 @@ +// Copyright 2024 The PipeCD Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metadatastore + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/pipe-cd/pipecd/pkg/model" + service "github.com/pipe-cd/pipecd/pkg/plugin/pipedservice" +) + +func TestRegistry(t *testing.T) { + t.Parallel() + + ac := &fakeAPIClient{ + shared: make(map[string]string, 0), + plugins: make(map[string]metadata, 0), + stages: make(map[string]metadata, 0), + } + d := &model.Deployment{ + MetadataV2: &model.DeploymentMetadata{ + Shared: &model.DeploymentMetadata_KeyValues{ + KeyValues: map[string]string{ + "key-1": "value-1", + }, + }, + Plugins: map[string]*model.DeploymentMetadata_KeyValues{ + "plugin-1": { + KeyValues: map[string]string{ + "plugin-1-key-1": "plugin-1-value-1", + }, + }, + }, + }, + Stages: []*model.PipelineStage{ + { + Id: "stage-1", + }, + { + Id: "stage-2", + Metadata: map[string]string{ + "stage-2-key-1": "stage-2-value-1", + }, + }, + }, + } + + r := NewMetadataStoreRegistry(ac) + r.Register(d) + + ctx := context.Background() + + // DeploymentShared metadata. + { + // Get + { + // Existing key + resp, err := r.GetDeploymentSharedMetadata(ctx, &service.GetDeploymentSharedMetadataRequest{ + DeploymentId: d.Id, + Key: "key-1", + }) + assert.NoError(t, err) + assert.Equal(t, true, resp.Found) + assert.Equal(t, "value-1", resp.Value) + + // Nonexistent key + resp, err = r.GetDeploymentSharedMetadata(ctx, &service.GetDeploymentSharedMetadataRequest{ + DeploymentId: d.Id, + Key: "nonexistent-key", + }) + assert.NoError(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + } + } + + // DeploymentPlugin metadata. + { + // Get + { + // Existing key + resp, err := r.GetDeploymentPluginMetadata(ctx, &service.GetDeploymentPluginMetadataRequest{ + DeploymentId: d.Id, + PluginName: "plugin-1", + Key: "plugin-1-key-1", + }) + assert.NoError(t, err) + assert.Equal(t, true, resp.Found) + assert.Equal(t, "plugin-1-value-1", resp.Value) + + // Nonexistent key + resp, err = r.GetDeploymentPluginMetadata(ctx, &service.GetDeploymentPluginMetadataRequest{ + DeploymentId: d.Id, + PluginName: "plugin-1", + Key: "nonexistent-key", + }) + assert.NoError(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + + // Nonexistent plugin + resp, err = r.GetDeploymentPluginMetadata(ctx, &service.GetDeploymentPluginMetadataRequest{ + DeploymentId: d.Id, + PluginName: "nonexistent-plugin", + Key: "plugin-1-key-1", + }) + assert.NoError(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + + // Nonexistent deployment + resp, err = r.GetDeploymentPluginMetadata(ctx, &service.GetDeploymentPluginMetadataRequest{ + DeploymentId: "not-exist-id", + PluginName: "plugin-1", + Key: "plugin-1-key-1", + }) + assert.Error(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + } + // Put + { + // New key + _, err := r.PutDeploymentPluginMetadata(ctx, &service.PutDeploymentPluginMetadataRequest{ + DeploymentId: d.Id, + PluginName: "plugin-1", + Key: "plugin-1-key-2", + Value: "plugin-1-value-2", + }) + assert.NoError(t, err) + assert.Equal(t, metadata{ + "plugin-1-key-1": "plugin-1-value-1", + "plugin-1-key-2": "plugin-1-value-2", + }, ac.plugins["plugin-1"]) + + // Nonexistent deployment + _, err = r.PutDeploymentPluginMetadata(ctx, &service.PutDeploymentPluginMetadataRequest{ + DeploymentId: "not-exist-id", + PluginName: "plugin-1", + Key: "plugin-1-key-2", + Value: "plugin-1-value-2", + }) + assert.Error(t, err) + } + // PutMulti + { + // New keys(3,4) with one existing key(1) + _, err := r.PutDeploymentPluginMetadataMulti(ctx, &service.PutDeploymentPluginMetadataMultiRequest{ + DeploymentId: d.Id, + PluginName: "plugin-1", + Metadata: map[string]string{ + "plugin-1-key-3": "plugin-1-value-3", + "plugin-1-key-1": "plugin-1-value-1-new", + "plugin-1-key-4": "plugin-1-value-4", + }, + }) + assert.NoError(t, err) + assert.Equal(t, metadata{ + "plugin-1-key-1": "plugin-1-value-1-new", + "plugin-1-key-2": "plugin-1-value-2", + "plugin-1-key-3": "plugin-1-value-3", + "plugin-1-key-4": "plugin-1-value-4", + }, ac.plugins["plugin-1"]) + + // Nonexistent deployment + _, err = r.PutDeploymentPluginMetadataMulti(ctx, &service.PutDeploymentPluginMetadataMultiRequest{ + DeploymentId: "nonexistent-id", + PluginName: "plugin-1", + Metadata: map[string]string{ + "plugin-1-key-3": "plugin-1-value-3", + "plugin-1-key-4": "plugin-1-value-4", + }, + }) + assert.Error(t, err) + } + } + + // Stage metadata. + { + // Get + { + // Existing key + resp, err := r.GetStageMetadata(ctx, &service.GetStageMetadataRequest{ + DeploymentId: d.Id, + StageId: "stage-2", + Key: "stage-2-key-1", + }) + assert.NoError(t, err) + assert.Equal(t, true, resp.Found) + assert.Equal(t, "stage-2-value-1", resp.Value) + + // Nonexistent key + resp, err = r.GetStageMetadata(ctx, &service.GetStageMetadataRequest{ + DeploymentId: d.Id, + StageId: "stage-1", + Key: "not-exist-key", + }) + assert.NoError(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + + // Nonexistent stage + resp, err = r.GetStageMetadata(ctx, &service.GetStageMetadataRequest{ + DeploymentId: d.Id, + StageId: "not-exist-stage", + Key: "key-1", + }) + assert.NoError(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + + // Nonexistent deployment + resp, err = r.GetStageMetadata(ctx, &service.GetStageMetadataRequest{ + DeploymentId: "not-exist-id", + StageId: "stage-1", + Key: "key-1", + }) + assert.Error(t, err) + assert.Equal(t, false, resp.Found) + assert.Equal(t, "", resp.Value) + } + // Put + { + // New key + _, err := r.PutStageMetadata(ctx, &service.PutStageMetadataRequest{ + DeploymentId: d.Id, + StageId: "stage-1", + Key: "stage-1-key-1", + Value: "stage-1-value-1", + }) + assert.NoError(t, err) + assert.Equal(t, metadata{ + "stage-1-key-1": "stage-1-value-1", + }, ac.stages["stage-1"]) + + // Nonexistent deployment + _, err = r.PutStageMetadata(ctx, &service.PutStageMetadataRequest{ + DeploymentId: "not-exist-id", + StageId: "stage-1", + Key: "stage-1-key-1", + Value: "stage-1-value-1", + }) + assert.Error(t, err) + } + // PutMulti + { + // New key(2) with one existing key(1) + _, err := r.PutStageMetadataMulti(ctx, &service.PutStageMetadataMultiRequest{ + DeploymentId: d.Id, + StageId: "stage-2", + Metadata: map[string]string{ + "stage-2-key-1": "stage-2-value-12", + "stage-2-key-2": "stage-2-value-2", + }, + }) + assert.NoError(t, err) + assert.Equal(t, map[string]metadata{ + "stage-1": { + "stage-1-key-1": "stage-1-value-1", + }, + "stage-2": { + "stage-2-key-1": "stage-2-value-12", + "stage-2-key-2": "stage-2-value-2", + }, + }, ac.stages) + + // Nonexistent deployment + _, err = r.PutStageMetadataMulti(ctx, &service.PutStageMetadataMultiRequest{ + DeploymentId: "not-exist-id", + StageId: "stage-1", + Metadata: map[string]string{ + "stage-1-key-1": "stage-1-value-1", + }, + }) + assert.Error(t, err) + } + } +} diff --git a/pkg/app/pipedv1/metadatastore/store.go b/pkg/app/pipedv1/metadatastore/store.go index bb6bbee718..9d792c0bf2 100644 --- a/pkg/app/pipedv1/metadatastore/store.go +++ b/pkg/app/pipedv1/metadatastore/store.go @@ -24,32 +24,8 @@ import ( "github.com/pipe-cd/pipecd/pkg/model" ) -type Getter interface { - // Get finds and returns value of a given key. - Get(key string) (string, bool) -} - -type Putter interface { - // Put adds a single key, value into store. - // If the key is already existing, it overwrite the old value by the new one. - Put(ctx context.Context, key, value string) error - // PutMulti adds multiple (key, value) into store. - // If any key is already existing, it overwrite the old value by the new one. - PutMulti(ctx context.Context, md map[string]string) error -} - -type Store interface { - Getter - Putter -} - -type MetadataStore interface { - Shared() Store - Stage(stageID string) Store -} - type apiClient interface { - SaveDeploymentMetadata(ctx context.Context, req *pipedservice.SaveDeploymentMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveDeploymentMetadataResponse, error) + SaveDeploymentPluginMetadata(ctx context.Context, req *pipedservice.SaveDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveDeploymentPluginMetadataResponse, error) SaveStageMetadata(ctx context.Context, req *pipedservice.SaveStageMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveStageMetadataResponse, error) } @@ -59,30 +35,38 @@ type metadataStore struct { apiClient apiClient deployment *model.Deployment - shared metadata - stages map[string]metadata + shared metadata + plugins map[string]metadata + stages map[string]metadata - sharedMu sync.RWMutex - stagesMu sync.RWMutex + sharedMu sync.RWMutex + pluginsMu sync.RWMutex + stagesMu sync.RWMutex } -// NewMetadataStore builds a metadata store for a given deployment. +// newMetadataStore builds a metadata store for the given deployment. // It keeps local data and makes sure that they are synced with the remote store. -func NewMetadataStore(apiClient apiClient, d *model.Deployment) MetadataStore { +func newMetadataStore(apiClient apiClient, d *model.Deployment) *metadataStore { s := &metadataStore{ apiClient: apiClient, deployment: d, shared: make(map[string]string, 0), + plugins: make(map[string]metadata, 0), stages: make(map[string]metadata, 0), } // Initialize shared metadata of deployment. - for k, v := range d.Metadata { + for k, v := range d.GetMetadataV2().GetShared().GetKeyValues() { s.shared[k] = v } + // Initialize metadata of plugins of the deployment. + for plugin, md := range d.GetMetadataV2().GetPlugins() { + s.plugins[plugin] = md.GetKeyValues() + } + // Initialize metadata of all stages. - for _, stage := range d.Stages { + for _, stage := range d.GetStages() { if md := stage.Metadata; md != nil { s.stages[stage.Id] = md } @@ -90,11 +74,7 @@ func NewMetadataStore(apiClient apiClient, d *model.Deployment) MetadataStore { return s } -func (s *metadataStore) Shared() Store { - return s -} - -func (s *metadataStore) Get(key string) (value string, found bool) { +func (s *metadataStore) sharedGet(key string) (value string, found bool) { s.sharedMu.RLock() defer s.sharedMu.RUnlock() @@ -102,56 +82,35 @@ func (s *metadataStore) Get(key string) (value string, found bool) { return } -func (s *metadataStore) Put(ctx context.Context, key, value string) error { - s.sharedMu.Lock() - s.shared[key] = value - s.sharedMu.Unlock() - - return s.syncSharedMetadata(ctx) -} +func (s *metadataStore) pluginGet(pluginName, key string) (value string, found bool) { + s.pluginsMu.RLock() + defer s.pluginsMu.RUnlock() -func (s *metadataStore) PutMulti(ctx context.Context, md map[string]string) error { - s.sharedMu.Lock() - for key, value := range md { - s.shared[key] = value - } - s.sharedMu.Unlock() - - return s.syncSharedMetadata(ctx) -} - -func (s *metadataStore) syncSharedMetadata(ctx context.Context) error { - s.sharedMu.RLock() - md := make(map[string]string, len(s.shared)) - for k, v := range s.shared { - md[k] = v + md, ok := s.plugins[pluginName] + if !ok { + return "", false } - s.sharedMu.RUnlock() - // Send full list of metadata to ensure that they will be synced. - _, err := s.apiClient.SaveDeploymentMetadata(ctx, &pipedservice.SaveDeploymentMetadataRequest{ - DeploymentId: s.deployment.Id, - Metadata: md, - }) - return err + value, found = md[key] + return } -func (s *metadataStore) stagePutMulti(ctx context.Context, stageID string, md map[string]string) error { - s.stagesMu.Lock() - merged := make(map[string]string, len(md)+len(s.stages[stageID])) - for k, v := range s.stages[stageID] { +func (s *metadataStore) pluginPutMulti(ctx context.Context, pluginName string, md map[string]string) error { + s.pluginsMu.Lock() + merged := make(map[string]string, len(md)+len(s.plugins[pluginName])) + for k, v := range s.plugins[pluginName] { merged[k] = v } for k, v := range md { merged[k] = v } - s.stages[stageID] = merged - s.stagesMu.Unlock() + s.plugins[pluginName] = merged + s.pluginsMu.Unlock() - // Send full list of metadata to ensure that they will be synced. - _, err := s.apiClient.SaveStageMetadata(ctx, &pipedservice.SaveStageMetadataRequest{ + // Persist to the remote store. + _, err := s.apiClient.SaveDeploymentPluginMetadata(ctx, &pipedservice.SaveDeploymentPluginMetadataRequest{ DeploymentId: s.deployment.Id, - StageId: stageID, + PluginName: pluginName, Metadata: merged, }) return err @@ -170,23 +129,23 @@ func (s *metadataStore) stageGet(stageID, key string) (value string, found bool) return } -func (s *metadataStore) Stage(stageID string) Store { - return &stageMetadataStore{backend: s, stageID: stageID} -} - -type stageMetadataStore struct { - stageID string - backend *metadataStore -} - -func (s *stageMetadataStore) PutMulti(ctx context.Context, md map[string]string) error { - return s.backend.stagePutMulti(ctx, s.stageID, md) -} - -func (s *stageMetadataStore) Put(ctx context.Context, key, value string) error { - return s.backend.stagePutMulti(ctx, s.stageID, map[string]string{key: value}) -} +func (s *metadataStore) stagePutMulti(ctx context.Context, stageID string, md map[string]string) error { + s.stagesMu.Lock() + merged := make(map[string]string, len(md)+len(s.stages[stageID])) + for k, v := range s.stages[stageID] { + merged[k] = v + } + for k, v := range md { + merged[k] = v + } + s.stages[stageID] = merged + s.stagesMu.Unlock() -func (s *stageMetadataStore) Get(key string) (string, bool) { - return s.backend.stageGet(s.stageID, key) + // Send full list of metadata to ensure that they will be synced. + _, err := s.apiClient.SaveStageMetadata(ctx, &pipedservice.SaveStageMetadataRequest{ + DeploymentId: s.deployment.Id, + StageId: stageID, + Metadata: merged, + }) + return err } diff --git a/pkg/app/pipedv1/metadatastore/store_test.go b/pkg/app/pipedv1/metadatastore/store_test.go index 961cc887c4..53dc92ec5a 100644 --- a/pkg/app/pipedv1/metadatastore/store_test.go +++ b/pkg/app/pipedv1/metadatastore/store_test.go @@ -16,6 +16,7 @@ package metadatastore import ( "context" + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -26,11 +27,12 @@ import ( ) type fakeAPIClient struct { - shared metadata - stages map[string]metadata + shared metadata + plugins map[string]metadata + stages map[string]metadata } -func (c *fakeAPIClient) SaveDeploymentMetadata(ctx context.Context, req *pipedservice.SaveDeploymentMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveDeploymentMetadataResponse, error) { +func (c *fakeAPIClient) SaveDeploymentSharedMetadata(ctx context.Context, req *pipedservice.SaveDeploymentSharedMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveDeploymentSharedMetadataResponse, error) { md := make(map[string]string, len(c.shared)+len(req.Metadata)) for k, v := range c.shared { md[k] = v @@ -39,7 +41,20 @@ func (c *fakeAPIClient) SaveDeploymentMetadata(ctx context.Context, req *pipedse md[k] = v } c.shared = md - return &pipedservice.SaveDeploymentMetadataResponse{}, nil + return &pipedservice.SaveDeploymentSharedMetadataResponse{}, nil +} + +func (c *fakeAPIClient) SaveDeploymentPluginMetadata(ctx context.Context, req *pipedservice.SaveDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveDeploymentPluginMetadataResponse, error) { + ori := c.plugins[req.PluginName] + md := make(map[string]string, len(ori)+len(req.Metadata)) + for k, v := range ori { + md[k] = v + } + for k, v := range req.Metadata { + md[k] = v + } + c.plugins[req.PluginName] = md + return &pipedservice.SaveDeploymentPluginMetadataResponse{}, nil } func (c *fakeAPIClient) SaveStageMetadata(ctx context.Context, req *pipedservice.SaveStageMetadataRequest, opts ...grpc.CallOption) (*pipedservice.SaveStageMetadataResponse, error) { @@ -59,97 +74,122 @@ func TestStore(t *testing.T) { t.Parallel() ac := &fakeAPIClient{ - shared: make(map[string]string, 0), - stages: make(map[string]metadata, 0), + shared: make(map[string]string, 0), + plugins: make(map[string]metadata, 0), + stages: make(map[string]metadata, 0), } d := &model.Deployment{ - Metadata: map[string]string{ - "key-1": "value-1", + MetadataV2: &model.DeploymentMetadata{ + Shared: &model.DeploymentMetadata_KeyValues{ + KeyValues: map[string]string{ + "key-1": "value-1", + }, + }, + Plugins: map[string]*model.DeploymentMetadata_KeyValues{ + "plugin-1": { + KeyValues: map[string]string{ + "plugin-1-key-1": "plugin-1-value-1", + }, + }, + }, }, Stages: []*model.PipelineStage{ { Id: "stage-1", - }, - { - Id: "stage-2", Metadata: map[string]string{ - "stage-2-key-1": "stage-2-value-1", + "stage-1-key-1": "stage-1-value-1", }, }, }, } ctx := context.Background() - store := NewMetadataStore(ac, d) + store := newMetadataStore(ac, d) + fmt.Printf("[DEBUG] store.shared: %+v\n", store.shared) + fmt.Printf("[DEBUG] store.plugins: %+v\n", store.plugins) + fmt.Printf("[DEBUG] store.plugins[plugin-1]: %+v\n", store.plugins["plugin-1"]) + fmt.Printf("[DEBUG] store.stages: %+v\n", store.stages) + fmt.Printf("[DEBUG] store.stages[stage-1]: %+v\n", store.stages["stage-1"]) // Shared metadata. - value, found := store.Shared().Get("key-1") - assert.Equal(t, "value-1", value) - assert.Equal(t, true, found) - - value, found = store.Shared().Get("key-2") - assert.Equal(t, "", value) - assert.Equal(t, false, found) - - err := store.Shared().Put(ctx, "key-2", "value-2") - assert.Equal(t, nil, err) - - assert.Equal(t, metadata{ - "key-1": "value-1", - "key-2": "value-2", - }, ac.shared) - - err = store.Shared().PutMulti(ctx, map[string]string{ - "key-3": "value-3", - "key-1": "value-12", - "key-4": "value-4", - }) - assert.Equal(t, nil, err) - - assert.Equal(t, metadata{ - "key-1": "value-12", - "key-2": "value-2", - "key-3": "value-3", - "key-4": "value-4", - }, ac.shared) + { + // existing key + value, found := store.sharedGet("key-1") + assert.Equal(t, "value-1", value) + assert.Equal(t, true, found) + + // nonexistent key + value, found = store.sharedGet("key-2") + assert.Equal(t, "", value) + assert.Equal(t, false, found) + } + + // Plugin metadata. + { + // existing key + value, found := store.pluginGet("plugin-1", "plugin-1-key-1") + assert.Equal(t, "plugin-1-value-1", value) + assert.Equal(t, true, found) + + // nonexistent key + value, found = store.pluginGet("plugin-1", "plugin-1-key-2") + assert.Equal(t, "", value) + assert.Equal(t, false, found) + + // put new and existing keys + err := store.pluginPutMulti(ctx, "plugin-1", map[string]string{ + "plugin-1-key-2": "plugin-1-value-2", + "plugin-1-key-1": "plugin-1-value-1-new", + "plugin-1-key-3": "plugin-1-value-3", + }) + assert.Equal(t, nil, err) + value, found = store.pluginGet("plugin-1", "plugin-1-key-1") + assert.Equal(t, "plugin-1-value-1-new", value) + assert.Equal(t, true, found) + value, found = store.pluginGet("plugin-1", "plugin-1-key-2") + assert.Equal(t, "plugin-1-value-2", value) + assert.Equal(t, true, found) + value, found = store.pluginGet("plugin-1", "plugin-1-key-3") + assert.Equal(t, "plugin-1-value-3", value) + assert.Equal(t, true, found) + + assert.Equal(t, metadata{ + "plugin-1-key-1": "plugin-1-value-1-new", + "plugin-1-key-2": "plugin-1-value-2", + "plugin-1-key-3": "plugin-1-value-3", + }, ac.plugins["plugin-1"]) + } // Stage metadata. - value, found = store.Stage("stage-1").Get("key-1") - assert.Equal(t, "", value) - assert.Equal(t, false, found) - - value, found = store.Stage("stage-2").Get("stage-2-key-1") - assert.Equal(t, "stage-2-value-1", value) - assert.Equal(t, true, found) - - err = store.Stage("stage-1").Put(ctx, "stage-1-key-1", "stage-1-value-1") - assert.Equal(t, nil, err) - - value, found = store.Stage("stage-1").Get("stage-1-key-1") - assert.Equal(t, "stage-1-value-1", value) - assert.Equal(t, true, found) - - err = store.Stage("stage-2").PutMulti(ctx, map[string]string{ - "stage-2-key-1": "stage-2-value-12", - "stage-2-key-2": "stage-2-value-2", - }) - assert.Equal(t, nil, err) - - value, found = store.Stage("stage-2").Get("stage-2-key-1") - assert.Equal(t, "stage-2-value-12", value) - assert.Equal(t, true, found) - - value, found = store.Stage("stage-2").Get("stage-2-key-2") - assert.Equal(t, "stage-2-value-2", value) - assert.Equal(t, true, found) - - assert.Equal(t, map[string]metadata{ - "stage-1": { - "stage-1-key-1": "stage-1-value-1", - }, - "stage-2": { - "stage-2-key-1": "stage-2-value-12", - "stage-2-key-2": "stage-2-value-2", - }, - }, ac.stages) + { + // existing key + value, found := store.stageGet("stage-1", "stage-1-key-1") + assert.Equal(t, "stage-1-value-1", value) + assert.Equal(t, true, found) + + // nonexistent key + value, found = store.stageGet("stage-1", "nonexistent-key") + assert.Equal(t, "", value) + assert.Equal(t, false, found) + + // put new and existing keys + err := store.stagePutMulti(ctx, "stage-1", map[string]string{ + "stage-1-key-1": "stage-1-value-1-new", + "stage-1-key-2": "stage-1-value-2", + }) + assert.Equal(t, nil, err) + value, found = store.stageGet("stage-1", "stage-1-key-1") + assert.Equal(t, "stage-1-value-1-new", value) + assert.Equal(t, true, found) + value, found = store.stageGet("stage-1", "stage-1-key-2") + assert.Equal(t, "stage-1-value-2", value) + assert.Equal(t, true, found) + + assert.Equal(t, map[string]metadata{ + "stage-1": { + "stage-1-key-1": "stage-1-value-1-new", + "stage-1-key-2": "stage-1-value-2", + }, + }, ac.stages) + } } diff --git a/pkg/app/server/service/pipedservice/service.pb.go b/pkg/app/server/service/pipedservice/service.pb.go index c89413e19e..fa74aa2f00 100644 --- a/pkg/app/server/service/pipedservice/service.pb.go +++ b/pkg/app/server/service/pipedservice/service.pb.go @@ -137,7 +137,7 @@ func (x ListEventsRequest_Status) Number() protoreflect.EnumNumber { // Deprecated: Use ListEventsRequest_Status.Descriptor instead. func (ListEventsRequest_Status) EnumDescriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{46, 0} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{50, 0} } type ReportStatRequest struct { @@ -1649,6 +1649,200 @@ func (*SaveDeploymentMetadataResponse) Descriptor() ([]byte, []int) { return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{27} } +type SaveDeploymentSharedMetadataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *SaveDeploymentSharedMetadataRequest) Reset() { + *x = SaveDeploymentSharedMetadataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveDeploymentSharedMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveDeploymentSharedMetadataRequest) ProtoMessage() {} + +func (x *SaveDeploymentSharedMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveDeploymentSharedMetadataRequest.ProtoReflect.Descriptor instead. +func (*SaveDeploymentSharedMetadataRequest) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{28} +} + +func (x *SaveDeploymentSharedMetadataRequest) GetDeploymentId() string { + if x != nil { + return x.DeploymentId + } + return "" +} + +func (x *SaveDeploymentSharedMetadataRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type SaveDeploymentSharedMetadataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SaveDeploymentSharedMetadataResponse) Reset() { + *x = SaveDeploymentSharedMetadataResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveDeploymentSharedMetadataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveDeploymentSharedMetadataResponse) ProtoMessage() {} + +func (x *SaveDeploymentSharedMetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveDeploymentSharedMetadataResponse.ProtoReflect.Descriptor instead. +func (*SaveDeploymentSharedMetadataResponse) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{29} +} + +type SaveDeploymentPluginMetadataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *SaveDeploymentPluginMetadataRequest) Reset() { + *x = SaveDeploymentPluginMetadataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveDeploymentPluginMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveDeploymentPluginMetadataRequest) ProtoMessage() {} + +func (x *SaveDeploymentPluginMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveDeploymentPluginMetadataRequest.ProtoReflect.Descriptor instead. +func (*SaveDeploymentPluginMetadataRequest) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{30} +} + +func (x *SaveDeploymentPluginMetadataRequest) GetDeploymentId() string { + if x != nil { + return x.DeploymentId + } + return "" +} + +func (x *SaveDeploymentPluginMetadataRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *SaveDeploymentPluginMetadataRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type SaveDeploymentPluginMetadataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SaveDeploymentPluginMetadataResponse) Reset() { + *x = SaveDeploymentPluginMetadataResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveDeploymentPluginMetadataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveDeploymentPluginMetadataResponse) ProtoMessage() {} + +func (x *SaveDeploymentPluginMetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveDeploymentPluginMetadataResponse.ProtoReflect.Descriptor instead. +func (*SaveDeploymentPluginMetadataResponse) Descriptor() ([]byte, []int) { + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{31} +} + type SaveStageMetadataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1662,7 +1856,7 @@ type SaveStageMetadataRequest struct { func (x *SaveStageMetadataRequest) Reset() { *x = SaveStageMetadataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[28] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1675,7 +1869,7 @@ func (x *SaveStageMetadataRequest) String() string { func (*SaveStageMetadataRequest) ProtoMessage() {} func (x *SaveStageMetadataRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[28] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1688,7 +1882,7 @@ func (x *SaveStageMetadataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveStageMetadataRequest.ProtoReflect.Descriptor instead. func (*SaveStageMetadataRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{28} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{32} } func (x *SaveStageMetadataRequest) GetDeploymentId() string { @@ -1721,7 +1915,7 @@ type SaveStageMetadataResponse struct { func (x *SaveStageMetadataResponse) Reset() { *x = SaveStageMetadataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[29] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1734,7 +1928,7 @@ func (x *SaveStageMetadataResponse) String() string { func (*SaveStageMetadataResponse) ProtoMessage() {} func (x *SaveStageMetadataResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[29] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1747,7 +1941,7 @@ func (x *SaveStageMetadataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveStageMetadataResponse.ProtoReflect.Descriptor instead. func (*SaveStageMetadataResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{29} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{33} } type ReportStageLogsRequest struct { @@ -1764,7 +1958,7 @@ type ReportStageLogsRequest struct { func (x *ReportStageLogsRequest) Reset() { *x = ReportStageLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[30] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1777,7 +1971,7 @@ func (x *ReportStageLogsRequest) String() string { func (*ReportStageLogsRequest) ProtoMessage() {} func (x *ReportStageLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[30] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1790,7 +1984,7 @@ func (x *ReportStageLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStageLogsRequest.ProtoReflect.Descriptor instead. func (*ReportStageLogsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{30} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{34} } func (x *ReportStageLogsRequest) GetDeploymentId() string { @@ -1830,7 +2024,7 @@ type ReportStageLogsResponse struct { func (x *ReportStageLogsResponse) Reset() { *x = ReportStageLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[31] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1843,7 +2037,7 @@ func (x *ReportStageLogsResponse) String() string { func (*ReportStageLogsResponse) ProtoMessage() {} func (x *ReportStageLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[31] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1856,7 +2050,7 @@ func (x *ReportStageLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStageLogsResponse.ProtoReflect.Descriptor instead. func (*ReportStageLogsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{31} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{35} } type ReportStageLogsFromLastCheckpointRequest struct { @@ -1874,7 +2068,7 @@ type ReportStageLogsFromLastCheckpointRequest struct { func (x *ReportStageLogsFromLastCheckpointRequest) Reset() { *x = ReportStageLogsFromLastCheckpointRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[32] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +2081,7 @@ func (x *ReportStageLogsFromLastCheckpointRequest) String() string { func (*ReportStageLogsFromLastCheckpointRequest) ProtoMessage() {} func (x *ReportStageLogsFromLastCheckpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[32] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +2094,7 @@ func (x *ReportStageLogsFromLastCheckpointRequest) ProtoReflect() protoreflect.M // Deprecated: Use ReportStageLogsFromLastCheckpointRequest.ProtoReflect.Descriptor instead. func (*ReportStageLogsFromLastCheckpointRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{32} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{36} } func (x *ReportStageLogsFromLastCheckpointRequest) GetDeploymentId() string { @@ -1947,7 +2141,7 @@ type ReportStageLogsFromLastCheckpointResponse struct { func (x *ReportStageLogsFromLastCheckpointResponse) Reset() { *x = ReportStageLogsFromLastCheckpointResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[33] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1960,7 +2154,7 @@ func (x *ReportStageLogsFromLastCheckpointResponse) String() string { func (*ReportStageLogsFromLastCheckpointResponse) ProtoMessage() {} func (x *ReportStageLogsFromLastCheckpointResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[33] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1973,7 +2167,7 @@ func (x *ReportStageLogsFromLastCheckpointResponse) ProtoReflect() protoreflect. // Deprecated: Use ReportStageLogsFromLastCheckpointResponse.ProtoReflect.Descriptor instead. func (*ReportStageLogsFromLastCheckpointResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{33} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{37} } type ReportStageStatusChangedRequest struct { @@ -1995,7 +2189,7 @@ type ReportStageStatusChangedRequest struct { func (x *ReportStageStatusChangedRequest) Reset() { *x = ReportStageStatusChangedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[34] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2008,7 +2202,7 @@ func (x *ReportStageStatusChangedRequest) String() string { func (*ReportStageStatusChangedRequest) ProtoMessage() {} func (x *ReportStageStatusChangedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[34] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2021,7 +2215,7 @@ func (x *ReportStageStatusChangedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStageStatusChangedRequest.ProtoReflect.Descriptor instead. func (*ReportStageStatusChangedRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{34} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{38} } func (x *ReportStageStatusChangedRequest) GetDeploymentId() string { @@ -2089,7 +2283,7 @@ type ReportStageStatusChangedResponse struct { func (x *ReportStageStatusChangedResponse) Reset() { *x = ReportStageStatusChangedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[35] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2102,7 +2296,7 @@ func (x *ReportStageStatusChangedResponse) String() string { func (*ReportStageStatusChangedResponse) ProtoMessage() {} func (x *ReportStageStatusChangedResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[35] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2115,7 +2309,7 @@ func (x *ReportStageStatusChangedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStageStatusChangedResponse.ProtoReflect.Descriptor instead. func (*ReportStageStatusChangedResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{35} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{39} } type ListUnhandledCommandsRequest struct { @@ -2127,7 +2321,7 @@ type ListUnhandledCommandsRequest struct { func (x *ListUnhandledCommandsRequest) Reset() { *x = ListUnhandledCommandsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[36] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2140,7 +2334,7 @@ func (x *ListUnhandledCommandsRequest) String() string { func (*ListUnhandledCommandsRequest) ProtoMessage() {} func (x *ListUnhandledCommandsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[36] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2153,7 +2347,7 @@ func (x *ListUnhandledCommandsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUnhandledCommandsRequest.ProtoReflect.Descriptor instead. func (*ListUnhandledCommandsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{36} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{40} } type ListUnhandledCommandsResponse struct { @@ -2167,7 +2361,7 @@ type ListUnhandledCommandsResponse struct { func (x *ListUnhandledCommandsResponse) Reset() { *x = ListUnhandledCommandsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[37] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2180,7 +2374,7 @@ func (x *ListUnhandledCommandsResponse) String() string { func (*ListUnhandledCommandsResponse) ProtoMessage() {} func (x *ListUnhandledCommandsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[37] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2193,7 +2387,7 @@ func (x *ListUnhandledCommandsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUnhandledCommandsResponse.ProtoReflect.Descriptor instead. func (*ListUnhandledCommandsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{37} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{41} } func (x *ListUnhandledCommandsResponse) GetCommands() []*model.Command { @@ -2219,7 +2413,7 @@ type ReportCommandHandledRequest struct { func (x *ReportCommandHandledRequest) Reset() { *x = ReportCommandHandledRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[38] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2232,7 +2426,7 @@ func (x *ReportCommandHandledRequest) String() string { func (*ReportCommandHandledRequest) ProtoMessage() {} func (x *ReportCommandHandledRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[38] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2245,7 +2439,7 @@ func (x *ReportCommandHandledRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportCommandHandledRequest.ProtoReflect.Descriptor instead. func (*ReportCommandHandledRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{38} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{42} } func (x *ReportCommandHandledRequest) GetCommandId() string { @@ -2292,7 +2486,7 @@ type ReportCommandHandledResponse struct { func (x *ReportCommandHandledResponse) Reset() { *x = ReportCommandHandledResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[39] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2305,7 +2499,7 @@ func (x *ReportCommandHandledResponse) String() string { func (*ReportCommandHandledResponse) ProtoMessage() {} func (x *ReportCommandHandledResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[39] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2318,7 +2512,7 @@ func (x *ReportCommandHandledResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportCommandHandledResponse.ProtoReflect.Descriptor instead. func (*ReportCommandHandledResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{39} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{43} } type ReportApplicationLiveStateRequest struct { @@ -2332,7 +2526,7 @@ type ReportApplicationLiveStateRequest struct { func (x *ReportApplicationLiveStateRequest) Reset() { *x = ReportApplicationLiveStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[40] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2345,7 +2539,7 @@ func (x *ReportApplicationLiveStateRequest) String() string { func (*ReportApplicationLiveStateRequest) ProtoMessage() {} func (x *ReportApplicationLiveStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[40] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2358,7 +2552,7 @@ func (x *ReportApplicationLiveStateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ReportApplicationLiveStateRequest.ProtoReflect.Descriptor instead. func (*ReportApplicationLiveStateRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{40} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{44} } func (x *ReportApplicationLiveStateRequest) GetSnapshot() *model.ApplicationLiveStateSnapshot { @@ -2377,7 +2571,7 @@ type ReportApplicationLiveStateResponse struct { func (x *ReportApplicationLiveStateResponse) Reset() { *x = ReportApplicationLiveStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[41] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2390,7 +2584,7 @@ func (x *ReportApplicationLiveStateResponse) String() string { func (*ReportApplicationLiveStateResponse) ProtoMessage() {} func (x *ReportApplicationLiveStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[41] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2403,7 +2597,7 @@ func (x *ReportApplicationLiveStateResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ReportApplicationLiveStateResponse.ProtoReflect.Descriptor instead. func (*ReportApplicationLiveStateResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{41} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{45} } type ReportApplicationLiveStateEventsRequest struct { @@ -2417,7 +2611,7 @@ type ReportApplicationLiveStateEventsRequest struct { func (x *ReportApplicationLiveStateEventsRequest) Reset() { *x = ReportApplicationLiveStateEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[42] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2430,7 +2624,7 @@ func (x *ReportApplicationLiveStateEventsRequest) String() string { func (*ReportApplicationLiveStateEventsRequest) ProtoMessage() {} func (x *ReportApplicationLiveStateEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[42] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2443,7 +2637,7 @@ func (x *ReportApplicationLiveStateEventsRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ReportApplicationLiveStateEventsRequest.ProtoReflect.Descriptor instead. func (*ReportApplicationLiveStateEventsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{42} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{46} } func (x *ReportApplicationLiveStateEventsRequest) GetKubernetesEvents() []*model.KubernetesResourceStateEvent { @@ -2464,7 +2658,7 @@ type ReportApplicationLiveStateEventsResponse struct { func (x *ReportApplicationLiveStateEventsResponse) Reset() { *x = ReportApplicationLiveStateEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[43] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2671,7 @@ func (x *ReportApplicationLiveStateEventsResponse) String() string { func (*ReportApplicationLiveStateEventsResponse) ProtoMessage() {} func (x *ReportApplicationLiveStateEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[43] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2684,7 @@ func (x *ReportApplicationLiveStateEventsResponse) ProtoReflect() protoreflect.M // Deprecated: Use ReportApplicationLiveStateEventsResponse.ProtoReflect.Descriptor instead. func (*ReportApplicationLiveStateEventsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{43} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{47} } func (x *ReportApplicationLiveStateEventsResponse) GetFailedIds() []string { @@ -2512,7 +2706,7 @@ type GetLatestEventRequest struct { func (x *GetLatestEventRequest) Reset() { *x = GetLatestEventRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[44] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2719,7 @@ func (x *GetLatestEventRequest) String() string { func (*GetLatestEventRequest) ProtoMessage() {} func (x *GetLatestEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[44] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2538,7 +2732,7 @@ func (x *GetLatestEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestEventRequest.ProtoReflect.Descriptor instead. func (*GetLatestEventRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{44} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{48} } func (x *GetLatestEventRequest) GetName() string { @@ -2566,7 +2760,7 @@ type GetLatestEventResponse struct { func (x *GetLatestEventResponse) Reset() { *x = GetLatestEventResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[45] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2579,7 +2773,7 @@ func (x *GetLatestEventResponse) String() string { func (*GetLatestEventResponse) ProtoMessage() {} func (x *GetLatestEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[45] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2592,7 +2786,7 @@ func (x *GetLatestEventResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestEventResponse.ProtoReflect.Descriptor instead. func (*GetLatestEventResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{45} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{49} } func (x *GetLatestEventResponse) GetEvent() *model.Event { @@ -2616,7 +2810,7 @@ type ListEventsRequest struct { func (x *ListEventsRequest) Reset() { *x = ListEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[46] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2629,7 +2823,7 @@ func (x *ListEventsRequest) String() string { func (*ListEventsRequest) ProtoMessage() {} func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[46] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2642,7 +2836,7 @@ func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsRequest.ProtoReflect.Descriptor instead. func (*ListEventsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{46} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{50} } func (x *ListEventsRequest) GetFrom() int64 { @@ -2684,7 +2878,7 @@ type ListEventsResponse struct { func (x *ListEventsResponse) Reset() { *x = ListEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[47] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2697,7 +2891,7 @@ func (x *ListEventsResponse) String() string { func (*ListEventsResponse) ProtoMessage() {} func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[47] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2710,7 +2904,7 @@ func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsResponse.ProtoReflect.Descriptor instead. func (*ListEventsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{47} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{51} } func (x *ListEventsResponse) GetEvents() []*model.Event { @@ -2731,7 +2925,7 @@ type ReportEventsHandledRequest struct { func (x *ReportEventsHandledRequest) Reset() { *x = ReportEventsHandledRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[48] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2744,7 +2938,7 @@ func (x *ReportEventsHandledRequest) String() string { func (*ReportEventsHandledRequest) ProtoMessage() {} func (x *ReportEventsHandledRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[48] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2757,7 +2951,7 @@ func (x *ReportEventsHandledRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportEventsHandledRequest.ProtoReflect.Descriptor instead. func (*ReportEventsHandledRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{48} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{52} } func (x *ReportEventsHandledRequest) GetEventIds() []string { @@ -2776,7 +2970,7 @@ type ReportEventsHandledResponse struct { func (x *ReportEventsHandledResponse) Reset() { *x = ReportEventsHandledResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[49] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2789,7 +2983,7 @@ func (x *ReportEventsHandledResponse) String() string { func (*ReportEventsHandledResponse) ProtoMessage() {} func (x *ReportEventsHandledResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[49] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2802,7 +2996,7 @@ func (x *ReportEventsHandledResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportEventsHandledResponse.ProtoReflect.Descriptor instead. func (*ReportEventsHandledResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{49} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{53} } type ReportEventStatusesRequest struct { @@ -2816,7 +3010,7 @@ type ReportEventStatusesRequest struct { func (x *ReportEventStatusesRequest) Reset() { *x = ReportEventStatusesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[50] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2829,7 +3023,7 @@ func (x *ReportEventStatusesRequest) String() string { func (*ReportEventStatusesRequest) ProtoMessage() {} func (x *ReportEventStatusesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[50] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2842,7 +3036,7 @@ func (x *ReportEventStatusesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportEventStatusesRequest.ProtoReflect.Descriptor instead. func (*ReportEventStatusesRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{50} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{54} } func (x *ReportEventStatusesRequest) GetEvents() []*ReportEventStatusesRequest_Event { @@ -2861,7 +3055,7 @@ type ReportEventStatusesResponse struct { func (x *ReportEventStatusesResponse) Reset() { *x = ReportEventStatusesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[51] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2874,7 +3068,7 @@ func (x *ReportEventStatusesResponse) String() string { func (*ReportEventStatusesResponse) ProtoMessage() {} func (x *ReportEventStatusesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[51] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2887,7 +3081,7 @@ func (x *ReportEventStatusesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportEventStatusesResponse.ProtoReflect.Descriptor instead. func (*ReportEventStatusesResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{51} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{55} } type GetLatestAnalysisResultRequest struct { @@ -2901,7 +3095,7 @@ type GetLatestAnalysisResultRequest struct { func (x *GetLatestAnalysisResultRequest) Reset() { *x = GetLatestAnalysisResultRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[52] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2914,7 +3108,7 @@ func (x *GetLatestAnalysisResultRequest) String() string { func (*GetLatestAnalysisResultRequest) ProtoMessage() {} func (x *GetLatestAnalysisResultRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[52] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2927,7 +3121,7 @@ func (x *GetLatestAnalysisResultRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestAnalysisResultRequest.ProtoReflect.Descriptor instead. func (*GetLatestAnalysisResultRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{52} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{56} } func (x *GetLatestAnalysisResultRequest) GetApplicationId() string { @@ -2948,7 +3142,7 @@ type GetLatestAnalysisResultResponse struct { func (x *GetLatestAnalysisResultResponse) Reset() { *x = GetLatestAnalysisResultResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[53] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2961,7 +3155,7 @@ func (x *GetLatestAnalysisResultResponse) String() string { func (*GetLatestAnalysisResultResponse) ProtoMessage() {} func (x *GetLatestAnalysisResultResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[53] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2974,7 +3168,7 @@ func (x *GetLatestAnalysisResultResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestAnalysisResultResponse.ProtoReflect.Descriptor instead. func (*GetLatestAnalysisResultResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{53} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{57} } func (x *GetLatestAnalysisResultResponse) GetAnalysisResult() *model.AnalysisResult { @@ -2996,7 +3190,7 @@ type PutLatestAnalysisResultRequest struct { func (x *PutLatestAnalysisResultRequest) Reset() { *x = PutLatestAnalysisResultRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[54] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3009,7 +3203,7 @@ func (x *PutLatestAnalysisResultRequest) String() string { func (*PutLatestAnalysisResultRequest) ProtoMessage() {} func (x *PutLatestAnalysisResultRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[54] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3022,7 +3216,7 @@ func (x *PutLatestAnalysisResultRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutLatestAnalysisResultRequest.ProtoReflect.Descriptor instead. func (*PutLatestAnalysisResultRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{54} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{58} } func (x *PutLatestAnalysisResultRequest) GetApplicationId() string { @@ -3048,7 +3242,7 @@ type PutLatestAnalysisResultResponse struct { func (x *PutLatestAnalysisResultResponse) Reset() { *x = PutLatestAnalysisResultResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[55] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3061,7 +3255,7 @@ func (x *PutLatestAnalysisResultResponse) String() string { func (*PutLatestAnalysisResultResponse) ProtoMessage() {} func (x *PutLatestAnalysisResultResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[55] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3074,7 +3268,7 @@ func (x *PutLatestAnalysisResultResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutLatestAnalysisResultResponse.ProtoReflect.Descriptor instead. func (*PutLatestAnalysisResultResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{55} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{59} } type GetDesiredVersionRequest struct { @@ -3086,7 +3280,7 @@ type GetDesiredVersionRequest struct { func (x *GetDesiredVersionRequest) Reset() { *x = GetDesiredVersionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[56] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3099,7 +3293,7 @@ func (x *GetDesiredVersionRequest) String() string { func (*GetDesiredVersionRequest) ProtoMessage() {} func (x *GetDesiredVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[56] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3112,7 +3306,7 @@ func (x *GetDesiredVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDesiredVersionRequest.ProtoReflect.Descriptor instead. func (*GetDesiredVersionRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{56} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{60} } type GetDesiredVersionResponse struct { @@ -3126,7 +3320,7 @@ type GetDesiredVersionResponse struct { func (x *GetDesiredVersionResponse) Reset() { *x = GetDesiredVersionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[57] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3139,7 +3333,7 @@ func (x *GetDesiredVersionResponse) String() string { func (*GetDesiredVersionResponse) ProtoMessage() {} func (x *GetDesiredVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[57] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3152,7 +3346,7 @@ func (x *GetDesiredVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDesiredVersionResponse.ProtoReflect.Descriptor instead. func (*GetDesiredVersionResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{57} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{61} } func (x *GetDesiredVersionResponse) GetVersion() string { @@ -3174,7 +3368,7 @@ type UpdateApplicationConfigurationsRequest struct { func (x *UpdateApplicationConfigurationsRequest) Reset() { *x = UpdateApplicationConfigurationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[58] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3187,7 +3381,7 @@ func (x *UpdateApplicationConfigurationsRequest) String() string { func (*UpdateApplicationConfigurationsRequest) ProtoMessage() {} func (x *UpdateApplicationConfigurationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[58] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3200,7 +3394,7 @@ func (x *UpdateApplicationConfigurationsRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use UpdateApplicationConfigurationsRequest.ProtoReflect.Descriptor instead. func (*UpdateApplicationConfigurationsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{58} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{62} } func (x *UpdateApplicationConfigurationsRequest) GetApplications() []*model.ApplicationInfo { @@ -3219,7 +3413,7 @@ type UpdateApplicationConfigurationsResponse struct { func (x *UpdateApplicationConfigurationsResponse) Reset() { *x = UpdateApplicationConfigurationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[59] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3232,7 +3426,7 @@ func (x *UpdateApplicationConfigurationsResponse) String() string { func (*UpdateApplicationConfigurationsResponse) ProtoMessage() {} func (x *UpdateApplicationConfigurationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[59] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3245,7 +3439,7 @@ func (x *UpdateApplicationConfigurationsResponse) ProtoReflect() protoreflect.Me // Deprecated: Use UpdateApplicationConfigurationsResponse.ProtoReflect.Descriptor instead. func (*UpdateApplicationConfigurationsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{59} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{63} } type ReportUnregisteredApplicationConfigurationsRequest struct { @@ -3261,7 +3455,7 @@ type ReportUnregisteredApplicationConfigurationsRequest struct { func (x *ReportUnregisteredApplicationConfigurationsRequest) Reset() { *x = ReportUnregisteredApplicationConfigurationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[60] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3274,7 +3468,7 @@ func (x *ReportUnregisteredApplicationConfigurationsRequest) String() string { func (*ReportUnregisteredApplicationConfigurationsRequest) ProtoMessage() {} func (x *ReportUnregisteredApplicationConfigurationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[60] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3287,7 +3481,7 @@ func (x *ReportUnregisteredApplicationConfigurationsRequest) ProtoReflect() prot // Deprecated: Use ReportUnregisteredApplicationConfigurationsRequest.ProtoReflect.Descriptor instead. func (*ReportUnregisteredApplicationConfigurationsRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{60} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{64} } func (x *ReportUnregisteredApplicationConfigurationsRequest) GetApplications() []*model.ApplicationInfo { @@ -3306,7 +3500,7 @@ type ReportUnregisteredApplicationConfigurationsResponse struct { func (x *ReportUnregisteredApplicationConfigurationsResponse) Reset() { *x = ReportUnregisteredApplicationConfigurationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[61] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3319,7 +3513,7 @@ func (x *ReportUnregisteredApplicationConfigurationsResponse) String() string { func (*ReportUnregisteredApplicationConfigurationsResponse) ProtoMessage() {} func (x *ReportUnregisteredApplicationConfigurationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[61] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3332,7 +3526,7 @@ func (x *ReportUnregisteredApplicationConfigurationsResponse) ProtoReflect() pro // Deprecated: Use ReportUnregisteredApplicationConfigurationsResponse.ProtoReflect.Descriptor instead. func (*ReportUnregisteredApplicationConfigurationsResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{61} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{65} } type CreateDeploymentChainRequest struct { @@ -3347,7 +3541,7 @@ type CreateDeploymentChainRequest struct { func (x *CreateDeploymentChainRequest) Reset() { *x = CreateDeploymentChainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[62] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3360,7 +3554,7 @@ func (x *CreateDeploymentChainRequest) String() string { func (*CreateDeploymentChainRequest) ProtoMessage() {} func (x *CreateDeploymentChainRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[62] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3373,7 +3567,7 @@ func (x *CreateDeploymentChainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDeploymentChainRequest.ProtoReflect.Descriptor instead. func (*CreateDeploymentChainRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{62} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{66} } func (x *CreateDeploymentChainRequest) GetFirstDeployment() *model.Deployment { @@ -3399,7 +3593,7 @@ type CreateDeploymentChainResponse struct { func (x *CreateDeploymentChainResponse) Reset() { *x = CreateDeploymentChainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[63] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3412,7 +3606,7 @@ func (x *CreateDeploymentChainResponse) String() string { func (*CreateDeploymentChainResponse) ProtoMessage() {} func (x *CreateDeploymentChainResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[63] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3425,7 +3619,7 @@ func (x *CreateDeploymentChainResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDeploymentChainResponse.ProtoReflect.Descriptor instead. func (*CreateDeploymentChainResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{63} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{67} } type InChainDeploymentPlannableRequest struct { @@ -3441,7 +3635,7 @@ type InChainDeploymentPlannableRequest struct { func (x *InChainDeploymentPlannableRequest) Reset() { *x = InChainDeploymentPlannableRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[64] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3454,7 +3648,7 @@ func (x *InChainDeploymentPlannableRequest) String() string { func (*InChainDeploymentPlannableRequest) ProtoMessage() {} func (x *InChainDeploymentPlannableRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[64] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3467,7 +3661,7 @@ func (x *InChainDeploymentPlannableRequest) ProtoReflect() protoreflect.Message // Deprecated: Use InChainDeploymentPlannableRequest.ProtoReflect.Descriptor instead. func (*InChainDeploymentPlannableRequest) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{64} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{68} } func (x *InChainDeploymentPlannableRequest) GetDeploymentId() string { @@ -3506,7 +3700,7 @@ type InChainDeploymentPlannableResponse struct { func (x *InChainDeploymentPlannableResponse) Reset() { *x = InChainDeploymentPlannableResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[65] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3519,7 +3713,7 @@ func (x *InChainDeploymentPlannableResponse) String() string { func (*InChainDeploymentPlannableResponse) ProtoMessage() {} func (x *InChainDeploymentPlannableResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[65] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3532,7 +3726,7 @@ func (x *InChainDeploymentPlannableResponse) ProtoReflect() protoreflect.Message // Deprecated: Use InChainDeploymentPlannableResponse.ProtoReflect.Descriptor instead. func (*InChainDeploymentPlannableResponse) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{65} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{69} } func (x *InChainDeploymentPlannableResponse) GetPlannable() bool { @@ -3569,7 +3763,7 @@ type ReportEventStatusesRequest_Event struct { func (x *ReportEventStatusesRequest_Event) Reset() { *x = ReportEventStatusesRequest_Event{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[71] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3582,7 +3776,7 @@ func (x *ReportEventStatusesRequest_Event) String() string { func (*ReportEventStatusesRequest_Event) ProtoMessage() {} func (x *ReportEventStatusesRequest_Event) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[71] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3595,7 +3789,7 @@ func (x *ReportEventStatusesRequest_Event) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportEventStatusesRequest_Event.ProtoReflect.Descriptor instead. func (*ReportEventStatusesRequest_Event) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{50, 0} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{54, 0} } func (x *ReportEventStatusesRequest_Event) GetId() string { @@ -3637,7 +3831,7 @@ type CreateDeploymentChainRequest_ApplicationMatcher struct { func (x *CreateDeploymentChainRequest_ApplicationMatcher) Reset() { *x = CreateDeploymentChainRequest_ApplicationMatcher{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[72] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3650,7 +3844,7 @@ func (x *CreateDeploymentChainRequest_ApplicationMatcher) String() string { func (*CreateDeploymentChainRequest_ApplicationMatcher) ProtoMessage() {} func (x *CreateDeploymentChainRequest_ApplicationMatcher) ProtoReflect() protoreflect.Message { - mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[72] + mi := &file_pkg_app_server_service_pipedservice_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3663,7 +3857,7 @@ func (x *CreateDeploymentChainRequest_ApplicationMatcher) ProtoReflect() protore // Deprecated: Use CreateDeploymentChainRequest_ApplicationMatcher.ProtoReflect.Descriptor instead. func (*CreateDeploymentChainRequest_ApplicationMatcher) Descriptor() ([]byte, []int) { - return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{62, 0} + return file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP(), []int{66, 0} } func (x *CreateDeploymentChainRequest_ApplicationMatcher) GetName() string { @@ -3944,611 +4138,671 @@ var file_pkg_app_server_service_pipedservice_service_proto_rawDesc = []byte{ 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, 0x20, 0x0a, 0x1e, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x18, 0x53, - 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x23, 0x53, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x68, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x26, 0x0a, 0x24, 0x53, 0x61, 0x76, 0x65, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xa4, 0x02, 0x0a, 0x23, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 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, 0x1b, 0x0a, 0x19, 0x53, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, - 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x19, 0x0a, - 0x17, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x28, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, - 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xd5, 0x02, 0x0a, 0x1f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x0c, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x0a, 0x1c, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x1d, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, - 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0xdc, 0x02, 0x0a, 0x1b, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, - 0x64, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x60, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x0a, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x70, 0x6f, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x68, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x26, 0x0a, 0x24, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, + 0x02, 0x0a, 0x18, 0x53, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x1b, 0x0a, 0x19, 0x53, 0x61, 0x76, + 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, + 0x28, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, + 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x27, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, + 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, 0x02, 0x0a, 0x1f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x73, 0x74, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x22, 0x0a, 0x20, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1e, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x4b, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0xdc, 0x02, + 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x60, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x21, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, - 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x24, 0x0a, 0x22, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, - 0x0a, 0x27, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x11, 0x6b, 0x75, 0x62, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x75, 0x62, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x49, 0x0a, 0x28, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xa0, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, - 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x6f, - 0x12, 0x44, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4a, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0b, - 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4f, - 0x55, 0x54, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x22, 0x3a, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x24, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x43, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, - 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x1a, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x8e, 0x01, - 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1d, - 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x6b, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9a, 0x01, 0x0a, - 0x1e, 0x50, 0x75, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x26, 0x0a, 0x0a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, + 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x1e, 0x0a, 0x1c, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x21, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x49, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x24, 0x0a, 0x22, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x27, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, + 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x49, 0x0a, 0x28, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xa0, 0x02, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x74, 0x6f, 0x12, 0x44, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x4a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x41, + 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x48, 0x41, 0x4e, 0x44, + 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, + 0x0c, 0x0a, 0x08, 0x4f, 0x55, 0x54, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x22, 0x3a, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x43, 0x0a, 0x1a, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0x1d, + 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, + 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x48, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x21, 0x0a, 0x1f, 0x50, 0x75, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x12, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x50, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x9a, 0x01, 0x0a, 0x1e, 0x50, 0x75, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x21, 0x0a, + 0x1f, 0x50, 0x75, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x64, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x70, 0x0a, 0x32, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x35, 0x0a, 0x33, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x72, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x03, 0x0a, 0x1c, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x10, 0x66, 0x69, - 0x72, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x66, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x1a, 0xe7, 0x01, 0x0a, 0x12, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x6e, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x21, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x13, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x22, 0x7f, 0x0a, 0x22, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, - 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x6c, - 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x28, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x53, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x02, 0x32, 0xbb, - 0x26, 0x0a, 0x0c, 0x50, 0x69, 0x70, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x6b, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x2c, 0x2e, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, + 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x27, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x32, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x35, 0x0a, 0x33, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x03, + 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, + 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x66, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x1a, 0xe7, + 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x6e, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x0f, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, - 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, + 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x21, 0x49, 0x6e, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, + 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, + 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7f, 0x0a, 0x22, 0x49, 0x6e, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x28, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, + 0x10, 0x02, 0x32, 0x86, 0x29, 0x0a, 0x0c, 0x50, 0x69, 0x70, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, - 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x7a, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x61, 0x12, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x70, 0x65, 0x64, 0x4d, 0x65, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xad, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x2e, 0x67, 0x72, 0x70, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, 0x01, 0x0a, 0x1a, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x69, 0x6e, - 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xad, 0x01, 0x0a, 0x20, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xbc, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xbc, 0x01, 0x0a, 0x25, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x47, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x48, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x47, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, - 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x48, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0xb3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, - 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, - 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x9e, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x3d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7d, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, + 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x2f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x9e, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7d, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x92, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x39, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, + 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa4, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x98, 0x01, 0x0a, - 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8f, 0x01, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, - 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, + 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa4, 0x01, 0x0a, 0x1d, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3f, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, - 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x11, 0x53, 0x61, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x0f, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, - 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb0, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, - 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x43, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x98, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, - 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, - 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x95, 0x01, 0x0a, 0x18, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x8c, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x37, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, - 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x2e, 0x67, 0x72, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, - 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xad, 0x01, 0x0a, - 0x20, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x16, + 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, + 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, + 0x12, 0xa1, 0x01, 0x0a, 0x1c, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0xa1, 0x01, 0x0a, 0x1c, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, + 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x11, 0x53, 0x61, 0x76, + 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x61, 0x76, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x0f, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x31, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, + 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x13, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xb0, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, + 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x43, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, + 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, + 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, + 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x95, 0x01, 0x0a, 0x18, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x50, 0x75, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x8c, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x37, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x50, 0x75, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, - 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, 0x01, + 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xad, 0x01, 0x0a, 0x20, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x2e, + 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, + 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x50, 0x75, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x50, 0x75, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xce, - 0x01, 0x0a, 0x2b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4e, 0x2e, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xce, 0x01, + 0x0a, 0x2b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x8c, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, - 0x01, 0x0a, 0x1a, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, - 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3f, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, - 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, - 0x70, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2f, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4e, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, + 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8c, + 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9b, 0x01, + 0x0a, 0x1a, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3f, 0x5a, 0x3d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, + 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x70, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4564,7 +4818,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_rawDescGZIP() []byte } var file_pkg_app_server_service_pipedservice_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_pkg_app_server_service_pipedservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_pkg_app_server_service_pipedservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 80) var file_pkg_app_server_service_pipedservice_service_proto_goTypes = []interface{}{ (ListOrder)(0), // 0: grpc.service.pipedservice.ListOrder (ListEventsRequest_Status)(0), // 1: grpc.service.pipedservice.ListEventsRequest.Status @@ -4596,189 +4850,201 @@ var file_pkg_app_server_service_pipedservice_service_proto_goTypes = []interface (*ReportDeploymentCompletedResponse)(nil), // 27: grpc.service.pipedservice.ReportDeploymentCompletedResponse (*SaveDeploymentMetadataRequest)(nil), // 28: grpc.service.pipedservice.SaveDeploymentMetadataRequest (*SaveDeploymentMetadataResponse)(nil), // 29: grpc.service.pipedservice.SaveDeploymentMetadataResponse - (*SaveStageMetadataRequest)(nil), // 30: grpc.service.pipedservice.SaveStageMetadataRequest - (*SaveStageMetadataResponse)(nil), // 31: grpc.service.pipedservice.SaveStageMetadataResponse - (*ReportStageLogsRequest)(nil), // 32: grpc.service.pipedservice.ReportStageLogsRequest - (*ReportStageLogsResponse)(nil), // 33: grpc.service.pipedservice.ReportStageLogsResponse - (*ReportStageLogsFromLastCheckpointRequest)(nil), // 34: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest - (*ReportStageLogsFromLastCheckpointResponse)(nil), // 35: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointResponse - (*ReportStageStatusChangedRequest)(nil), // 36: grpc.service.pipedservice.ReportStageStatusChangedRequest - (*ReportStageStatusChangedResponse)(nil), // 37: grpc.service.pipedservice.ReportStageStatusChangedResponse - (*ListUnhandledCommandsRequest)(nil), // 38: grpc.service.pipedservice.ListUnhandledCommandsRequest - (*ListUnhandledCommandsResponse)(nil), // 39: grpc.service.pipedservice.ListUnhandledCommandsResponse - (*ReportCommandHandledRequest)(nil), // 40: grpc.service.pipedservice.ReportCommandHandledRequest - (*ReportCommandHandledResponse)(nil), // 41: grpc.service.pipedservice.ReportCommandHandledResponse - (*ReportApplicationLiveStateRequest)(nil), // 42: grpc.service.pipedservice.ReportApplicationLiveStateRequest - (*ReportApplicationLiveStateResponse)(nil), // 43: grpc.service.pipedservice.ReportApplicationLiveStateResponse - (*ReportApplicationLiveStateEventsRequest)(nil), // 44: grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest - (*ReportApplicationLiveStateEventsResponse)(nil), // 45: grpc.service.pipedservice.ReportApplicationLiveStateEventsResponse - (*GetLatestEventRequest)(nil), // 46: grpc.service.pipedservice.GetLatestEventRequest - (*GetLatestEventResponse)(nil), // 47: grpc.service.pipedservice.GetLatestEventResponse - (*ListEventsRequest)(nil), // 48: grpc.service.pipedservice.ListEventsRequest - (*ListEventsResponse)(nil), // 49: grpc.service.pipedservice.ListEventsResponse - (*ReportEventsHandledRequest)(nil), // 50: grpc.service.pipedservice.ReportEventsHandledRequest - (*ReportEventsHandledResponse)(nil), // 51: grpc.service.pipedservice.ReportEventsHandledResponse - (*ReportEventStatusesRequest)(nil), // 52: grpc.service.pipedservice.ReportEventStatusesRequest - (*ReportEventStatusesResponse)(nil), // 53: grpc.service.pipedservice.ReportEventStatusesResponse - (*GetLatestAnalysisResultRequest)(nil), // 54: grpc.service.pipedservice.GetLatestAnalysisResultRequest - (*GetLatestAnalysisResultResponse)(nil), // 55: grpc.service.pipedservice.GetLatestAnalysisResultResponse - (*PutLatestAnalysisResultRequest)(nil), // 56: grpc.service.pipedservice.PutLatestAnalysisResultRequest - (*PutLatestAnalysisResultResponse)(nil), // 57: grpc.service.pipedservice.PutLatestAnalysisResultResponse - (*GetDesiredVersionRequest)(nil), // 58: grpc.service.pipedservice.GetDesiredVersionRequest - (*GetDesiredVersionResponse)(nil), // 59: grpc.service.pipedservice.GetDesiredVersionResponse - (*UpdateApplicationConfigurationsRequest)(nil), // 60: grpc.service.pipedservice.UpdateApplicationConfigurationsRequest - (*UpdateApplicationConfigurationsResponse)(nil), // 61: grpc.service.pipedservice.UpdateApplicationConfigurationsResponse - (*ReportUnregisteredApplicationConfigurationsRequest)(nil), // 62: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest - (*ReportUnregisteredApplicationConfigurationsResponse)(nil), // 63: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsResponse - (*CreateDeploymentChainRequest)(nil), // 64: grpc.service.pipedservice.CreateDeploymentChainRequest - (*CreateDeploymentChainResponse)(nil), // 65: grpc.service.pipedservice.CreateDeploymentChainResponse - (*InChainDeploymentPlannableRequest)(nil), // 66: grpc.service.pipedservice.InChainDeploymentPlannableRequest - (*InChainDeploymentPlannableResponse)(nil), // 67: grpc.service.pipedservice.InChainDeploymentPlannableResponse - nil, // 68: grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry - nil, // 69: grpc.service.pipedservice.SaveDeploymentMetadataRequest.MetadataEntry - nil, // 70: grpc.service.pipedservice.SaveStageMetadataRequest.MetadataEntry - nil, // 71: grpc.service.pipedservice.ReportCommandHandledRequest.MetadataEntry - nil, // 72: grpc.service.pipedservice.GetLatestEventRequest.LabelsEntry - (*ReportEventStatusesRequest_Event)(nil), // 73: grpc.service.pipedservice.ReportEventStatusesRequest.Event - (*CreateDeploymentChainRequest_ApplicationMatcher)(nil), // 74: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher - nil, // 75: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.LabelsEntry - (*model.Piped_CloudProvider)(nil), // 76: model.Piped.CloudProvider - (*model.Piped_PlatformProvider)(nil), // 77: model.Piped.PlatformProvider - (*model.ApplicationGitRepository)(nil), // 78: model.ApplicationGitRepository - (*model.Piped_SecretEncryption)(nil), // 79: model.Piped.SecretEncryption - (*model.Application)(nil), // 80: model.Application - (*model.ApplicationSyncState)(nil), // 81: model.ApplicationSyncState - (model.DeploymentStatus)(0), // 82: model.DeploymentStatus - (*model.ApplicationDeploymentReference)(nil), // 83: model.ApplicationDeploymentReference - (*model.Deployment)(nil), // 84: model.Deployment - (*model.ArtifactVersion)(nil), // 85: model.ArtifactVersion - (*model.PipelineStage)(nil), // 86: model.PipelineStage - (*model.LogBlock)(nil), // 87: model.LogBlock - (model.StageStatus)(0), // 88: model.StageStatus - (*model.Command)(nil), // 89: model.Command - (model.CommandStatus)(0), // 90: model.CommandStatus - (*model.ApplicationLiveStateSnapshot)(nil), // 91: model.ApplicationLiveStateSnapshot - (*model.KubernetesResourceStateEvent)(nil), // 92: model.KubernetesResourceStateEvent - (*model.Event)(nil), // 93: model.Event - (*model.AnalysisResult)(nil), // 94: model.AnalysisResult - (*model.ApplicationInfo)(nil), // 95: model.ApplicationInfo - (model.EventStatus)(0), // 96: model.EventStatus + (*SaveDeploymentSharedMetadataRequest)(nil), // 30: grpc.service.pipedservice.SaveDeploymentSharedMetadataRequest + (*SaveDeploymentSharedMetadataResponse)(nil), // 31: grpc.service.pipedservice.SaveDeploymentSharedMetadataResponse + (*SaveDeploymentPluginMetadataRequest)(nil), // 32: grpc.service.pipedservice.SaveDeploymentPluginMetadataRequest + (*SaveDeploymentPluginMetadataResponse)(nil), // 33: grpc.service.pipedservice.SaveDeploymentPluginMetadataResponse + (*SaveStageMetadataRequest)(nil), // 34: grpc.service.pipedservice.SaveStageMetadataRequest + (*SaveStageMetadataResponse)(nil), // 35: grpc.service.pipedservice.SaveStageMetadataResponse + (*ReportStageLogsRequest)(nil), // 36: grpc.service.pipedservice.ReportStageLogsRequest + (*ReportStageLogsResponse)(nil), // 37: grpc.service.pipedservice.ReportStageLogsResponse + (*ReportStageLogsFromLastCheckpointRequest)(nil), // 38: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest + (*ReportStageLogsFromLastCheckpointResponse)(nil), // 39: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointResponse + (*ReportStageStatusChangedRequest)(nil), // 40: grpc.service.pipedservice.ReportStageStatusChangedRequest + (*ReportStageStatusChangedResponse)(nil), // 41: grpc.service.pipedservice.ReportStageStatusChangedResponse + (*ListUnhandledCommandsRequest)(nil), // 42: grpc.service.pipedservice.ListUnhandledCommandsRequest + (*ListUnhandledCommandsResponse)(nil), // 43: grpc.service.pipedservice.ListUnhandledCommandsResponse + (*ReportCommandHandledRequest)(nil), // 44: grpc.service.pipedservice.ReportCommandHandledRequest + (*ReportCommandHandledResponse)(nil), // 45: grpc.service.pipedservice.ReportCommandHandledResponse + (*ReportApplicationLiveStateRequest)(nil), // 46: grpc.service.pipedservice.ReportApplicationLiveStateRequest + (*ReportApplicationLiveStateResponse)(nil), // 47: grpc.service.pipedservice.ReportApplicationLiveStateResponse + (*ReportApplicationLiveStateEventsRequest)(nil), // 48: grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest + (*ReportApplicationLiveStateEventsResponse)(nil), // 49: grpc.service.pipedservice.ReportApplicationLiveStateEventsResponse + (*GetLatestEventRequest)(nil), // 50: grpc.service.pipedservice.GetLatestEventRequest + (*GetLatestEventResponse)(nil), // 51: grpc.service.pipedservice.GetLatestEventResponse + (*ListEventsRequest)(nil), // 52: grpc.service.pipedservice.ListEventsRequest + (*ListEventsResponse)(nil), // 53: grpc.service.pipedservice.ListEventsResponse + (*ReportEventsHandledRequest)(nil), // 54: grpc.service.pipedservice.ReportEventsHandledRequest + (*ReportEventsHandledResponse)(nil), // 55: grpc.service.pipedservice.ReportEventsHandledResponse + (*ReportEventStatusesRequest)(nil), // 56: grpc.service.pipedservice.ReportEventStatusesRequest + (*ReportEventStatusesResponse)(nil), // 57: grpc.service.pipedservice.ReportEventStatusesResponse + (*GetLatestAnalysisResultRequest)(nil), // 58: grpc.service.pipedservice.GetLatestAnalysisResultRequest + (*GetLatestAnalysisResultResponse)(nil), // 59: grpc.service.pipedservice.GetLatestAnalysisResultResponse + (*PutLatestAnalysisResultRequest)(nil), // 60: grpc.service.pipedservice.PutLatestAnalysisResultRequest + (*PutLatestAnalysisResultResponse)(nil), // 61: grpc.service.pipedservice.PutLatestAnalysisResultResponse + (*GetDesiredVersionRequest)(nil), // 62: grpc.service.pipedservice.GetDesiredVersionRequest + (*GetDesiredVersionResponse)(nil), // 63: grpc.service.pipedservice.GetDesiredVersionResponse + (*UpdateApplicationConfigurationsRequest)(nil), // 64: grpc.service.pipedservice.UpdateApplicationConfigurationsRequest + (*UpdateApplicationConfigurationsResponse)(nil), // 65: grpc.service.pipedservice.UpdateApplicationConfigurationsResponse + (*ReportUnregisteredApplicationConfigurationsRequest)(nil), // 66: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest + (*ReportUnregisteredApplicationConfigurationsResponse)(nil), // 67: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsResponse + (*CreateDeploymentChainRequest)(nil), // 68: grpc.service.pipedservice.CreateDeploymentChainRequest + (*CreateDeploymentChainResponse)(nil), // 69: grpc.service.pipedservice.CreateDeploymentChainResponse + (*InChainDeploymentPlannableRequest)(nil), // 70: grpc.service.pipedservice.InChainDeploymentPlannableRequest + (*InChainDeploymentPlannableResponse)(nil), // 71: grpc.service.pipedservice.InChainDeploymentPlannableResponse + nil, // 72: grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry + nil, // 73: grpc.service.pipedservice.SaveDeploymentMetadataRequest.MetadataEntry + nil, // 74: grpc.service.pipedservice.SaveDeploymentSharedMetadataRequest.MetadataEntry + nil, // 75: grpc.service.pipedservice.SaveDeploymentPluginMetadataRequest.MetadataEntry + nil, // 76: grpc.service.pipedservice.SaveStageMetadataRequest.MetadataEntry + nil, // 77: grpc.service.pipedservice.ReportCommandHandledRequest.MetadataEntry + nil, // 78: grpc.service.pipedservice.GetLatestEventRequest.LabelsEntry + (*ReportEventStatusesRequest_Event)(nil), // 79: grpc.service.pipedservice.ReportEventStatusesRequest.Event + (*CreateDeploymentChainRequest_ApplicationMatcher)(nil), // 80: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher + nil, // 81: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.LabelsEntry + (*model.Piped_CloudProvider)(nil), // 82: model.Piped.CloudProvider + (*model.Piped_PlatformProvider)(nil), // 83: model.Piped.PlatformProvider + (*model.ApplicationGitRepository)(nil), // 84: model.ApplicationGitRepository + (*model.Piped_SecretEncryption)(nil), // 85: model.Piped.SecretEncryption + (*model.Application)(nil), // 86: model.Application + (*model.ApplicationSyncState)(nil), // 87: model.ApplicationSyncState + (model.DeploymentStatus)(0), // 88: model.DeploymentStatus + (*model.ApplicationDeploymentReference)(nil), // 89: model.ApplicationDeploymentReference + (*model.Deployment)(nil), // 90: model.Deployment + (*model.ArtifactVersion)(nil), // 91: model.ArtifactVersion + (*model.PipelineStage)(nil), // 92: model.PipelineStage + (*model.LogBlock)(nil), // 93: model.LogBlock + (model.StageStatus)(0), // 94: model.StageStatus + (*model.Command)(nil), // 95: model.Command + (model.CommandStatus)(0), // 96: model.CommandStatus + (*model.ApplicationLiveStateSnapshot)(nil), // 97: model.ApplicationLiveStateSnapshot + (*model.KubernetesResourceStateEvent)(nil), // 98: model.KubernetesResourceStateEvent + (*model.Event)(nil), // 99: model.Event + (*model.AnalysisResult)(nil), // 100: model.AnalysisResult + (*model.ApplicationInfo)(nil), // 101: model.ApplicationInfo + (model.EventStatus)(0), // 102: model.EventStatus } var file_pkg_app_server_service_pipedservice_service_proto_depIdxs = []int32{ - 76, // 0: grpc.service.pipedservice.ReportPipedMetaRequest.cloud_providers:type_name -> model.Piped.CloudProvider - 77, // 1: grpc.service.pipedservice.ReportPipedMetaRequest.platform_providers:type_name -> model.Piped.PlatformProvider - 78, // 2: grpc.service.pipedservice.ReportPipedMetaRequest.repositories:type_name -> model.ApplicationGitRepository - 79, // 3: grpc.service.pipedservice.ReportPipedMetaRequest.secret_encryption:type_name -> model.Piped.SecretEncryption - 80, // 4: grpc.service.pipedservice.ListApplicationsResponse.applications:type_name -> model.Application - 81, // 5: grpc.service.pipedservice.ReportApplicationSyncStateRequest.state:type_name -> model.ApplicationSyncState - 82, // 6: grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest.status:type_name -> model.DeploymentStatus - 83, // 7: grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest.deployment:type_name -> model.ApplicationDeploymentReference - 82, // 8: grpc.service.pipedservice.GetApplicationMostRecentDeploymentRequest.status:type_name -> model.DeploymentStatus - 83, // 9: grpc.service.pipedservice.GetApplicationMostRecentDeploymentResponse.deployment:type_name -> model.ApplicationDeploymentReference - 84, // 10: grpc.service.pipedservice.GetDeploymentResponse.deployment:type_name -> model.Deployment - 84, // 11: grpc.service.pipedservice.ListNotCompletedDeploymentsResponse.deployments:type_name -> model.Deployment - 84, // 12: grpc.service.pipedservice.CreateDeploymentRequest.deployment:type_name -> model.Deployment - 85, // 13: grpc.service.pipedservice.ReportDeploymentPlannedRequest.versions:type_name -> model.ArtifactVersion - 86, // 14: grpc.service.pipedservice.ReportDeploymentPlannedRequest.stages:type_name -> model.PipelineStage - 82, // 15: grpc.service.pipedservice.ReportDeploymentStatusChangedRequest.status:type_name -> model.DeploymentStatus - 82, // 16: grpc.service.pipedservice.ReportDeploymentCompletedRequest.status:type_name -> model.DeploymentStatus - 68, // 17: grpc.service.pipedservice.ReportDeploymentCompletedRequest.stage_statuses:type_name -> grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry - 69, // 18: grpc.service.pipedservice.SaveDeploymentMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveDeploymentMetadataRequest.MetadataEntry - 70, // 19: grpc.service.pipedservice.SaveStageMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveStageMetadataRequest.MetadataEntry - 87, // 20: grpc.service.pipedservice.ReportStageLogsRequest.blocks:type_name -> model.LogBlock - 87, // 21: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest.blocks:type_name -> model.LogBlock - 88, // 22: grpc.service.pipedservice.ReportStageStatusChangedRequest.status:type_name -> model.StageStatus - 89, // 23: grpc.service.pipedservice.ListUnhandledCommandsResponse.commands:type_name -> model.Command - 90, // 24: grpc.service.pipedservice.ReportCommandHandledRequest.status:type_name -> model.CommandStatus - 71, // 25: grpc.service.pipedservice.ReportCommandHandledRequest.metadata:type_name -> grpc.service.pipedservice.ReportCommandHandledRequest.MetadataEntry - 91, // 26: grpc.service.pipedservice.ReportApplicationLiveStateRequest.snapshot:type_name -> model.ApplicationLiveStateSnapshot - 92, // 27: grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest.kubernetes_events:type_name -> model.KubernetesResourceStateEvent - 72, // 28: grpc.service.pipedservice.GetLatestEventRequest.labels:type_name -> grpc.service.pipedservice.GetLatestEventRequest.LabelsEntry - 93, // 29: grpc.service.pipedservice.GetLatestEventResponse.event:type_name -> model.Event - 0, // 30: grpc.service.pipedservice.ListEventsRequest.order:type_name -> grpc.service.pipedservice.ListOrder - 1, // 31: grpc.service.pipedservice.ListEventsRequest.status:type_name -> grpc.service.pipedservice.ListEventsRequest.Status - 93, // 32: grpc.service.pipedservice.ListEventsResponse.events:type_name -> model.Event - 73, // 33: grpc.service.pipedservice.ReportEventStatusesRequest.events:type_name -> grpc.service.pipedservice.ReportEventStatusesRequest.Event - 94, // 34: grpc.service.pipedservice.GetLatestAnalysisResultResponse.analysis_result:type_name -> model.AnalysisResult - 94, // 35: grpc.service.pipedservice.PutLatestAnalysisResultRequest.analysis_result:type_name -> model.AnalysisResult - 95, // 36: grpc.service.pipedservice.UpdateApplicationConfigurationsRequest.applications:type_name -> model.ApplicationInfo - 95, // 37: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest.applications:type_name -> model.ApplicationInfo - 84, // 38: grpc.service.pipedservice.CreateDeploymentChainRequest.first_deployment:type_name -> model.Deployment - 74, // 39: grpc.service.pipedservice.CreateDeploymentChainRequest.matchers:type_name -> grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher - 88, // 40: grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry.value:type_name -> model.StageStatus - 96, // 41: grpc.service.pipedservice.ReportEventStatusesRequest.Event.status:type_name -> model.EventStatus - 75, // 42: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.labels:type_name -> grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.LabelsEntry - 2, // 43: grpc.service.pipedservice.PipedService.ReportStat:input_type -> grpc.service.pipedservice.ReportStatRequest - 4, // 44: grpc.service.pipedservice.PipedService.ReportPipedMeta:input_type -> grpc.service.pipedservice.ReportPipedMetaRequest - 6, // 45: grpc.service.pipedservice.PipedService.ListApplications:input_type -> grpc.service.pipedservice.ListApplicationsRequest - 8, // 46: grpc.service.pipedservice.PipedService.ReportApplicationSyncState:input_type -> grpc.service.pipedservice.ReportApplicationSyncStateRequest - 10, // 47: grpc.service.pipedservice.PipedService.ReportApplicationDeployingStatus:input_type -> grpc.service.pipedservice.ReportApplicationDeployingStatusRequest - 12, // 48: grpc.service.pipedservice.PipedService.ReportApplicationMostRecentDeployment:input_type -> grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest - 14, // 49: grpc.service.pipedservice.PipedService.GetApplicationMostRecentDeployment:input_type -> grpc.service.pipedservice.GetApplicationMostRecentDeploymentRequest - 16, // 50: grpc.service.pipedservice.PipedService.GetDeployment:input_type -> grpc.service.pipedservice.GetDeploymentRequest - 18, // 51: grpc.service.pipedservice.PipedService.ListNotCompletedDeployments:input_type -> grpc.service.pipedservice.ListNotCompletedDeploymentsRequest - 20, // 52: grpc.service.pipedservice.PipedService.CreateDeployment:input_type -> grpc.service.pipedservice.CreateDeploymentRequest - 22, // 53: grpc.service.pipedservice.PipedService.ReportDeploymentPlanned:input_type -> grpc.service.pipedservice.ReportDeploymentPlannedRequest - 24, // 54: grpc.service.pipedservice.PipedService.ReportDeploymentStatusChanged:input_type -> grpc.service.pipedservice.ReportDeploymentStatusChangedRequest - 26, // 55: grpc.service.pipedservice.PipedService.ReportDeploymentCompleted:input_type -> grpc.service.pipedservice.ReportDeploymentCompletedRequest - 28, // 56: grpc.service.pipedservice.PipedService.SaveDeploymentMetadata:input_type -> grpc.service.pipedservice.SaveDeploymentMetadataRequest - 30, // 57: grpc.service.pipedservice.PipedService.SaveStageMetadata:input_type -> grpc.service.pipedservice.SaveStageMetadataRequest - 32, // 58: grpc.service.pipedservice.PipedService.ReportStageLogs:input_type -> grpc.service.pipedservice.ReportStageLogsRequest - 34, // 59: grpc.service.pipedservice.PipedService.ReportStageLogsFromLastCheckpoint:input_type -> grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest - 36, // 60: grpc.service.pipedservice.PipedService.ReportStageStatusChanged:input_type -> grpc.service.pipedservice.ReportStageStatusChangedRequest - 38, // 61: grpc.service.pipedservice.PipedService.ListUnhandledCommands:input_type -> grpc.service.pipedservice.ListUnhandledCommandsRequest - 40, // 62: grpc.service.pipedservice.PipedService.ReportCommandHandled:input_type -> grpc.service.pipedservice.ReportCommandHandledRequest - 42, // 63: grpc.service.pipedservice.PipedService.ReportApplicationLiveState:input_type -> grpc.service.pipedservice.ReportApplicationLiveStateRequest - 44, // 64: grpc.service.pipedservice.PipedService.ReportApplicationLiveStateEvents:input_type -> grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest - 46, // 65: grpc.service.pipedservice.PipedService.GetLatestEvent:input_type -> grpc.service.pipedservice.GetLatestEventRequest - 48, // 66: grpc.service.pipedservice.PipedService.ListEvents:input_type -> grpc.service.pipedservice.ListEventsRequest - 50, // 67: grpc.service.pipedservice.PipedService.ReportEventsHandled:input_type -> grpc.service.pipedservice.ReportEventsHandledRequest - 52, // 68: grpc.service.pipedservice.PipedService.ReportEventStatuses:input_type -> grpc.service.pipedservice.ReportEventStatusesRequest - 54, // 69: grpc.service.pipedservice.PipedService.GetLatestAnalysisResult:input_type -> grpc.service.pipedservice.GetLatestAnalysisResultRequest - 56, // 70: grpc.service.pipedservice.PipedService.PutLatestAnalysisResult:input_type -> grpc.service.pipedservice.PutLatestAnalysisResultRequest - 58, // 71: grpc.service.pipedservice.PipedService.GetDesiredVersion:input_type -> grpc.service.pipedservice.GetDesiredVersionRequest - 60, // 72: grpc.service.pipedservice.PipedService.UpdateApplicationConfigurations:input_type -> grpc.service.pipedservice.UpdateApplicationConfigurationsRequest - 62, // 73: grpc.service.pipedservice.PipedService.ReportUnregisteredApplicationConfigurations:input_type -> grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest - 64, // 74: grpc.service.pipedservice.PipedService.CreateDeploymentChain:input_type -> grpc.service.pipedservice.CreateDeploymentChainRequest - 66, // 75: grpc.service.pipedservice.PipedService.InChainDeploymentPlannable:input_type -> grpc.service.pipedservice.InChainDeploymentPlannableRequest - 3, // 76: grpc.service.pipedservice.PipedService.ReportStat:output_type -> grpc.service.pipedservice.ReportStatResponse - 5, // 77: grpc.service.pipedservice.PipedService.ReportPipedMeta:output_type -> grpc.service.pipedservice.ReportPipedMetaResponse - 7, // 78: grpc.service.pipedservice.PipedService.ListApplications:output_type -> grpc.service.pipedservice.ListApplicationsResponse - 9, // 79: grpc.service.pipedservice.PipedService.ReportApplicationSyncState:output_type -> grpc.service.pipedservice.ReportApplicationSyncStateResponse - 11, // 80: grpc.service.pipedservice.PipedService.ReportApplicationDeployingStatus:output_type -> grpc.service.pipedservice.ReportApplicationDeployingStatusResponse - 13, // 81: grpc.service.pipedservice.PipedService.ReportApplicationMostRecentDeployment:output_type -> grpc.service.pipedservice.ReportApplicationMostRecentDeploymentResponse - 15, // 82: grpc.service.pipedservice.PipedService.GetApplicationMostRecentDeployment:output_type -> grpc.service.pipedservice.GetApplicationMostRecentDeploymentResponse - 17, // 83: grpc.service.pipedservice.PipedService.GetDeployment:output_type -> grpc.service.pipedservice.GetDeploymentResponse - 19, // 84: grpc.service.pipedservice.PipedService.ListNotCompletedDeployments:output_type -> grpc.service.pipedservice.ListNotCompletedDeploymentsResponse - 21, // 85: grpc.service.pipedservice.PipedService.CreateDeployment:output_type -> grpc.service.pipedservice.CreateDeploymentResponse - 23, // 86: grpc.service.pipedservice.PipedService.ReportDeploymentPlanned:output_type -> grpc.service.pipedservice.ReportDeploymentPlannedResponse - 25, // 87: grpc.service.pipedservice.PipedService.ReportDeploymentStatusChanged:output_type -> grpc.service.pipedservice.ReportDeploymentStatusChangedResponse - 27, // 88: grpc.service.pipedservice.PipedService.ReportDeploymentCompleted:output_type -> grpc.service.pipedservice.ReportDeploymentCompletedResponse - 29, // 89: grpc.service.pipedservice.PipedService.SaveDeploymentMetadata:output_type -> grpc.service.pipedservice.SaveDeploymentMetadataResponse - 31, // 90: grpc.service.pipedservice.PipedService.SaveStageMetadata:output_type -> grpc.service.pipedservice.SaveStageMetadataResponse - 33, // 91: grpc.service.pipedservice.PipedService.ReportStageLogs:output_type -> grpc.service.pipedservice.ReportStageLogsResponse - 35, // 92: grpc.service.pipedservice.PipedService.ReportStageLogsFromLastCheckpoint:output_type -> grpc.service.pipedservice.ReportStageLogsFromLastCheckpointResponse - 37, // 93: grpc.service.pipedservice.PipedService.ReportStageStatusChanged:output_type -> grpc.service.pipedservice.ReportStageStatusChangedResponse - 39, // 94: grpc.service.pipedservice.PipedService.ListUnhandledCommands:output_type -> grpc.service.pipedservice.ListUnhandledCommandsResponse - 41, // 95: grpc.service.pipedservice.PipedService.ReportCommandHandled:output_type -> grpc.service.pipedservice.ReportCommandHandledResponse - 43, // 96: grpc.service.pipedservice.PipedService.ReportApplicationLiveState:output_type -> grpc.service.pipedservice.ReportApplicationLiveStateResponse - 45, // 97: grpc.service.pipedservice.PipedService.ReportApplicationLiveStateEvents:output_type -> grpc.service.pipedservice.ReportApplicationLiveStateEventsResponse - 47, // 98: grpc.service.pipedservice.PipedService.GetLatestEvent:output_type -> grpc.service.pipedservice.GetLatestEventResponse - 49, // 99: grpc.service.pipedservice.PipedService.ListEvents:output_type -> grpc.service.pipedservice.ListEventsResponse - 51, // 100: grpc.service.pipedservice.PipedService.ReportEventsHandled:output_type -> grpc.service.pipedservice.ReportEventsHandledResponse - 53, // 101: grpc.service.pipedservice.PipedService.ReportEventStatuses:output_type -> grpc.service.pipedservice.ReportEventStatusesResponse - 55, // 102: grpc.service.pipedservice.PipedService.GetLatestAnalysisResult:output_type -> grpc.service.pipedservice.GetLatestAnalysisResultResponse - 57, // 103: grpc.service.pipedservice.PipedService.PutLatestAnalysisResult:output_type -> grpc.service.pipedservice.PutLatestAnalysisResultResponse - 59, // 104: grpc.service.pipedservice.PipedService.GetDesiredVersion:output_type -> grpc.service.pipedservice.GetDesiredVersionResponse - 61, // 105: grpc.service.pipedservice.PipedService.UpdateApplicationConfigurations:output_type -> grpc.service.pipedservice.UpdateApplicationConfigurationsResponse - 63, // 106: grpc.service.pipedservice.PipedService.ReportUnregisteredApplicationConfigurations:output_type -> grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsResponse - 65, // 107: grpc.service.pipedservice.PipedService.CreateDeploymentChain:output_type -> grpc.service.pipedservice.CreateDeploymentChainResponse - 67, // 108: grpc.service.pipedservice.PipedService.InChainDeploymentPlannable:output_type -> grpc.service.pipedservice.InChainDeploymentPlannableResponse - 76, // [76:109] is the sub-list for method output_type - 43, // [43:76] is the sub-list for method input_type - 43, // [43:43] is the sub-list for extension type_name - 43, // [43:43] is the sub-list for extension extendee - 0, // [0:43] is the sub-list for field type_name + 82, // 0: grpc.service.pipedservice.ReportPipedMetaRequest.cloud_providers:type_name -> model.Piped.CloudProvider + 83, // 1: grpc.service.pipedservice.ReportPipedMetaRequest.platform_providers:type_name -> model.Piped.PlatformProvider + 84, // 2: grpc.service.pipedservice.ReportPipedMetaRequest.repositories:type_name -> model.ApplicationGitRepository + 85, // 3: grpc.service.pipedservice.ReportPipedMetaRequest.secret_encryption:type_name -> model.Piped.SecretEncryption + 86, // 4: grpc.service.pipedservice.ListApplicationsResponse.applications:type_name -> model.Application + 87, // 5: grpc.service.pipedservice.ReportApplicationSyncStateRequest.state:type_name -> model.ApplicationSyncState + 88, // 6: grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest.status:type_name -> model.DeploymentStatus + 89, // 7: grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest.deployment:type_name -> model.ApplicationDeploymentReference + 88, // 8: grpc.service.pipedservice.GetApplicationMostRecentDeploymentRequest.status:type_name -> model.DeploymentStatus + 89, // 9: grpc.service.pipedservice.GetApplicationMostRecentDeploymentResponse.deployment:type_name -> model.ApplicationDeploymentReference + 90, // 10: grpc.service.pipedservice.GetDeploymentResponse.deployment:type_name -> model.Deployment + 90, // 11: grpc.service.pipedservice.ListNotCompletedDeploymentsResponse.deployments:type_name -> model.Deployment + 90, // 12: grpc.service.pipedservice.CreateDeploymentRequest.deployment:type_name -> model.Deployment + 91, // 13: grpc.service.pipedservice.ReportDeploymentPlannedRequest.versions:type_name -> model.ArtifactVersion + 92, // 14: grpc.service.pipedservice.ReportDeploymentPlannedRequest.stages:type_name -> model.PipelineStage + 88, // 15: grpc.service.pipedservice.ReportDeploymentStatusChangedRequest.status:type_name -> model.DeploymentStatus + 88, // 16: grpc.service.pipedservice.ReportDeploymentCompletedRequest.status:type_name -> model.DeploymentStatus + 72, // 17: grpc.service.pipedservice.ReportDeploymentCompletedRequest.stage_statuses:type_name -> grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry + 73, // 18: grpc.service.pipedservice.SaveDeploymentMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveDeploymentMetadataRequest.MetadataEntry + 74, // 19: grpc.service.pipedservice.SaveDeploymentSharedMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveDeploymentSharedMetadataRequest.MetadataEntry + 75, // 20: grpc.service.pipedservice.SaveDeploymentPluginMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveDeploymentPluginMetadataRequest.MetadataEntry + 76, // 21: grpc.service.pipedservice.SaveStageMetadataRequest.metadata:type_name -> grpc.service.pipedservice.SaveStageMetadataRequest.MetadataEntry + 93, // 22: grpc.service.pipedservice.ReportStageLogsRequest.blocks:type_name -> model.LogBlock + 93, // 23: grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest.blocks:type_name -> model.LogBlock + 94, // 24: grpc.service.pipedservice.ReportStageStatusChangedRequest.status:type_name -> model.StageStatus + 95, // 25: grpc.service.pipedservice.ListUnhandledCommandsResponse.commands:type_name -> model.Command + 96, // 26: grpc.service.pipedservice.ReportCommandHandledRequest.status:type_name -> model.CommandStatus + 77, // 27: grpc.service.pipedservice.ReportCommandHandledRequest.metadata:type_name -> grpc.service.pipedservice.ReportCommandHandledRequest.MetadataEntry + 97, // 28: grpc.service.pipedservice.ReportApplicationLiveStateRequest.snapshot:type_name -> model.ApplicationLiveStateSnapshot + 98, // 29: grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest.kubernetes_events:type_name -> model.KubernetesResourceStateEvent + 78, // 30: grpc.service.pipedservice.GetLatestEventRequest.labels:type_name -> grpc.service.pipedservice.GetLatestEventRequest.LabelsEntry + 99, // 31: grpc.service.pipedservice.GetLatestEventResponse.event:type_name -> model.Event + 0, // 32: grpc.service.pipedservice.ListEventsRequest.order:type_name -> grpc.service.pipedservice.ListOrder + 1, // 33: grpc.service.pipedservice.ListEventsRequest.status:type_name -> grpc.service.pipedservice.ListEventsRequest.Status + 99, // 34: grpc.service.pipedservice.ListEventsResponse.events:type_name -> model.Event + 79, // 35: grpc.service.pipedservice.ReportEventStatusesRequest.events:type_name -> grpc.service.pipedservice.ReportEventStatusesRequest.Event + 100, // 36: grpc.service.pipedservice.GetLatestAnalysisResultResponse.analysis_result:type_name -> model.AnalysisResult + 100, // 37: grpc.service.pipedservice.PutLatestAnalysisResultRequest.analysis_result:type_name -> model.AnalysisResult + 101, // 38: grpc.service.pipedservice.UpdateApplicationConfigurationsRequest.applications:type_name -> model.ApplicationInfo + 101, // 39: grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest.applications:type_name -> model.ApplicationInfo + 90, // 40: grpc.service.pipedservice.CreateDeploymentChainRequest.first_deployment:type_name -> model.Deployment + 80, // 41: grpc.service.pipedservice.CreateDeploymentChainRequest.matchers:type_name -> grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher + 94, // 42: grpc.service.pipedservice.ReportDeploymentCompletedRequest.StageStatusesEntry.value:type_name -> model.StageStatus + 102, // 43: grpc.service.pipedservice.ReportEventStatusesRequest.Event.status:type_name -> model.EventStatus + 81, // 44: grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.labels:type_name -> grpc.service.pipedservice.CreateDeploymentChainRequest.ApplicationMatcher.LabelsEntry + 2, // 45: grpc.service.pipedservice.PipedService.ReportStat:input_type -> grpc.service.pipedservice.ReportStatRequest + 4, // 46: grpc.service.pipedservice.PipedService.ReportPipedMeta:input_type -> grpc.service.pipedservice.ReportPipedMetaRequest + 6, // 47: grpc.service.pipedservice.PipedService.ListApplications:input_type -> grpc.service.pipedservice.ListApplicationsRequest + 8, // 48: grpc.service.pipedservice.PipedService.ReportApplicationSyncState:input_type -> grpc.service.pipedservice.ReportApplicationSyncStateRequest + 10, // 49: grpc.service.pipedservice.PipedService.ReportApplicationDeployingStatus:input_type -> grpc.service.pipedservice.ReportApplicationDeployingStatusRequest + 12, // 50: grpc.service.pipedservice.PipedService.ReportApplicationMostRecentDeployment:input_type -> grpc.service.pipedservice.ReportApplicationMostRecentDeploymentRequest + 14, // 51: grpc.service.pipedservice.PipedService.GetApplicationMostRecentDeployment:input_type -> grpc.service.pipedservice.GetApplicationMostRecentDeploymentRequest + 16, // 52: grpc.service.pipedservice.PipedService.GetDeployment:input_type -> grpc.service.pipedservice.GetDeploymentRequest + 18, // 53: grpc.service.pipedservice.PipedService.ListNotCompletedDeployments:input_type -> grpc.service.pipedservice.ListNotCompletedDeploymentsRequest + 20, // 54: grpc.service.pipedservice.PipedService.CreateDeployment:input_type -> grpc.service.pipedservice.CreateDeploymentRequest + 22, // 55: grpc.service.pipedservice.PipedService.ReportDeploymentPlanned:input_type -> grpc.service.pipedservice.ReportDeploymentPlannedRequest + 24, // 56: grpc.service.pipedservice.PipedService.ReportDeploymentStatusChanged:input_type -> grpc.service.pipedservice.ReportDeploymentStatusChangedRequest + 26, // 57: grpc.service.pipedservice.PipedService.ReportDeploymentCompleted:input_type -> grpc.service.pipedservice.ReportDeploymentCompletedRequest + 28, // 58: grpc.service.pipedservice.PipedService.SaveDeploymentMetadata:input_type -> grpc.service.pipedservice.SaveDeploymentMetadataRequest + 30, // 59: grpc.service.pipedservice.PipedService.SaveDeploymentSharedMetadata:input_type -> grpc.service.pipedservice.SaveDeploymentSharedMetadataRequest + 32, // 60: grpc.service.pipedservice.PipedService.SaveDeploymentPluginMetadata:input_type -> grpc.service.pipedservice.SaveDeploymentPluginMetadataRequest + 34, // 61: grpc.service.pipedservice.PipedService.SaveStageMetadata:input_type -> grpc.service.pipedservice.SaveStageMetadataRequest + 36, // 62: grpc.service.pipedservice.PipedService.ReportStageLogs:input_type -> grpc.service.pipedservice.ReportStageLogsRequest + 38, // 63: grpc.service.pipedservice.PipedService.ReportStageLogsFromLastCheckpoint:input_type -> grpc.service.pipedservice.ReportStageLogsFromLastCheckpointRequest + 40, // 64: grpc.service.pipedservice.PipedService.ReportStageStatusChanged:input_type -> grpc.service.pipedservice.ReportStageStatusChangedRequest + 42, // 65: grpc.service.pipedservice.PipedService.ListUnhandledCommands:input_type -> grpc.service.pipedservice.ListUnhandledCommandsRequest + 44, // 66: grpc.service.pipedservice.PipedService.ReportCommandHandled:input_type -> grpc.service.pipedservice.ReportCommandHandledRequest + 46, // 67: grpc.service.pipedservice.PipedService.ReportApplicationLiveState:input_type -> grpc.service.pipedservice.ReportApplicationLiveStateRequest + 48, // 68: grpc.service.pipedservice.PipedService.ReportApplicationLiveStateEvents:input_type -> grpc.service.pipedservice.ReportApplicationLiveStateEventsRequest + 50, // 69: grpc.service.pipedservice.PipedService.GetLatestEvent:input_type -> grpc.service.pipedservice.GetLatestEventRequest + 52, // 70: grpc.service.pipedservice.PipedService.ListEvents:input_type -> grpc.service.pipedservice.ListEventsRequest + 54, // 71: grpc.service.pipedservice.PipedService.ReportEventsHandled:input_type -> grpc.service.pipedservice.ReportEventsHandledRequest + 56, // 72: grpc.service.pipedservice.PipedService.ReportEventStatuses:input_type -> grpc.service.pipedservice.ReportEventStatusesRequest + 58, // 73: grpc.service.pipedservice.PipedService.GetLatestAnalysisResult:input_type -> grpc.service.pipedservice.GetLatestAnalysisResultRequest + 60, // 74: grpc.service.pipedservice.PipedService.PutLatestAnalysisResult:input_type -> grpc.service.pipedservice.PutLatestAnalysisResultRequest + 62, // 75: grpc.service.pipedservice.PipedService.GetDesiredVersion:input_type -> grpc.service.pipedservice.GetDesiredVersionRequest + 64, // 76: grpc.service.pipedservice.PipedService.UpdateApplicationConfigurations:input_type -> grpc.service.pipedservice.UpdateApplicationConfigurationsRequest + 66, // 77: grpc.service.pipedservice.PipedService.ReportUnregisteredApplicationConfigurations:input_type -> grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsRequest + 68, // 78: grpc.service.pipedservice.PipedService.CreateDeploymentChain:input_type -> grpc.service.pipedservice.CreateDeploymentChainRequest + 70, // 79: grpc.service.pipedservice.PipedService.InChainDeploymentPlannable:input_type -> grpc.service.pipedservice.InChainDeploymentPlannableRequest + 3, // 80: grpc.service.pipedservice.PipedService.ReportStat:output_type -> grpc.service.pipedservice.ReportStatResponse + 5, // 81: grpc.service.pipedservice.PipedService.ReportPipedMeta:output_type -> grpc.service.pipedservice.ReportPipedMetaResponse + 7, // 82: grpc.service.pipedservice.PipedService.ListApplications:output_type -> grpc.service.pipedservice.ListApplicationsResponse + 9, // 83: grpc.service.pipedservice.PipedService.ReportApplicationSyncState:output_type -> grpc.service.pipedservice.ReportApplicationSyncStateResponse + 11, // 84: grpc.service.pipedservice.PipedService.ReportApplicationDeployingStatus:output_type -> grpc.service.pipedservice.ReportApplicationDeployingStatusResponse + 13, // 85: grpc.service.pipedservice.PipedService.ReportApplicationMostRecentDeployment:output_type -> grpc.service.pipedservice.ReportApplicationMostRecentDeploymentResponse + 15, // 86: grpc.service.pipedservice.PipedService.GetApplicationMostRecentDeployment:output_type -> grpc.service.pipedservice.GetApplicationMostRecentDeploymentResponse + 17, // 87: grpc.service.pipedservice.PipedService.GetDeployment:output_type -> grpc.service.pipedservice.GetDeploymentResponse + 19, // 88: grpc.service.pipedservice.PipedService.ListNotCompletedDeployments:output_type -> grpc.service.pipedservice.ListNotCompletedDeploymentsResponse + 21, // 89: grpc.service.pipedservice.PipedService.CreateDeployment:output_type -> grpc.service.pipedservice.CreateDeploymentResponse + 23, // 90: grpc.service.pipedservice.PipedService.ReportDeploymentPlanned:output_type -> grpc.service.pipedservice.ReportDeploymentPlannedResponse + 25, // 91: grpc.service.pipedservice.PipedService.ReportDeploymentStatusChanged:output_type -> grpc.service.pipedservice.ReportDeploymentStatusChangedResponse + 27, // 92: grpc.service.pipedservice.PipedService.ReportDeploymentCompleted:output_type -> grpc.service.pipedservice.ReportDeploymentCompletedResponse + 29, // 93: grpc.service.pipedservice.PipedService.SaveDeploymentMetadata:output_type -> grpc.service.pipedservice.SaveDeploymentMetadataResponse + 31, // 94: grpc.service.pipedservice.PipedService.SaveDeploymentSharedMetadata:output_type -> grpc.service.pipedservice.SaveDeploymentSharedMetadataResponse + 33, // 95: grpc.service.pipedservice.PipedService.SaveDeploymentPluginMetadata:output_type -> grpc.service.pipedservice.SaveDeploymentPluginMetadataResponse + 35, // 96: grpc.service.pipedservice.PipedService.SaveStageMetadata:output_type -> grpc.service.pipedservice.SaveStageMetadataResponse + 37, // 97: grpc.service.pipedservice.PipedService.ReportStageLogs:output_type -> grpc.service.pipedservice.ReportStageLogsResponse + 39, // 98: grpc.service.pipedservice.PipedService.ReportStageLogsFromLastCheckpoint:output_type -> grpc.service.pipedservice.ReportStageLogsFromLastCheckpointResponse + 41, // 99: grpc.service.pipedservice.PipedService.ReportStageStatusChanged:output_type -> grpc.service.pipedservice.ReportStageStatusChangedResponse + 43, // 100: grpc.service.pipedservice.PipedService.ListUnhandledCommands:output_type -> grpc.service.pipedservice.ListUnhandledCommandsResponse + 45, // 101: grpc.service.pipedservice.PipedService.ReportCommandHandled:output_type -> grpc.service.pipedservice.ReportCommandHandledResponse + 47, // 102: grpc.service.pipedservice.PipedService.ReportApplicationLiveState:output_type -> grpc.service.pipedservice.ReportApplicationLiveStateResponse + 49, // 103: grpc.service.pipedservice.PipedService.ReportApplicationLiveStateEvents:output_type -> grpc.service.pipedservice.ReportApplicationLiveStateEventsResponse + 51, // 104: grpc.service.pipedservice.PipedService.GetLatestEvent:output_type -> grpc.service.pipedservice.GetLatestEventResponse + 53, // 105: grpc.service.pipedservice.PipedService.ListEvents:output_type -> grpc.service.pipedservice.ListEventsResponse + 55, // 106: grpc.service.pipedservice.PipedService.ReportEventsHandled:output_type -> grpc.service.pipedservice.ReportEventsHandledResponse + 57, // 107: grpc.service.pipedservice.PipedService.ReportEventStatuses:output_type -> grpc.service.pipedservice.ReportEventStatusesResponse + 59, // 108: grpc.service.pipedservice.PipedService.GetLatestAnalysisResult:output_type -> grpc.service.pipedservice.GetLatestAnalysisResultResponse + 61, // 109: grpc.service.pipedservice.PipedService.PutLatestAnalysisResult:output_type -> grpc.service.pipedservice.PutLatestAnalysisResultResponse + 63, // 110: grpc.service.pipedservice.PipedService.GetDesiredVersion:output_type -> grpc.service.pipedservice.GetDesiredVersionResponse + 65, // 111: grpc.service.pipedservice.PipedService.UpdateApplicationConfigurations:output_type -> grpc.service.pipedservice.UpdateApplicationConfigurationsResponse + 67, // 112: grpc.service.pipedservice.PipedService.ReportUnregisteredApplicationConfigurations:output_type -> grpc.service.pipedservice.ReportUnregisteredApplicationConfigurationsResponse + 69, // 113: grpc.service.pipedservice.PipedService.CreateDeploymentChain:output_type -> grpc.service.pipedservice.CreateDeploymentChainResponse + 71, // 114: grpc.service.pipedservice.PipedService.InChainDeploymentPlannable:output_type -> grpc.service.pipedservice.InChainDeploymentPlannableResponse + 80, // [80:115] is the sub-list for method output_type + 45, // [45:80] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name } func init() { file_pkg_app_server_service_pipedservice_service_proto_init() } @@ -5124,7 +5390,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveStageMetadataRequest); i { + switch v := v.(*SaveDeploymentSharedMetadataRequest); i { case 0: return &v.state case 1: @@ -5136,7 +5402,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveStageMetadataResponse); i { + switch v := v.(*SaveDeploymentSharedMetadataResponse); i { case 0: return &v.state case 1: @@ -5148,7 +5414,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageLogsRequest); i { + switch v := v.(*SaveDeploymentPluginMetadataRequest); i { case 0: return &v.state case 1: @@ -5160,7 +5426,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageLogsResponse); i { + switch v := v.(*SaveDeploymentPluginMetadataResponse); i { case 0: return &v.state case 1: @@ -5172,7 +5438,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageLogsFromLastCheckpointRequest); i { + switch v := v.(*SaveStageMetadataRequest); i { case 0: return &v.state case 1: @@ -5184,7 +5450,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageLogsFromLastCheckpointResponse); i { + switch v := v.(*SaveStageMetadataResponse); i { case 0: return &v.state case 1: @@ -5196,7 +5462,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageStatusChangedRequest); i { + switch v := v.(*ReportStageLogsRequest); i { case 0: return &v.state case 1: @@ -5208,7 +5474,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStageStatusChangedResponse); i { + switch v := v.(*ReportStageLogsResponse); i { case 0: return &v.state case 1: @@ -5220,7 +5486,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUnhandledCommandsRequest); i { + switch v := v.(*ReportStageLogsFromLastCheckpointRequest); i { case 0: return &v.state case 1: @@ -5232,7 +5498,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUnhandledCommandsResponse); i { + switch v := v.(*ReportStageLogsFromLastCheckpointResponse); i { case 0: return &v.state case 1: @@ -5244,7 +5510,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportCommandHandledRequest); i { + switch v := v.(*ReportStageStatusChangedRequest); i { case 0: return &v.state case 1: @@ -5256,7 +5522,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportCommandHandledResponse); i { + switch v := v.(*ReportStageStatusChangedResponse); i { case 0: return &v.state case 1: @@ -5268,7 +5534,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportApplicationLiveStateRequest); i { + switch v := v.(*ListUnhandledCommandsRequest); i { case 0: return &v.state case 1: @@ -5280,7 +5546,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportApplicationLiveStateResponse); i { + switch v := v.(*ListUnhandledCommandsResponse); i { case 0: return &v.state case 1: @@ -5292,7 +5558,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportApplicationLiveStateEventsRequest); i { + switch v := v.(*ReportCommandHandledRequest); i { case 0: return &v.state case 1: @@ -5304,7 +5570,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportApplicationLiveStateEventsResponse); i { + switch v := v.(*ReportCommandHandledResponse); i { case 0: return &v.state case 1: @@ -5316,7 +5582,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestEventRequest); i { + switch v := v.(*ReportApplicationLiveStateRequest); i { case 0: return &v.state case 1: @@ -5328,7 +5594,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestEventResponse); i { + switch v := v.(*ReportApplicationLiveStateResponse); i { case 0: return &v.state case 1: @@ -5340,7 +5606,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsRequest); i { + switch v := v.(*ReportApplicationLiveStateEventsRequest); i { case 0: return &v.state case 1: @@ -5352,7 +5618,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsResponse); i { + switch v := v.(*ReportApplicationLiveStateEventsResponse); i { case 0: return &v.state case 1: @@ -5364,7 +5630,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportEventsHandledRequest); i { + switch v := v.(*GetLatestEventRequest); i { case 0: return &v.state case 1: @@ -5376,7 +5642,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportEventsHandledResponse); i { + switch v := v.(*GetLatestEventResponse); i { case 0: return &v.state case 1: @@ -5388,7 +5654,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportEventStatusesRequest); i { + switch v := v.(*ListEventsRequest); i { case 0: return &v.state case 1: @@ -5400,7 +5666,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportEventStatusesResponse); i { + switch v := v.(*ListEventsResponse); i { case 0: return &v.state case 1: @@ -5412,7 +5678,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestAnalysisResultRequest); i { + switch v := v.(*ReportEventsHandledRequest); i { case 0: return &v.state case 1: @@ -5424,7 +5690,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestAnalysisResultResponse); i { + switch v := v.(*ReportEventsHandledResponse); i { case 0: return &v.state case 1: @@ -5436,7 +5702,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutLatestAnalysisResultRequest); i { + switch v := v.(*ReportEventStatusesRequest); i { case 0: return &v.state case 1: @@ -5448,7 +5714,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutLatestAnalysisResultResponse); i { + switch v := v.(*ReportEventStatusesResponse); i { case 0: return &v.state case 1: @@ -5460,7 +5726,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDesiredVersionRequest); i { + switch v := v.(*GetLatestAnalysisResultRequest); i { case 0: return &v.state case 1: @@ -5472,7 +5738,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDesiredVersionResponse); i { + switch v := v.(*GetLatestAnalysisResultResponse); i { case 0: return &v.state case 1: @@ -5484,7 +5750,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateApplicationConfigurationsRequest); i { + switch v := v.(*PutLatestAnalysisResultRequest); i { case 0: return &v.state case 1: @@ -5496,7 +5762,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateApplicationConfigurationsResponse); i { + switch v := v.(*PutLatestAnalysisResultResponse); i { case 0: return &v.state case 1: @@ -5508,7 +5774,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportUnregisteredApplicationConfigurationsRequest); i { + switch v := v.(*GetDesiredVersionRequest); i { case 0: return &v.state case 1: @@ -5520,7 +5786,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportUnregisteredApplicationConfigurationsResponse); i { + switch v := v.(*GetDesiredVersionResponse); i { case 0: return &v.state case 1: @@ -5532,7 +5798,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateDeploymentChainRequest); i { + switch v := v.(*UpdateApplicationConfigurationsRequest); i { case 0: return &v.state case 1: @@ -5544,7 +5810,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateDeploymentChainResponse); i { + switch v := v.(*UpdateApplicationConfigurationsResponse); i { case 0: return &v.state case 1: @@ -5556,7 +5822,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InChainDeploymentPlannableRequest); i { + switch v := v.(*ReportUnregisteredApplicationConfigurationsRequest); i { case 0: return &v.state case 1: @@ -5568,6 +5834,54 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { } } file_pkg_app_server_service_pipedservice_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReportUnregisteredApplicationConfigurationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateDeploymentChainRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateDeploymentChainResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InChainDeploymentPlannableRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InChainDeploymentPlannableResponse); i { case 0: return &v.state @@ -5579,7 +5893,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { return nil } } - file_pkg_app_server_service_pipedservice_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReportEventStatusesRequest_Event); i { case 0: return &v.state @@ -5591,7 +5905,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { return nil } } - file_pkg_app_server_service_pipedservice_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_pkg_app_server_service_pipedservice_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateDeploymentChainRequest_ApplicationMatcher); i { case 0: return &v.state @@ -5610,7 +5924,7 @@ func file_pkg_app_server_service_pipedservice_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_app_server_service_pipedservice_service_proto_rawDesc, NumEnums: 2, - NumMessages: 74, + NumMessages: 80, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/app/server/service/pipedservice/service.pb.validate.go b/pkg/app/server/service/pipedservice/service.pb.validate.go index 63f5e02a24..7962e617dd 100644 --- a/pkg/app/server/service/pipedservice/service.pb.validate.go +++ b/pkg/app/server/service/pipedservice/service.pb.validate.go @@ -3632,6 +3632,463 @@ var _ interface { ErrorName() string } = SaveDeploymentMetadataResponseValidationError{} +// Validate checks the field values on SaveDeploymentSharedMetadataRequest 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 *SaveDeploymentSharedMetadataRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SaveDeploymentSharedMetadataRequest +// 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 +// SaveDeploymentSharedMetadataRequestMultiError, or nil if none found. +func (m *SaveDeploymentSharedMetadataRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *SaveDeploymentSharedMetadataRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { + err := SaveDeploymentSharedMetadataRequestValidationError{ + field: "DeploymentId", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Metadata + + if len(errors) > 0 { + return SaveDeploymentSharedMetadataRequestMultiError(errors) + } + + return nil +} + +// SaveDeploymentSharedMetadataRequestMultiError is an error wrapping multiple +// validation errors returned by +// SaveDeploymentSharedMetadataRequest.ValidateAll() if the designated +// constraints aren't met. +type SaveDeploymentSharedMetadataRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SaveDeploymentSharedMetadataRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SaveDeploymentSharedMetadataRequestMultiError) AllErrors() []error { return m } + +// SaveDeploymentSharedMetadataRequestValidationError is the validation error +// returned by SaveDeploymentSharedMetadataRequest.Validate if the designated +// constraints aren't met. +type SaveDeploymentSharedMetadataRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SaveDeploymentSharedMetadataRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SaveDeploymentSharedMetadataRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SaveDeploymentSharedMetadataRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SaveDeploymentSharedMetadataRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SaveDeploymentSharedMetadataRequestValidationError) ErrorName() string { + return "SaveDeploymentSharedMetadataRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e SaveDeploymentSharedMetadataRequestValidationError) 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 %sSaveDeploymentSharedMetadataRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SaveDeploymentSharedMetadataRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SaveDeploymentSharedMetadataRequestValidationError{} + +// Validate checks the field values on SaveDeploymentSharedMetadataResponse +// 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 *SaveDeploymentSharedMetadataResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SaveDeploymentSharedMetadataResponse +// 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 +// SaveDeploymentSharedMetadataResponseMultiError, or nil if none found. +func (m *SaveDeploymentSharedMetadataResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *SaveDeploymentSharedMetadataResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return SaveDeploymentSharedMetadataResponseMultiError(errors) + } + + return nil +} + +// SaveDeploymentSharedMetadataResponseMultiError is an error wrapping multiple +// validation errors returned by +// SaveDeploymentSharedMetadataResponse.ValidateAll() if the designated +// constraints aren't met. +type SaveDeploymentSharedMetadataResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SaveDeploymentSharedMetadataResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SaveDeploymentSharedMetadataResponseMultiError) AllErrors() []error { return m } + +// SaveDeploymentSharedMetadataResponseValidationError is the validation error +// returned by SaveDeploymentSharedMetadataResponse.Validate if the designated +// constraints aren't met. +type SaveDeploymentSharedMetadataResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SaveDeploymentSharedMetadataResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SaveDeploymentSharedMetadataResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SaveDeploymentSharedMetadataResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SaveDeploymentSharedMetadataResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SaveDeploymentSharedMetadataResponseValidationError) ErrorName() string { + return "SaveDeploymentSharedMetadataResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e SaveDeploymentSharedMetadataResponseValidationError) 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 %sSaveDeploymentSharedMetadataResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SaveDeploymentSharedMetadataResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SaveDeploymentSharedMetadataResponseValidationError{} + +// Validate checks the field values on SaveDeploymentPluginMetadataRequest 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 *SaveDeploymentPluginMetadataRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SaveDeploymentPluginMetadataRequest +// 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 +// SaveDeploymentPluginMetadataRequestMultiError, or nil if none found. +func (m *SaveDeploymentPluginMetadataRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *SaveDeploymentPluginMetadataRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { + err := SaveDeploymentPluginMetadataRequestValidationError{ + field: "DeploymentId", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetPluginName()) < 1 { + err := SaveDeploymentPluginMetadataRequestValidationError{ + field: "PluginName", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Metadata + + if len(errors) > 0 { + return SaveDeploymentPluginMetadataRequestMultiError(errors) + } + + return nil +} + +// SaveDeploymentPluginMetadataRequestMultiError is an error wrapping multiple +// validation errors returned by +// SaveDeploymentPluginMetadataRequest.ValidateAll() if the designated +// constraints aren't met. +type SaveDeploymentPluginMetadataRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SaveDeploymentPluginMetadataRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SaveDeploymentPluginMetadataRequestMultiError) AllErrors() []error { return m } + +// SaveDeploymentPluginMetadataRequestValidationError is the validation error +// returned by SaveDeploymentPluginMetadataRequest.Validate if the designated +// constraints aren't met. +type SaveDeploymentPluginMetadataRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SaveDeploymentPluginMetadataRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SaveDeploymentPluginMetadataRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SaveDeploymentPluginMetadataRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SaveDeploymentPluginMetadataRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SaveDeploymentPluginMetadataRequestValidationError) ErrorName() string { + return "SaveDeploymentPluginMetadataRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e SaveDeploymentPluginMetadataRequestValidationError) 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 %sSaveDeploymentPluginMetadataRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SaveDeploymentPluginMetadataRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SaveDeploymentPluginMetadataRequestValidationError{} + +// Validate checks the field values on SaveDeploymentPluginMetadataResponse +// 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 *SaveDeploymentPluginMetadataResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SaveDeploymentPluginMetadataResponse +// 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 +// SaveDeploymentPluginMetadataResponseMultiError, or nil if none found. +func (m *SaveDeploymentPluginMetadataResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *SaveDeploymentPluginMetadataResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return SaveDeploymentPluginMetadataResponseMultiError(errors) + } + + return nil +} + +// SaveDeploymentPluginMetadataResponseMultiError is an error wrapping multiple +// validation errors returned by +// SaveDeploymentPluginMetadataResponse.ValidateAll() if the designated +// constraints aren't met. +type SaveDeploymentPluginMetadataResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SaveDeploymentPluginMetadataResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SaveDeploymentPluginMetadataResponseMultiError) AllErrors() []error { return m } + +// SaveDeploymentPluginMetadataResponseValidationError is the validation error +// returned by SaveDeploymentPluginMetadataResponse.Validate if the designated +// constraints aren't met. +type SaveDeploymentPluginMetadataResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SaveDeploymentPluginMetadataResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SaveDeploymentPluginMetadataResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SaveDeploymentPluginMetadataResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SaveDeploymentPluginMetadataResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SaveDeploymentPluginMetadataResponseValidationError) ErrorName() string { + return "SaveDeploymentPluginMetadataResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e SaveDeploymentPluginMetadataResponseValidationError) 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 %sSaveDeploymentPluginMetadataResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SaveDeploymentPluginMetadataResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SaveDeploymentPluginMetadataResponseValidationError{} + // Validate checks the field values on SaveStageMetadataRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. diff --git a/pkg/app/server/service/pipedservice/service.proto b/pkg/app/server/service/pipedservice/service.proto index a3947c24bf..cae0988a1b 100644 --- a/pkg/app/server/service/pipedservice/service.proto +++ b/pkg/app/server/service/pipedservice/service.proto @@ -85,7 +85,19 @@ service PipedService { // SaveDeploymentMetadata is used to persist the metadata of a specific deployment. // Different value for the same key will overwrite the previous value for that key. - rpc SaveDeploymentMetadata(SaveDeploymentMetadataRequest) returns (SaveDeploymentMetadataResponse) {} + // + // Deprecated: Use SaveDeploymentSharedMetadata and SaveDeploymentPluginMetadata instead in pipedv1. + rpc SaveDeploymentMetadata(SaveDeploymentMetadataRequest) returns (SaveDeploymentMetadataResponse) { + option deprecated = true; + } + + // SaveDeploymentSharedMetadata persists the shared metadata of a specific deployment. + // Different value for the same key will overwrite the previous value. + rpc SaveDeploymentSharedMetadata(SaveDeploymentSharedMetadataRequest) returns (SaveDeploymentSharedMetadataResponse) {} + + // SaveDeploymentPluginMetadata persists the metadata of a specific plugin of a deployment. + // Different value for the same key will overwrite the previous value. + rpc SaveDeploymentPluginMetadata(SaveDeploymentPluginMetadataRequest) returns (SaveDeploymentPluginMetadataResponse) {} // SaveStageMetadata is used to persist the metadata // of a specific stage of a deployment. @@ -339,6 +351,23 @@ message SaveDeploymentMetadataRequest { message SaveDeploymentMetadataResponse { } +message SaveDeploymentSharedMetadataRequest { + string deployment_id = 1 [(validate.rules).string.min_len = 1]; + map metadata = 2; +} + +message SaveDeploymentSharedMetadataResponse { +} + +message SaveDeploymentPluginMetadataRequest { + string deployment_id = 1 [(validate.rules).string.min_len = 1]; + string plugin_name = 2 [(validate.rules).string.min_len = 1]; + map metadata = 3; +} + +message SaveDeploymentPluginMetadataResponse { +} + message SaveStageMetadataRequest { string deployment_id = 1 [(validate.rules).string.min_len = 1]; string stage_id = 2 [(validate.rules).string.min_len = 1]; diff --git a/pkg/app/server/service/pipedservice/service_grpc.pb.go b/pkg/app/server/service/pipedservice/service_grpc.pb.go index 4544d40495..85a6b635d2 100644 --- a/pkg/app/server/service/pipedservice/service_grpc.pb.go +++ b/pkg/app/server/service/pipedservice/service_grpc.pb.go @@ -61,9 +61,18 @@ type PipedServiceClient interface { // ReportDeploymentCompleted is used to update the status // of a specific deployment to SUCCESS | FAILURE | CANCELLED. ReportDeploymentCompleted(ctx context.Context, in *ReportDeploymentCompletedRequest, opts ...grpc.CallOption) (*ReportDeploymentCompletedResponse, error) + // Deprecated: Do not use. // SaveDeploymentMetadata is used to persist the metadata of a specific deployment. // Different value for the same key will overwrite the previous value for that key. + // + // Deprecated: Use SaveDeploymentSharedMetadata and SaveDeploymentPluginMetadata instead in pipedv1. SaveDeploymentMetadata(ctx context.Context, in *SaveDeploymentMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentMetadataResponse, error) + // SaveDeploymentSharedMetadata persists the shared metadata of a specific deployment. + // Different value for the same key will overwrite the previous value. + SaveDeploymentSharedMetadata(ctx context.Context, in *SaveDeploymentSharedMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentSharedMetadataResponse, error) + // SaveDeploymentPluginMetadata persists the metadata of a specific plugin of a deployment. + // Different value for the same key will overwrite the previous value. + SaveDeploymentPluginMetadata(ctx context.Context, in *SaveDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentPluginMetadataResponse, error) // SaveStageMetadata is used to persist the metadata // of a specific stage of a deployment. // Different value for the same key will overwrite the previous value for that key. @@ -260,6 +269,7 @@ func (c *pipedServiceClient) ReportDeploymentCompleted(ctx context.Context, in * return out, nil } +// Deprecated: Do not use. func (c *pipedServiceClient) SaveDeploymentMetadata(ctx context.Context, in *SaveDeploymentMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentMetadataResponse, error) { out := new(SaveDeploymentMetadataResponse) err := c.cc.Invoke(ctx, "/grpc.service.pipedservice.PipedService/SaveDeploymentMetadata", in, out, opts...) @@ -269,6 +279,24 @@ func (c *pipedServiceClient) SaveDeploymentMetadata(ctx context.Context, in *Sav return out, nil } +func (c *pipedServiceClient) SaveDeploymentSharedMetadata(ctx context.Context, in *SaveDeploymentSharedMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentSharedMetadataResponse, error) { + out := new(SaveDeploymentSharedMetadataResponse) + err := c.cc.Invoke(ctx, "/grpc.service.pipedservice.PipedService/SaveDeploymentSharedMetadata", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pipedServiceClient) SaveDeploymentPluginMetadata(ctx context.Context, in *SaveDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*SaveDeploymentPluginMetadataResponse, error) { + out := new(SaveDeploymentPluginMetadataResponse) + err := c.cc.Invoke(ctx, "/grpc.service.pipedservice.PipedService/SaveDeploymentPluginMetadata", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *pipedServiceClient) SaveStageMetadata(ctx context.Context, in *SaveStageMetadataRequest, opts ...grpc.CallOption) (*SaveStageMetadataResponse, error) { out := new(SaveStageMetadataResponse) err := c.cc.Invoke(ctx, "/grpc.service.pipedservice.PipedService/SaveStageMetadata", in, out, opts...) @@ -483,9 +511,18 @@ type PipedServiceServer interface { // ReportDeploymentCompleted is used to update the status // of a specific deployment to SUCCESS | FAILURE | CANCELLED. ReportDeploymentCompleted(context.Context, *ReportDeploymentCompletedRequest) (*ReportDeploymentCompletedResponse, error) + // Deprecated: Do not use. // SaveDeploymentMetadata is used to persist the metadata of a specific deployment. // Different value for the same key will overwrite the previous value for that key. + // + // Deprecated: Use SaveDeploymentSharedMetadata and SaveDeploymentPluginMetadata instead in pipedv1. SaveDeploymentMetadata(context.Context, *SaveDeploymentMetadataRequest) (*SaveDeploymentMetadataResponse, error) + // SaveDeploymentSharedMetadata persists the shared metadata of a specific deployment. + // Different value for the same key will overwrite the previous value. + SaveDeploymentSharedMetadata(context.Context, *SaveDeploymentSharedMetadataRequest) (*SaveDeploymentSharedMetadataResponse, error) + // SaveDeploymentPluginMetadata persists the metadata of a specific plugin of a deployment. + // Different value for the same key will overwrite the previous value. + SaveDeploymentPluginMetadata(context.Context, *SaveDeploymentPluginMetadataRequest) (*SaveDeploymentPluginMetadataResponse, error) // SaveStageMetadata is used to persist the metadata // of a specific stage of a deployment. // Different value for the same key will overwrite the previous value for that key. @@ -604,6 +641,12 @@ func (UnimplementedPipedServiceServer) ReportDeploymentCompleted(context.Context func (UnimplementedPipedServiceServer) SaveDeploymentMetadata(context.Context, *SaveDeploymentMetadataRequest) (*SaveDeploymentMetadataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SaveDeploymentMetadata not implemented") } +func (UnimplementedPipedServiceServer) SaveDeploymentSharedMetadata(context.Context, *SaveDeploymentSharedMetadataRequest) (*SaveDeploymentSharedMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveDeploymentSharedMetadata not implemented") +} +func (UnimplementedPipedServiceServer) SaveDeploymentPluginMetadata(context.Context, *SaveDeploymentPluginMetadataRequest) (*SaveDeploymentPluginMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SaveDeploymentPluginMetadata not implemented") +} func (UnimplementedPipedServiceServer) SaveStageMetadata(context.Context, *SaveStageMetadataRequest) (*SaveStageMetadataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SaveStageMetadata not implemented") } @@ -926,6 +969,42 @@ func _PipedService_SaveDeploymentMetadata_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _PipedService_SaveDeploymentSharedMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveDeploymentSharedMetadataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PipedServiceServer).SaveDeploymentSharedMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.service.pipedservice.PipedService/SaveDeploymentSharedMetadata", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PipedServiceServer).SaveDeploymentSharedMetadata(ctx, req.(*SaveDeploymentSharedMetadataRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PipedService_SaveDeploymentPluginMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveDeploymentPluginMetadataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PipedServiceServer).SaveDeploymentPluginMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.service.pipedservice.PipedService/SaveDeploymentPluginMetadata", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PipedServiceServer).SaveDeploymentPluginMetadata(ctx, req.(*SaveDeploymentPluginMetadataRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _PipedService_SaveStageMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SaveStageMetadataRequest) if err := dec(in); err != nil { @@ -1331,6 +1410,14 @@ var PipedService_ServiceDesc = grpc.ServiceDesc{ MethodName: "SaveDeploymentMetadata", Handler: _PipedService_SaveDeploymentMetadata_Handler, }, + { + MethodName: "SaveDeploymentSharedMetadata", + Handler: _PipedService_SaveDeploymentSharedMetadata_Handler, + }, + { + MethodName: "SaveDeploymentPluginMetadata", + Handler: _PipedService_SaveDeploymentPluginMetadata_Handler, + }, { MethodName: "SaveStageMetadata", Handler: _PipedService_SaveStageMetadata_Handler, diff --git a/pkg/model/deployment.go b/pkg/model/deployment.go index fb5c794347..52245d6ba0 100644 --- a/pkg/model/deployment.go +++ b/pkg/model/deployment.go @@ -228,3 +228,23 @@ func (p PipelineStages) Swap(i, j int) { func (p PipelineStages) Less(i, j int) bool { return p[i].Index < p[j].Index } + +// func (d *Deployment) SharedMetadata() map[string]string { +// if d.Metadata == nil { +// d.Metadata = &DeploymentMetadata{} +// } +// if d.Metadata.Metadata == nil { +// d.Metadata.Metadata = make(map[string]string) +// } +// return d.Metadata.Metadata +// } + +// func (d *Deployment) PluginMetadata(pluginName string) map[string]string { +// if d.Metadata == nil { +// d.Metadata = &DeploymentMetadata{} +// } +// // if d.Metadata. == nil { +// // d.Metadata.Metadata = make(map[string]string) +// // return d.Metadata.Metadata[plugin] +// return nil +// } diff --git a/pkg/model/deployment.pb.go b/pkg/model/deployment.pb.go index cadb2db58e..35a8eb6cac 100644 --- a/pkg/model/deployment.pb.go +++ b/pkg/model/deployment.pb.go @@ -264,9 +264,13 @@ type Deployment struct { RunningConfigFilename string `protobuf:"bytes,60,opt,name=running_config_filename,json=runningConfigFilename,proto3" json:"running_config_filename,omitempty"` Status DeploymentStatus `protobuf:"varint,30,opt,name=status,proto3,enum=model.DeploymentStatus" json:"status,omitempty"` // The human-readable description why the deployment is at current status. - StatusReason string `protobuf:"bytes,31,opt,name=status_reason,json=statusReason,proto3" json:"status_reason,omitempty"` - Stages []*PipelineStage `protobuf:"bytes,32,rep,name=stages,proto3" json:"stages,omitempty"` - Metadata map[string]string `protobuf:"bytes,33,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + StatusReason string `protobuf:"bytes,31,opt,name=status_reason,json=statusReason,proto3" json:"status_reason,omitempty"` + Stages []*PipelineStage `protobuf:"bytes,32,rep,name=stages,proto3" json:"stages,omitempty"` + // Deprecated: Use metadata_v2 instead in pipedv1. + // + // Deprecated: Do not use. + Metadata map[string]string `protobuf:"bytes,33,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MetadataV2 *DeploymentMetadata `protobuf:"bytes,34,opt,name=metadata_v2,json=metadataV2,proto3" json:"metadata_v2,omitempty"` // Reference to the chain which the deployment belongs to. // Empty means the deployment is a standalone deployment. DeploymentChainId string `protobuf:"bytes,40,opt,name=deployment_chain_id,json=deploymentChainId,proto3" json:"deployment_chain_id,omitempty"` @@ -451,6 +455,7 @@ func (x *Deployment) GetStages() []*PipelineStage { return nil } +// Deprecated: Do not use. func (x *Deployment) GetMetadata() map[string]string { if x != nil { return x.Metadata @@ -458,6 +463,13 @@ func (x *Deployment) GetMetadata() map[string]string { return nil } +func (x *Deployment) GetMetadataV2() *DeploymentMetadata { + if x != nil { + return x.MetadataV2 + } + return nil +} + func (x *Deployment) GetDeploymentChainId() string { if x != nil { return x.DeploymentChainId @@ -837,6 +849,111 @@ func (x *Commit) GetCreatedAt() int64 { return 0 } +type DeploymentMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // shared is metadatas made by piped. + Shared *DeploymentMetadata_KeyValues `protobuf:"bytes,1,opt,name=shared,proto3" json:"shared,omitempty"` + // plugins is metadatas made by plugins. + // The key is used to distinguish which plugin manages the metadata. + Plugins map[string]*DeploymentMetadata_KeyValues `protobuf:"bytes,2,rep,name=plugins,proto3" json:"plugins,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *DeploymentMetadata) Reset() { + *x = DeploymentMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_model_deployment_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeploymentMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeploymentMetadata) ProtoMessage() {} + +func (x *DeploymentMetadata) ProtoReflect() protoreflect.Message { + mi := &file_pkg_model_deployment_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeploymentMetadata.ProtoReflect.Descriptor instead. +func (*DeploymentMetadata) Descriptor() ([]byte, []int) { + return file_pkg_model_deployment_proto_rawDescGZIP(), []int{4} +} + +func (x *DeploymentMetadata) GetShared() *DeploymentMetadata_KeyValues { + if x != nil { + return x.Shared + } + return nil +} + +func (x *DeploymentMetadata) GetPlugins() map[string]*DeploymentMetadata_KeyValues { + if x != nil { + return x.Plugins + } + return nil +} + +type DeploymentMetadata_KeyValues struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyValues map[string]string `protobuf:"bytes,1,rep,name=keyValues,proto3" json:"keyValues,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *DeploymentMetadata_KeyValues) Reset() { + *x = DeploymentMetadata_KeyValues{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_model_deployment_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeploymentMetadata_KeyValues) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeploymentMetadata_KeyValues) ProtoMessage() {} + +func (x *DeploymentMetadata_KeyValues) ProtoReflect() protoreflect.Message { + mi := &file_pkg_model_deployment_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 DeploymentMetadata_KeyValues.ProtoReflect.Descriptor instead. +func (*DeploymentMetadata_KeyValues) Descriptor() ([]byte, []int) { + return file_pkg_model_deployment_proto_rawDescGZIP(), []int{4, 1} +} + +func (x *DeploymentMetadata_KeyValues) GetKeyValues() map[string]string { + if x != nil { + return x.KeyValues + } + return nil +} + var File_pkg_model_deployment_proto protoreflect.FileDescriptor var file_pkg_model_deployment_proto_rawDesc = []byte{ @@ -845,7 +962,7 @@ var file_pkg_model_deployment_proto_rawDesc = []byte{ 0x64, 0x65, 0x6c, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x0a, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x85, 0x0b, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, @@ -903,11 +1020,15 @@ var file_pkg_model_deployment_proto_rawDesc = []byte{ 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x76, 0x32, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, + 0x32, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, @@ -997,37 +1118,63 @@ var file_pkg_model_deployment_proto_rawDesc = []byte{ 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, - 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x2a, 0xc1, 0x01, 0x0a, - 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x45, 0x50, - 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, - 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x04, 0x12, 0x16, - 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, - 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, - 0x2a, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x59, 0x45, 0x54, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, - 0x54, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, - 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, - 0x52, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, - 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, - 0x47, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, - 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x45, 0x44, 0x10, 0x06, 0x2a, 0x4e, - 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0d, 0x0a, - 0x09, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, - 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, - 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x03, 0x42, 0x25, - 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, - 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x92, 0x03, 0x0a, + 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, + 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x12, 0x40, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x1a, 0x5f, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4b, + 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x9b, 0x01, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x50, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0x2a, 0xc1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4c, 0x41, + 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, + 0x0a, 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, + 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x44, + 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x4c, 0x45, 0x44, 0x10, 0x06, 0x2a, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x4e, + 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x59, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, + 0x47, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x43, + 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, + 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x11, + 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, + 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x45, + 0x44, 0x10, 0x06, 0x2a, 0x4e, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, + 0x59, 0x4e, 0x43, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x49, + 0x4e, 0x10, 0x03, 0x42, 0x25, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -1043,41 +1190,50 @@ func file_pkg_model_deployment_proto_rawDescGZIP() []byte { } var file_pkg_model_deployment_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_pkg_model_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_pkg_model_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_pkg_model_deployment_proto_goTypes = []interface{}{ - (DeploymentStatus)(0), // 0: model.DeploymentStatus - (StageStatus)(0), // 1: model.StageStatus - (TriggerKind)(0), // 2: model.TriggerKind - (*Deployment)(nil), // 3: model.Deployment - (*DeploymentTrigger)(nil), // 4: model.DeploymentTrigger - (*PipelineStage)(nil), // 5: model.PipelineStage - (*Commit)(nil), // 6: model.Commit - nil, // 7: model.Deployment.LabelsEntry - nil, // 8: model.Deployment.MetadataEntry - nil, // 9: model.PipelineStage.MetadataEntry - (ApplicationKind)(0), // 10: model.ApplicationKind - (*ApplicationGitPath)(nil), // 11: model.ApplicationGitPath - (*ArtifactVersion)(nil), // 12: model.ArtifactVersion - (SyncStrategy)(0), // 13: model.SyncStrategy + (DeploymentStatus)(0), // 0: model.DeploymentStatus + (StageStatus)(0), // 1: model.StageStatus + (TriggerKind)(0), // 2: model.TriggerKind + (*Deployment)(nil), // 3: model.Deployment + (*DeploymentTrigger)(nil), // 4: model.DeploymentTrigger + (*PipelineStage)(nil), // 5: model.PipelineStage + (*Commit)(nil), // 6: model.Commit + (*DeploymentMetadata)(nil), // 7: model.DeploymentMetadata + nil, // 8: model.Deployment.LabelsEntry + nil, // 9: model.Deployment.MetadataEntry + nil, // 10: model.PipelineStage.MetadataEntry + nil, // 11: model.DeploymentMetadata.PluginsEntry + (*DeploymentMetadata_KeyValues)(nil), // 12: model.DeploymentMetadata.KeyValues + nil, // 13: model.DeploymentMetadata.KeyValues.KeyValuesEntry + (ApplicationKind)(0), // 14: model.ApplicationKind + (*ApplicationGitPath)(nil), // 15: model.ApplicationGitPath + (*ArtifactVersion)(nil), // 16: model.ArtifactVersion + (SyncStrategy)(0), // 17: model.SyncStrategy } var file_pkg_model_deployment_proto_depIdxs = []int32{ - 10, // 0: model.Deployment.kind:type_name -> model.ApplicationKind - 11, // 1: model.Deployment.git_path:type_name -> model.ApplicationGitPath - 7, // 2: model.Deployment.labels:type_name -> model.Deployment.LabelsEntry + 14, // 0: model.Deployment.kind:type_name -> model.ApplicationKind + 15, // 1: model.Deployment.git_path:type_name -> model.ApplicationGitPath + 8, // 2: model.Deployment.labels:type_name -> model.Deployment.LabelsEntry 4, // 3: model.Deployment.trigger:type_name -> model.DeploymentTrigger - 12, // 4: model.Deployment.versions:type_name -> model.ArtifactVersion + 16, // 4: model.Deployment.versions:type_name -> model.ArtifactVersion 0, // 5: model.Deployment.status:type_name -> model.DeploymentStatus 5, // 6: model.Deployment.stages:type_name -> model.PipelineStage - 8, // 7: model.Deployment.metadata:type_name -> model.Deployment.MetadataEntry - 6, // 8: model.DeploymentTrigger.commit:type_name -> model.Commit - 13, // 9: model.DeploymentTrigger.sync_strategy:type_name -> model.SyncStrategy - 1, // 10: model.PipelineStage.status:type_name -> model.StageStatus - 9, // 11: model.PipelineStage.metadata:type_name -> model.PipelineStage.MetadataEntry - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 9, // 7: model.Deployment.metadata:type_name -> model.Deployment.MetadataEntry + 7, // 8: model.Deployment.metadata_v2:type_name -> model.DeploymentMetadata + 6, // 9: model.DeploymentTrigger.commit:type_name -> model.Commit + 17, // 10: model.DeploymentTrigger.sync_strategy:type_name -> model.SyncStrategy + 1, // 11: model.PipelineStage.status:type_name -> model.StageStatus + 10, // 12: model.PipelineStage.metadata:type_name -> model.PipelineStage.MetadataEntry + 12, // 13: model.DeploymentMetadata.shared:type_name -> model.DeploymentMetadata.KeyValues + 11, // 14: model.DeploymentMetadata.plugins:type_name -> model.DeploymentMetadata.PluginsEntry + 12, // 15: model.DeploymentMetadata.PluginsEntry.value:type_name -> model.DeploymentMetadata.KeyValues + 13, // 16: model.DeploymentMetadata.KeyValues.keyValues:type_name -> model.DeploymentMetadata.KeyValues.KeyValuesEntry + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_pkg_model_deployment_proto_init() } @@ -1135,6 +1291,30 @@ func file_pkg_model_deployment_proto_init() { return nil } } + file_pkg_model_deployment_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeploymentMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_model_deployment_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeploymentMetadata_KeyValues); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1142,7 +1322,7 @@ func file_pkg_model_deployment_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_model_deployment_proto_rawDesc, NumEnums: 3, - NumMessages: 7, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/model/deployment.pb.validate.go b/pkg/model/deployment.pb.validate.go index cfde3bbe3d..5ffb685eb3 100644 --- a/pkg/model/deployment.pb.validate.go +++ b/pkg/model/deployment.pb.validate.go @@ -300,6 +300,35 @@ func (m *Deployment) validate(all bool) error { // no validation rules for Metadata + if all { + switch v := interface{}(m.GetMetadataV2()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeploymentValidationError{ + field: "MetadataV2", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeploymentValidationError{ + field: "MetadataV2", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMetadataV2()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DeploymentValidationError{ + field: "MetadataV2", + reason: "embedded message failed validation", + cause: err, + } + } + } + // no validation rules for DeploymentChainId // no validation rules for DeploymentChainBlockIndex @@ -911,3 +940,285 @@ var _ interface { Cause() error ErrorName() string } = CommitValidationError{} + +// Validate checks the field values on DeploymentMetadata 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 *DeploymentMetadata) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeploymentMetadata 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 +// DeploymentMetadataMultiError, or nil if none found. +func (m *DeploymentMetadata) ValidateAll() error { + return m.validate(true) +} + +func (m *DeploymentMetadata) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetShared()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeploymentMetadataValidationError{ + field: "Shared", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeploymentMetadataValidationError{ + field: "Shared", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetShared()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DeploymentMetadataValidationError{ + field: "Shared", + reason: "embedded message failed validation", + cause: err, + } + } + } + + { + sorted_keys := make([]string, len(m.GetPlugins())) + i := 0 + for key := range m.GetPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPlugins()[key] + _ = val + + // no validation rules for Plugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeploymentMetadataValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeploymentMetadataValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DeploymentMetadataValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + } + + if len(errors) > 0 { + return DeploymentMetadataMultiError(errors) + } + + return nil +} + +// DeploymentMetadataMultiError is an error wrapping multiple validation errors +// returned by DeploymentMetadata.ValidateAll() if the designated constraints +// aren't met. +type DeploymentMetadataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeploymentMetadataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeploymentMetadataMultiError) AllErrors() []error { return m } + +// DeploymentMetadataValidationError is the validation error returned by +// DeploymentMetadata.Validate if the designated constraints aren't met. +type DeploymentMetadataValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeploymentMetadataValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeploymentMetadataValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeploymentMetadataValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeploymentMetadataValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeploymentMetadataValidationError) ErrorName() string { + return "DeploymentMetadataValidationError" +} + +// Error satisfies the builtin error interface +func (e DeploymentMetadataValidationError) 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 %sDeploymentMetadata.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeploymentMetadataValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeploymentMetadataValidationError{} + +// Validate checks the field values on DeploymentMetadata_KeyValues 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 *DeploymentMetadata_KeyValues) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeploymentMetadata_KeyValues 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 +// DeploymentMetadata_KeyValuesMultiError, or nil if none found. +func (m *DeploymentMetadata_KeyValues) ValidateAll() error { + return m.validate(true) +} + +func (m *DeploymentMetadata_KeyValues) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for KeyValues + + if len(errors) > 0 { + return DeploymentMetadata_KeyValuesMultiError(errors) + } + + return nil +} + +// DeploymentMetadata_KeyValuesMultiError is an error wrapping multiple +// validation errors returned by DeploymentMetadata_KeyValues.ValidateAll() if +// the designated constraints aren't met. +type DeploymentMetadata_KeyValuesMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeploymentMetadata_KeyValuesMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeploymentMetadata_KeyValuesMultiError) AllErrors() []error { return m } + +// DeploymentMetadata_KeyValuesValidationError is the validation error returned +// by DeploymentMetadata_KeyValues.Validate if the designated constraints +// aren't met. +type DeploymentMetadata_KeyValuesValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeploymentMetadata_KeyValuesValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeploymentMetadata_KeyValuesValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeploymentMetadata_KeyValuesValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeploymentMetadata_KeyValuesValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeploymentMetadata_KeyValuesValidationError) ErrorName() string { + return "DeploymentMetadata_KeyValuesValidationError" +} + +// Error satisfies the builtin error interface +func (e DeploymentMetadata_KeyValuesValidationError) 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 %sDeploymentMetadata_KeyValues.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeploymentMetadata_KeyValuesValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeploymentMetadata_KeyValuesValidationError{} diff --git a/pkg/model/deployment.proto b/pkg/model/deployment.proto index 3fc8910014..c714b32b93 100644 --- a/pkg/model/deployment.proto +++ b/pkg/model/deployment.proto @@ -96,7 +96,9 @@ message Deployment { // The human-readable description why the deployment is at current status. string status_reason = 31; repeated PipelineStage stages = 32; - map metadata = 33; + // Deprecated: Use metadata_v2 instead in pipedv1. + map metadata = 33 [deprecated=true]; + DeploymentMetadata metadata_v2 = 34; // Reference to the chain which the deployment belongs to. // Empty means the deployment is a standalone deployment. @@ -157,3 +159,15 @@ message Commit { string url = 6; int64 created_at = 14 [(validate.rules).int64.gt = 0]; } + +message DeploymentMetadata { + // shared is metadatas made by piped. + KeyValues shared = 1; + // plugins is metadatas made by plugins. + // The key is used to distinguish which plugin manages the metadata. + map plugins = 2; + + message KeyValues{ + map keyValues = 1; + } +} diff --git a/pkg/plugin/pipedservice/service.pb.go b/pkg/plugin/pipedservice/service.pb.go index 9bbc98eb40..ae6ff7563e 100644 --- a/pkg/plugin/pipedservice/service.pb.go +++ b/pkg/plugin/pipedservice/service.pb.go @@ -812,17 +812,20 @@ func (*PutStageMetadataMultiResponse) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{13} } -type GetDeploymentMetadataRequest struct { +type GetDeploymentPluginMetadataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` } -func (x *GetDeploymentMetadataRequest) Reset() { - *x = GetDeploymentMetadataRequest{} +func (x *GetDeploymentPluginMetadataRequest) Reset() { + *x = GetDeploymentPluginMetadataRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -830,13 +833,13 @@ func (x *GetDeploymentMetadataRequest) Reset() { } } -func (x *GetDeploymentMetadataRequest) String() string { +func (x *GetDeploymentPluginMetadataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDeploymentMetadataRequest) ProtoMessage() {} +func (*GetDeploymentPluginMetadataRequest) ProtoMessage() {} -func (x *GetDeploymentMetadataRequest) ProtoReflect() protoreflect.Message { +func (x *GetDeploymentPluginMetadataRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -848,26 +851,33 @@ func (x *GetDeploymentMetadataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDeploymentMetadataRequest.ProtoReflect.Descriptor instead. -func (*GetDeploymentMetadataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetDeploymentPluginMetadataRequest.ProtoReflect.Descriptor instead. +func (*GetDeploymentPluginMetadataRequest) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{14} } -func (x *GetDeploymentMetadataRequest) GetDeploymentId() string { +func (x *GetDeploymentPluginMetadataRequest) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } -func (x *GetDeploymentMetadataRequest) GetKey() string { +func (x *GetDeploymentPluginMetadataRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *GetDeploymentPluginMetadataRequest) GetKey() string { if x != nil { return x.Key } return "" } -type GetDeploymentMetadataResponse struct { +type GetDeploymentPluginMetadataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -876,8 +886,8 @@ type GetDeploymentMetadataResponse struct { Found bool `protobuf:"varint,2,opt,name=found,proto3" json:"found,omitempty"` } -func (x *GetDeploymentMetadataResponse) Reset() { - *x = GetDeploymentMetadataResponse{} +func (x *GetDeploymentPluginMetadataResponse) Reset() { + *x = GetDeploymentPluginMetadataResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -885,13 +895,13 @@ func (x *GetDeploymentMetadataResponse) Reset() { } } -func (x *GetDeploymentMetadataResponse) String() string { +func (x *GetDeploymentPluginMetadataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDeploymentMetadataResponse) ProtoMessage() {} +func (*GetDeploymentPluginMetadataResponse) ProtoMessage() {} -func (x *GetDeploymentMetadataResponse) ProtoReflect() protoreflect.Message { +func (x *GetDeploymentPluginMetadataResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -903,37 +913,40 @@ func (x *GetDeploymentMetadataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDeploymentMetadataResponse.ProtoReflect.Descriptor instead. -func (*GetDeploymentMetadataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetDeploymentPluginMetadataResponse.ProtoReflect.Descriptor instead. +func (*GetDeploymentPluginMetadataResponse) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{15} } -func (x *GetDeploymentMetadataResponse) GetValue() string { +func (x *GetDeploymentPluginMetadataResponse) GetValue() string { if x != nil { return x.Value } return "" } -func (x *GetDeploymentMetadataResponse) GetFound() bool { +func (x *GetDeploymentPluginMetadataResponse) GetFound() bool { if x != nil { return x.Found } return false } -type PutDeploymentMetadataRequest struct { +type PutDeploymentPluginMetadataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` } -func (x *PutDeploymentMetadataRequest) Reset() { - *x = PutDeploymentMetadataRequest{} +func (x *PutDeploymentPluginMetadataRequest) Reset() { + *x = PutDeploymentPluginMetadataRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -941,13 +954,13 @@ func (x *PutDeploymentMetadataRequest) Reset() { } } -func (x *PutDeploymentMetadataRequest) String() string { +func (x *PutDeploymentPluginMetadataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PutDeploymentMetadataRequest) ProtoMessage() {} +func (*PutDeploymentPluginMetadataRequest) ProtoMessage() {} -func (x *PutDeploymentMetadataRequest) ProtoReflect() protoreflect.Message { +func (x *PutDeploymentPluginMetadataRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -959,40 +972,47 @@ func (x *PutDeploymentMetadataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PutDeploymentMetadataRequest.ProtoReflect.Descriptor instead. -func (*PutDeploymentMetadataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PutDeploymentPluginMetadataRequest.ProtoReflect.Descriptor instead. +func (*PutDeploymentPluginMetadataRequest) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{16} } -func (x *PutDeploymentMetadataRequest) GetDeploymentId() string { +func (x *PutDeploymentPluginMetadataRequest) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } -func (x *PutDeploymentMetadataRequest) GetKey() string { +func (x *PutDeploymentPluginMetadataRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *PutDeploymentPluginMetadataRequest) GetKey() string { if x != nil { return x.Key } return "" } -func (x *PutDeploymentMetadataRequest) GetValue() string { +func (x *PutDeploymentPluginMetadataRequest) GetValue() string { if x != nil { return x.Value } return "" } -type PutDeploymentMetadataResponse struct { +type PutDeploymentPluginMetadataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PutDeploymentMetadataResponse) Reset() { - *x = PutDeploymentMetadataResponse{} +func (x *PutDeploymentPluginMetadataResponse) Reset() { + *x = PutDeploymentPluginMetadataResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1000,13 +1020,13 @@ func (x *PutDeploymentMetadataResponse) Reset() { } } -func (x *PutDeploymentMetadataResponse) String() string { +func (x *PutDeploymentPluginMetadataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PutDeploymentMetadataResponse) ProtoMessage() {} +func (*PutDeploymentPluginMetadataResponse) ProtoMessage() {} -func (x *PutDeploymentMetadataResponse) ProtoReflect() protoreflect.Message { +func (x *PutDeploymentPluginMetadataResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1018,22 +1038,25 @@ func (x *PutDeploymentMetadataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PutDeploymentMetadataResponse.ProtoReflect.Descriptor instead. -func (*PutDeploymentMetadataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PutDeploymentPluginMetadataResponse.ProtoReflect.Descriptor instead. +func (*PutDeploymentPluginMetadataResponse) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{17} } -type PutDeploymentMetadataMultiRequest struct { +type PutDeploymentPluginMetadataMultiRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *PutDeploymentMetadataMultiRequest) Reset() { - *x = PutDeploymentMetadataMultiRequest{} +func (x *PutDeploymentPluginMetadataMultiRequest) Reset() { + *x = PutDeploymentPluginMetadataMultiRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1041,13 +1064,13 @@ func (x *PutDeploymentMetadataMultiRequest) Reset() { } } -func (x *PutDeploymentMetadataMultiRequest) String() string { +func (x *PutDeploymentPluginMetadataMultiRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PutDeploymentMetadataMultiRequest) ProtoMessage() {} +func (*PutDeploymentPluginMetadataMultiRequest) ProtoMessage() {} -func (x *PutDeploymentMetadataMultiRequest) ProtoReflect() protoreflect.Message { +func (x *PutDeploymentPluginMetadataMultiRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1059,33 +1082,40 @@ func (x *PutDeploymentMetadataMultiRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PutDeploymentMetadataMultiRequest.ProtoReflect.Descriptor instead. -func (*PutDeploymentMetadataMultiRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PutDeploymentPluginMetadataMultiRequest.ProtoReflect.Descriptor instead. +func (*PutDeploymentPluginMetadataMultiRequest) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{18} } -func (x *PutDeploymentMetadataMultiRequest) GetDeploymentId() string { +func (x *PutDeploymentPluginMetadataMultiRequest) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } -func (x *PutDeploymentMetadataMultiRequest) GetMetadata() map[string]string { +func (x *PutDeploymentPluginMetadataMultiRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *PutDeploymentPluginMetadataMultiRequest) GetMetadata() map[string]string { if x != nil { return x.Metadata } return nil } -type PutDeploymentMetadataMultiResponse struct { +type PutDeploymentPluginMetadataMultiResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PutDeploymentMetadataMultiResponse) Reset() { - *x = PutDeploymentMetadataMultiResponse{} +func (x *PutDeploymentPluginMetadataMultiResponse) Reset() { + *x = PutDeploymentPluginMetadataMultiResponse{} if protoimpl.UnsafeEnabled { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1093,13 +1123,13 @@ func (x *PutDeploymentMetadataMultiResponse) Reset() { } } -func (x *PutDeploymentMetadataMultiResponse) String() string { +func (x *PutDeploymentPluginMetadataMultiResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PutDeploymentMetadataMultiResponse) ProtoMessage() {} +func (*PutDeploymentPluginMetadataMultiResponse) ProtoMessage() {} -func (x *PutDeploymentMetadataMultiResponse) ProtoReflect() protoreflect.Message { +func (x *PutDeploymentPluginMetadataMultiResponse) ProtoReflect() protoreflect.Message { mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1111,11 +1141,121 @@ func (x *PutDeploymentMetadataMultiResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PutDeploymentMetadataMultiResponse.ProtoReflect.Descriptor instead. -func (*PutDeploymentMetadataMultiResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PutDeploymentPluginMetadataMultiResponse.ProtoReflect.Descriptor instead. +func (*PutDeploymentPluginMetadataMultiResponse) Descriptor() ([]byte, []int) { return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{19} } +type GetDeploymentSharedMetadataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeploymentId string `protobuf:"bytes,1,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *GetDeploymentSharedMetadataRequest) Reset() { + *x = GetDeploymentSharedMetadataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetDeploymentSharedMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDeploymentSharedMetadataRequest) ProtoMessage() {} + +func (x *GetDeploymentSharedMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetDeploymentSharedMetadataRequest.ProtoReflect.Descriptor instead. +func (*GetDeploymentSharedMetadataRequest) Descriptor() ([]byte, []int) { + return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{20} +} + +func (x *GetDeploymentSharedMetadataRequest) GetDeploymentId() string { + if x != nil { + return x.DeploymentId + } + return "" +} + +func (x *GetDeploymentSharedMetadataRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +type GetDeploymentSharedMetadataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Found bool `protobuf:"varint,2,opt,name=found,proto3" json:"found,omitempty"` +} + +func (x *GetDeploymentSharedMetadataResponse) Reset() { + *x = GetDeploymentSharedMetadataResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetDeploymentSharedMetadataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDeploymentSharedMetadataResponse) ProtoMessage() {} + +func (x *GetDeploymentSharedMetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_plugin_pipedservice_service_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetDeploymentSharedMetadataResponse.ProtoReflect.Descriptor instead. +func (*GetDeploymentSharedMetadataResponse) Descriptor() ([]byte, []int) { + return file_pkg_plugin_pipedservice_service_proto_rawDescGZIP(), []int{21} +} + +func (x *GetDeploymentSharedMetadataResponse) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *GetDeploymentSharedMetadataResponse) GetFound() bool { + if x != nil { + return x.Found + } + return false +} + var File_pkg_plugin_pipedservice_service_proto protoreflect.FileDescriptor var file_pkg_plugin_pipedservice_service_proto_rawDesc = []byte{ @@ -1220,121 +1360,156 @@ var file_pkg_plugin_pipedservice_service_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x22, 0x4b, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x7d, 0x0a, - 0x1c, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, - 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1f, 0x0a, 0x1d, - 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xef, 0x01, - 0x0a, 0x21, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x5f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, - 0x24, 0x0a, 0x22, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf6, 0x08, 0x0a, 0x0d, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, - 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0f, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x2a, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa2, 0x01, 0x0a, 0x21, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, - 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3c, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, - 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, + 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x51, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x22, + 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x50, + 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xa5, 0x02, 0x0a, 0x27, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, + 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0b, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, + 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, + 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x2a, 0x0a, 0x28, 0x50, 0x75, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x51, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0xc1, 0x0a, 0x0a, 0x0d, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x0b, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x54, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0f, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, + 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, - 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa2, 0x01, 0x0a, 0x21, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, + 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4c, + 0x6f, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x6f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, - 0x10, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x6f, 0x0a, 0x10, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, - 0x0a, 0x15, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, - 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, + 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x90, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, - 0x0a, 0x15, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, - 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, - 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, - 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x35, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x1b, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, - 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, - 0x65, 0x2d, 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x20, 0x50, 0x75, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x3b, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, + 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, + 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x69, 0x70, 0x65, 0x64, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x2d, + 0x63, 0x64, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x63, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x64, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1349,7 +1524,7 @@ func file_pkg_plugin_pipedservice_service_proto_rawDescGZIP() []byte { return file_pkg_plugin_pipedservice_service_proto_rawDescData } -var file_pkg_plugin_pipedservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_pkg_plugin_pipedservice_service_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_pkg_plugin_pipedservice_service_proto_goTypes = []interface{}{ (*DecryptSecretRequest)(nil), // 0: grpc.piped.service.DecryptSecretRequest (*DecryptSecretResponse)(nil), // 1: grpc.piped.service.DecryptSecretResponse @@ -1365,41 +1540,45 @@ var file_pkg_plugin_pipedservice_service_proto_goTypes = []interface{}{ (*PutStageMetadataResponse)(nil), // 11: grpc.piped.service.PutStageMetadataResponse (*PutStageMetadataMultiRequest)(nil), // 12: grpc.piped.service.PutStageMetadataMultiRequest (*PutStageMetadataMultiResponse)(nil), // 13: grpc.piped.service.PutStageMetadataMultiResponse - (*GetDeploymentMetadataRequest)(nil), // 14: grpc.piped.service.GetDeploymentMetadataRequest - (*GetDeploymentMetadataResponse)(nil), // 15: grpc.piped.service.GetDeploymentMetadataResponse - (*PutDeploymentMetadataRequest)(nil), // 16: grpc.piped.service.PutDeploymentMetadataRequest - (*PutDeploymentMetadataResponse)(nil), // 17: grpc.piped.service.PutDeploymentMetadataResponse - (*PutDeploymentMetadataMultiRequest)(nil), // 18: grpc.piped.service.PutDeploymentMetadataMultiRequest - (*PutDeploymentMetadataMultiResponse)(nil), // 19: grpc.piped.service.PutDeploymentMetadataMultiResponse - nil, // 20: grpc.piped.service.PutStageMetadataMultiRequest.MetadataEntry - nil, // 21: grpc.piped.service.PutDeploymentMetadataMultiRequest.MetadataEntry - (*model.LogBlock)(nil), // 22: model.LogBlock + (*GetDeploymentPluginMetadataRequest)(nil), // 14: grpc.piped.service.GetDeploymentPluginMetadataRequest + (*GetDeploymentPluginMetadataResponse)(nil), // 15: grpc.piped.service.GetDeploymentPluginMetadataResponse + (*PutDeploymentPluginMetadataRequest)(nil), // 16: grpc.piped.service.PutDeploymentPluginMetadataRequest + (*PutDeploymentPluginMetadataResponse)(nil), // 17: grpc.piped.service.PutDeploymentPluginMetadataResponse + (*PutDeploymentPluginMetadataMultiRequest)(nil), // 18: grpc.piped.service.PutDeploymentPluginMetadataMultiRequest + (*PutDeploymentPluginMetadataMultiResponse)(nil), // 19: grpc.piped.service.PutDeploymentPluginMetadataMultiResponse + (*GetDeploymentSharedMetadataRequest)(nil), // 20: grpc.piped.service.GetDeploymentSharedMetadataRequest + (*GetDeploymentSharedMetadataResponse)(nil), // 21: grpc.piped.service.GetDeploymentSharedMetadataResponse + nil, // 22: grpc.piped.service.PutStageMetadataMultiRequest.MetadataEntry + nil, // 23: grpc.piped.service.PutDeploymentPluginMetadataMultiRequest.MetadataEntry + (*model.LogBlock)(nil), // 24: model.LogBlock } var file_pkg_plugin_pipedservice_service_proto_depIdxs = []int32{ - 22, // 0: grpc.piped.service.ReportStageLogsRequest.blocks:type_name -> model.LogBlock - 22, // 1: grpc.piped.service.ReportStageLogsFromLastCheckpointRequest.blocks:type_name -> model.LogBlock - 20, // 2: grpc.piped.service.PutStageMetadataMultiRequest.metadata:type_name -> grpc.piped.service.PutStageMetadataMultiRequest.MetadataEntry - 21, // 3: grpc.piped.service.PutDeploymentMetadataMultiRequest.metadata:type_name -> grpc.piped.service.PutDeploymentMetadataMultiRequest.MetadataEntry + 24, // 0: grpc.piped.service.ReportStageLogsRequest.blocks:type_name -> model.LogBlock + 24, // 1: grpc.piped.service.ReportStageLogsFromLastCheckpointRequest.blocks:type_name -> model.LogBlock + 22, // 2: grpc.piped.service.PutStageMetadataMultiRequest.metadata:type_name -> grpc.piped.service.PutStageMetadataMultiRequest.MetadataEntry + 23, // 3: grpc.piped.service.PutDeploymentPluginMetadataMultiRequest.metadata:type_name -> grpc.piped.service.PutDeploymentPluginMetadataMultiRequest.MetadataEntry 2, // 4: grpc.piped.service.PluginService.InstallTool:input_type -> grpc.piped.service.InstallToolRequest 4, // 5: grpc.piped.service.PluginService.ReportStageLogs:input_type -> grpc.piped.service.ReportStageLogsRequest 6, // 6: grpc.piped.service.PluginService.ReportStageLogsFromLastCheckpoint:input_type -> grpc.piped.service.ReportStageLogsFromLastCheckpointRequest 8, // 7: grpc.piped.service.PluginService.GetStageMetadata:input_type -> grpc.piped.service.GetStageMetadataRequest 10, // 8: grpc.piped.service.PluginService.PutStageMetadata:input_type -> grpc.piped.service.PutStageMetadataRequest 12, // 9: grpc.piped.service.PluginService.PutStageMetadataMulti:input_type -> grpc.piped.service.PutStageMetadataMultiRequest - 14, // 10: grpc.piped.service.PluginService.GetDeploymentMetadata:input_type -> grpc.piped.service.GetDeploymentMetadataRequest - 16, // 11: grpc.piped.service.PluginService.PutDeploymentMetadata:input_type -> grpc.piped.service.PutDeploymentMetadataRequest - 18, // 12: grpc.piped.service.PluginService.PutDeploymentMetadataMulti:input_type -> grpc.piped.service.PutDeploymentMetadataMultiRequest - 3, // 13: grpc.piped.service.PluginService.InstallTool:output_type -> grpc.piped.service.InstallToolResponse - 5, // 14: grpc.piped.service.PluginService.ReportStageLogs:output_type -> grpc.piped.service.ReportStageLogsResponse - 7, // 15: grpc.piped.service.PluginService.ReportStageLogsFromLastCheckpoint:output_type -> grpc.piped.service.ReportStageLogsFromLastCheckpointResponse - 9, // 16: grpc.piped.service.PluginService.GetStageMetadata:output_type -> grpc.piped.service.GetStageMetadataResponse - 11, // 17: grpc.piped.service.PluginService.PutStageMetadata:output_type -> grpc.piped.service.PutStageMetadataResponse - 13, // 18: grpc.piped.service.PluginService.PutStageMetadataMulti:output_type -> grpc.piped.service.PutStageMetadataMultiResponse - 15, // 19: grpc.piped.service.PluginService.GetDeploymentMetadata:output_type -> grpc.piped.service.GetDeploymentMetadataResponse - 17, // 20: grpc.piped.service.PluginService.PutDeploymentMetadata:output_type -> grpc.piped.service.PutDeploymentMetadataResponse - 19, // 21: grpc.piped.service.PluginService.PutDeploymentMetadataMulti:output_type -> grpc.piped.service.PutDeploymentMetadataMultiResponse - 13, // [13:22] is the sub-list for method output_type - 4, // [4:13] is the sub-list for method input_type + 14, // 10: grpc.piped.service.PluginService.GetDeploymentPluginMetadata:input_type -> grpc.piped.service.GetDeploymentPluginMetadataRequest + 16, // 11: grpc.piped.service.PluginService.PutDeploymentPluginMetadata:input_type -> grpc.piped.service.PutDeploymentPluginMetadataRequest + 18, // 12: grpc.piped.service.PluginService.PutDeploymentPluginMetadataMulti:input_type -> grpc.piped.service.PutDeploymentPluginMetadataMultiRequest + 20, // 13: grpc.piped.service.PluginService.GetDeploymentSharedMetadata:input_type -> grpc.piped.service.GetDeploymentSharedMetadataRequest + 3, // 14: grpc.piped.service.PluginService.InstallTool:output_type -> grpc.piped.service.InstallToolResponse + 5, // 15: grpc.piped.service.PluginService.ReportStageLogs:output_type -> grpc.piped.service.ReportStageLogsResponse + 7, // 16: grpc.piped.service.PluginService.ReportStageLogsFromLastCheckpoint:output_type -> grpc.piped.service.ReportStageLogsFromLastCheckpointResponse + 9, // 17: grpc.piped.service.PluginService.GetStageMetadata:output_type -> grpc.piped.service.GetStageMetadataResponse + 11, // 18: grpc.piped.service.PluginService.PutStageMetadata:output_type -> grpc.piped.service.PutStageMetadataResponse + 13, // 19: grpc.piped.service.PluginService.PutStageMetadataMulti:output_type -> grpc.piped.service.PutStageMetadataMultiResponse + 15, // 20: grpc.piped.service.PluginService.GetDeploymentPluginMetadata:output_type -> grpc.piped.service.GetDeploymentPluginMetadataResponse + 17, // 21: grpc.piped.service.PluginService.PutDeploymentPluginMetadata:output_type -> grpc.piped.service.PutDeploymentPluginMetadataResponse + 19, // 22: grpc.piped.service.PluginService.PutDeploymentPluginMetadataMulti:output_type -> grpc.piped.service.PutDeploymentPluginMetadataMultiResponse + 21, // 23: grpc.piped.service.PluginService.GetDeploymentSharedMetadata:output_type -> grpc.piped.service.GetDeploymentSharedMetadataResponse + 14, // [14:24] is the sub-list for method output_type + 4, // [4:14] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name 4, // [4:4] is the sub-list for extension extendee 0, // [0:4] is the sub-list for field type_name @@ -1580,7 +1759,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDeploymentMetadataRequest); i { + switch v := v.(*GetDeploymentPluginMetadataRequest); i { case 0: return &v.state case 1: @@ -1592,7 +1771,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDeploymentMetadataResponse); i { + switch v := v.(*GetDeploymentPluginMetadataResponse); i { case 0: return &v.state case 1: @@ -1604,7 +1783,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutDeploymentMetadataRequest); i { + switch v := v.(*PutDeploymentPluginMetadataRequest); i { case 0: return &v.state case 1: @@ -1616,7 +1795,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutDeploymentMetadataResponse); i { + switch v := v.(*PutDeploymentPluginMetadataResponse); i { case 0: return &v.state case 1: @@ -1628,7 +1807,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutDeploymentMetadataMultiRequest); i { + switch v := v.(*PutDeploymentPluginMetadataMultiRequest); i { case 0: return &v.state case 1: @@ -1640,7 +1819,31 @@ func file_pkg_plugin_pipedservice_service_proto_init() { } } file_pkg_plugin_pipedservice_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutDeploymentMetadataMultiResponse); i { + switch v := v.(*PutDeploymentPluginMetadataMultiResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_plugin_pipedservice_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDeploymentSharedMetadataRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_plugin_pipedservice_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDeploymentSharedMetadataResponse); i { case 0: return &v.state case 1: @@ -1658,7 +1861,7 @@ func file_pkg_plugin_pipedservice_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_plugin_pipedservice_service_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/plugin/pipedservice/service.pb.validate.go b/pkg/plugin/pipedservice/service.pb.validate.go index 1a44cb1933..3ed98d320c 100644 --- a/pkg/plugin/pipedservice/service.pb.validate.go +++ b/pkg/plugin/pipedservice/service.pb.validate.go @@ -1735,22 +1735,23 @@ var _ interface { ErrorName() string } = PutStageMetadataMultiResponseValidationError{} -// Validate checks the field values on GetDeploymentMetadataRequest 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 *GetDeploymentMetadataRequest) Validate() error { +// Validate checks the field values on GetDeploymentPluginMetadataRequest 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 *GetDeploymentPluginMetadataRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on GetDeploymentMetadataRequest 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 -// GetDeploymentMetadataRequestMultiError, or nil if none found. -func (m *GetDeploymentMetadataRequest) ValidateAll() error { +// ValidateAll checks the field values on GetDeploymentPluginMetadataRequest +// 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 +// GetDeploymentPluginMetadataRequestMultiError, or nil if none found. +func (m *GetDeploymentPluginMetadataRequest) ValidateAll() error { return m.validate(true) } -func (m *GetDeploymentMetadataRequest) validate(all bool) error { +func (m *GetDeploymentPluginMetadataRequest) validate(all bool) error { if m == nil { return nil } @@ -1758,7 +1759,7 @@ func (m *GetDeploymentMetadataRequest) validate(all bool) error { var errors []error if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { - err := GetDeploymentMetadataRequestValidationError{ + err := GetDeploymentPluginMetadataRequestValidationError{ field: "DeploymentId", reason: "value length must be at least 1 runes", } @@ -1768,8 +1769,10 @@ func (m *GetDeploymentMetadataRequest) validate(all bool) error { errors = append(errors, err) } + // no validation rules for PluginName + if utf8.RuneCountInString(m.GetKey()) < 1 { - err := GetDeploymentMetadataRequestValidationError{ + err := GetDeploymentPluginMetadataRequestValidationError{ field: "Key", reason: "value length must be at least 1 runes", } @@ -1780,19 +1783,20 @@ func (m *GetDeploymentMetadataRequest) validate(all bool) error { } if len(errors) > 0 { - return GetDeploymentMetadataRequestMultiError(errors) + return GetDeploymentPluginMetadataRequestMultiError(errors) } return nil } -// GetDeploymentMetadataRequestMultiError is an error wrapping multiple -// validation errors returned by GetDeploymentMetadataRequest.ValidateAll() if -// the designated constraints aren't met. -type GetDeploymentMetadataRequestMultiError []error +// GetDeploymentPluginMetadataRequestMultiError is an error wrapping multiple +// validation errors returned by +// GetDeploymentPluginMetadataRequest.ValidateAll() if the designated +// constraints aren't met. +type GetDeploymentPluginMetadataRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m GetDeploymentMetadataRequestMultiError) Error() string { +func (m GetDeploymentPluginMetadataRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1801,12 +1805,12 @@ func (m GetDeploymentMetadataRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m GetDeploymentMetadataRequestMultiError) AllErrors() []error { return m } +func (m GetDeploymentPluginMetadataRequestMultiError) AllErrors() []error { return m } -// GetDeploymentMetadataRequestValidationError is the validation error returned -// by GetDeploymentMetadataRequest.Validate if the designated constraints -// aren't met. -type GetDeploymentMetadataRequestValidationError struct { +// GetDeploymentPluginMetadataRequestValidationError is the validation error +// returned by GetDeploymentPluginMetadataRequest.Validate if the designated +// constraints aren't met. +type GetDeploymentPluginMetadataRequestValidationError struct { field string reason string cause error @@ -1814,24 +1818,24 @@ type GetDeploymentMetadataRequestValidationError struct { } // Field function returns field value. -func (e GetDeploymentMetadataRequestValidationError) Field() string { return e.field } +func (e GetDeploymentPluginMetadataRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e GetDeploymentMetadataRequestValidationError) Reason() string { return e.reason } +func (e GetDeploymentPluginMetadataRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e GetDeploymentMetadataRequestValidationError) Cause() error { return e.cause } +func (e GetDeploymentPluginMetadataRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e GetDeploymentMetadataRequestValidationError) Key() bool { return e.key } +func (e GetDeploymentPluginMetadataRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e GetDeploymentMetadataRequestValidationError) ErrorName() string { - return "GetDeploymentMetadataRequestValidationError" +func (e GetDeploymentPluginMetadataRequestValidationError) ErrorName() string { + return "GetDeploymentPluginMetadataRequestValidationError" } // Error satisfies the builtin error interface -func (e GetDeploymentMetadataRequestValidationError) Error() string { +func (e GetDeploymentPluginMetadataRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1843,14 +1847,14 @@ func (e GetDeploymentMetadataRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sGetDeploymentMetadataRequest.%s: %s%s", + "invalid %sGetDeploymentPluginMetadataRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = GetDeploymentMetadataRequestValidationError{} +var _ error = GetDeploymentPluginMetadataRequestValidationError{} var _ interface { Field() string @@ -1858,24 +1862,25 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = GetDeploymentMetadataRequestValidationError{} +} = GetDeploymentPluginMetadataRequestValidationError{} -// Validate checks the field values on GetDeploymentMetadataResponse 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 *GetDeploymentMetadataResponse) Validate() error { +// Validate checks the field values on GetDeploymentPluginMetadataResponse 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 *GetDeploymentPluginMetadataResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on GetDeploymentMetadataResponse 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 -// GetDeploymentMetadataResponseMultiError, or nil if none found. -func (m *GetDeploymentMetadataResponse) ValidateAll() error { +// ValidateAll checks the field values on GetDeploymentPluginMetadataResponse +// 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 +// GetDeploymentPluginMetadataResponseMultiError, or nil if none found. +func (m *GetDeploymentPluginMetadataResponse) ValidateAll() error { return m.validate(true) } -func (m *GetDeploymentMetadataResponse) validate(all bool) error { +func (m *GetDeploymentPluginMetadataResponse) validate(all bool) error { if m == nil { return nil } @@ -1887,19 +1892,20 @@ func (m *GetDeploymentMetadataResponse) validate(all bool) error { // no validation rules for Found if len(errors) > 0 { - return GetDeploymentMetadataResponseMultiError(errors) + return GetDeploymentPluginMetadataResponseMultiError(errors) } return nil } -// GetDeploymentMetadataResponseMultiError is an error wrapping multiple -// validation errors returned by GetDeploymentMetadataResponse.ValidateAll() -// if the designated constraints aren't met. -type GetDeploymentMetadataResponseMultiError []error +// GetDeploymentPluginMetadataResponseMultiError is an error wrapping multiple +// validation errors returned by +// GetDeploymentPluginMetadataResponse.ValidateAll() if the designated +// constraints aren't met. +type GetDeploymentPluginMetadataResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m GetDeploymentMetadataResponseMultiError) Error() string { +func (m GetDeploymentPluginMetadataResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -1908,12 +1914,12 @@ func (m GetDeploymentMetadataResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m GetDeploymentMetadataResponseMultiError) AllErrors() []error { return m } +func (m GetDeploymentPluginMetadataResponseMultiError) AllErrors() []error { return m } -// GetDeploymentMetadataResponseValidationError is the validation error -// returned by GetDeploymentMetadataResponse.Validate if the designated +// GetDeploymentPluginMetadataResponseValidationError is the validation error +// returned by GetDeploymentPluginMetadataResponse.Validate if the designated // constraints aren't met. -type GetDeploymentMetadataResponseValidationError struct { +type GetDeploymentPluginMetadataResponseValidationError struct { field string reason string cause error @@ -1921,24 +1927,24 @@ type GetDeploymentMetadataResponseValidationError struct { } // Field function returns field value. -func (e GetDeploymentMetadataResponseValidationError) Field() string { return e.field } +func (e GetDeploymentPluginMetadataResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e GetDeploymentMetadataResponseValidationError) Reason() string { return e.reason } +func (e GetDeploymentPluginMetadataResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e GetDeploymentMetadataResponseValidationError) Cause() error { return e.cause } +func (e GetDeploymentPluginMetadataResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e GetDeploymentMetadataResponseValidationError) Key() bool { return e.key } +func (e GetDeploymentPluginMetadataResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e GetDeploymentMetadataResponseValidationError) ErrorName() string { - return "GetDeploymentMetadataResponseValidationError" +func (e GetDeploymentPluginMetadataResponseValidationError) ErrorName() string { + return "GetDeploymentPluginMetadataResponseValidationError" } // Error satisfies the builtin error interface -func (e GetDeploymentMetadataResponseValidationError) Error() string { +func (e GetDeploymentPluginMetadataResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1950,14 +1956,14 @@ func (e GetDeploymentMetadataResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sGetDeploymentMetadataResponse.%s: %s%s", + "invalid %sGetDeploymentPluginMetadataResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = GetDeploymentMetadataResponseValidationError{} +var _ error = GetDeploymentPluginMetadataResponseValidationError{} var _ interface { Field() string @@ -1965,24 +1971,25 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = GetDeploymentMetadataResponseValidationError{} +} = GetDeploymentPluginMetadataResponseValidationError{} -// Validate checks the field values on PutDeploymentMetadataRequest 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 *PutDeploymentMetadataRequest) Validate() error { +// Validate checks the field values on PutDeploymentPluginMetadataRequest 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 *PutDeploymentPluginMetadataRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutDeploymentMetadataRequest 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 -// PutDeploymentMetadataRequestMultiError, or nil if none found. -func (m *PutDeploymentMetadataRequest) ValidateAll() error { +// ValidateAll checks the field values on PutDeploymentPluginMetadataRequest +// 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 +// PutDeploymentPluginMetadataRequestMultiError, or nil if none found. +func (m *PutDeploymentPluginMetadataRequest) ValidateAll() error { return m.validate(true) } -func (m *PutDeploymentMetadataRequest) validate(all bool) error { +func (m *PutDeploymentPluginMetadataRequest) validate(all bool) error { if m == nil { return nil } @@ -1990,7 +1997,7 @@ func (m *PutDeploymentMetadataRequest) validate(all bool) error { var errors []error if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { - err := PutDeploymentMetadataRequestValidationError{ + err := PutDeploymentPluginMetadataRequestValidationError{ field: "DeploymentId", reason: "value length must be at least 1 runes", } @@ -2000,8 +2007,19 @@ func (m *PutDeploymentMetadataRequest) validate(all bool) error { errors = append(errors, err) } + if utf8.RuneCountInString(m.GetPluginName()) < 1 { + err := PutDeploymentPluginMetadataRequestValidationError{ + field: "PluginName", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + if utf8.RuneCountInString(m.GetKey()) < 1 { - err := PutDeploymentMetadataRequestValidationError{ + err := PutDeploymentPluginMetadataRequestValidationError{ field: "Key", reason: "value length must be at least 1 runes", } @@ -2014,19 +2032,20 @@ func (m *PutDeploymentMetadataRequest) validate(all bool) error { // no validation rules for Value if len(errors) > 0 { - return PutDeploymentMetadataRequestMultiError(errors) + return PutDeploymentPluginMetadataRequestMultiError(errors) } return nil } -// PutDeploymentMetadataRequestMultiError is an error wrapping multiple -// validation errors returned by PutDeploymentMetadataRequest.ValidateAll() if -// the designated constraints aren't met. -type PutDeploymentMetadataRequestMultiError []error +// PutDeploymentPluginMetadataRequestMultiError is an error wrapping multiple +// validation errors returned by +// PutDeploymentPluginMetadataRequest.ValidateAll() if the designated +// constraints aren't met. +type PutDeploymentPluginMetadataRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutDeploymentMetadataRequestMultiError) Error() string { +func (m PutDeploymentPluginMetadataRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -2035,12 +2054,12 @@ func (m PutDeploymentMetadataRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutDeploymentMetadataRequestMultiError) AllErrors() []error { return m } +func (m PutDeploymentPluginMetadataRequestMultiError) AllErrors() []error { return m } -// PutDeploymentMetadataRequestValidationError is the validation error returned -// by PutDeploymentMetadataRequest.Validate if the designated constraints -// aren't met. -type PutDeploymentMetadataRequestValidationError struct { +// PutDeploymentPluginMetadataRequestValidationError is the validation error +// returned by PutDeploymentPluginMetadataRequest.Validate if the designated +// constraints aren't met. +type PutDeploymentPluginMetadataRequestValidationError struct { field string reason string cause error @@ -2048,24 +2067,24 @@ type PutDeploymentMetadataRequestValidationError struct { } // Field function returns field value. -func (e PutDeploymentMetadataRequestValidationError) Field() string { return e.field } +func (e PutDeploymentPluginMetadataRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutDeploymentMetadataRequestValidationError) Reason() string { return e.reason } +func (e PutDeploymentPluginMetadataRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutDeploymentMetadataRequestValidationError) Cause() error { return e.cause } +func (e PutDeploymentPluginMetadataRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutDeploymentMetadataRequestValidationError) Key() bool { return e.key } +func (e PutDeploymentPluginMetadataRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutDeploymentMetadataRequestValidationError) ErrorName() string { - return "PutDeploymentMetadataRequestValidationError" +func (e PutDeploymentPluginMetadataRequestValidationError) ErrorName() string { + return "PutDeploymentPluginMetadataRequestValidationError" } // Error satisfies the builtin error interface -func (e PutDeploymentMetadataRequestValidationError) Error() string { +func (e PutDeploymentPluginMetadataRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2077,14 +2096,14 @@ func (e PutDeploymentMetadataRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutDeploymentMetadataRequest.%s: %s%s", + "invalid %sPutDeploymentPluginMetadataRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutDeploymentMetadataRequestValidationError{} +var _ error = PutDeploymentPluginMetadataRequestValidationError{} var _ interface { Field() string @@ -2092,24 +2111,25 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutDeploymentMetadataRequestValidationError{} +} = PutDeploymentPluginMetadataRequestValidationError{} -// Validate checks the field values on PutDeploymentMetadataResponse 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 *PutDeploymentMetadataResponse) Validate() error { +// Validate checks the field values on PutDeploymentPluginMetadataResponse 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 *PutDeploymentPluginMetadataResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutDeploymentMetadataResponse 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 -// PutDeploymentMetadataResponseMultiError, or nil if none found. -func (m *PutDeploymentMetadataResponse) ValidateAll() error { +// ValidateAll checks the field values on PutDeploymentPluginMetadataResponse +// 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 +// PutDeploymentPluginMetadataResponseMultiError, or nil if none found. +func (m *PutDeploymentPluginMetadataResponse) ValidateAll() error { return m.validate(true) } -func (m *PutDeploymentMetadataResponse) validate(all bool) error { +func (m *PutDeploymentPluginMetadataResponse) validate(all bool) error { if m == nil { return nil } @@ -2117,19 +2137,20 @@ func (m *PutDeploymentMetadataResponse) validate(all bool) error { var errors []error if len(errors) > 0 { - return PutDeploymentMetadataResponseMultiError(errors) + return PutDeploymentPluginMetadataResponseMultiError(errors) } return nil } -// PutDeploymentMetadataResponseMultiError is an error wrapping multiple -// validation errors returned by PutDeploymentMetadataResponse.ValidateAll() -// if the designated constraints aren't met. -type PutDeploymentMetadataResponseMultiError []error +// PutDeploymentPluginMetadataResponseMultiError is an error wrapping multiple +// validation errors returned by +// PutDeploymentPluginMetadataResponse.ValidateAll() if the designated +// constraints aren't met. +type PutDeploymentPluginMetadataResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutDeploymentMetadataResponseMultiError) Error() string { +func (m PutDeploymentPluginMetadataResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -2138,12 +2159,12 @@ func (m PutDeploymentMetadataResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutDeploymentMetadataResponseMultiError) AllErrors() []error { return m } +func (m PutDeploymentPluginMetadataResponseMultiError) AllErrors() []error { return m } -// PutDeploymentMetadataResponseValidationError is the validation error -// returned by PutDeploymentMetadataResponse.Validate if the designated +// PutDeploymentPluginMetadataResponseValidationError is the validation error +// returned by PutDeploymentPluginMetadataResponse.Validate if the designated // constraints aren't met. -type PutDeploymentMetadataResponseValidationError struct { +type PutDeploymentPluginMetadataResponseValidationError struct { field string reason string cause error @@ -2151,24 +2172,24 @@ type PutDeploymentMetadataResponseValidationError struct { } // Field function returns field value. -func (e PutDeploymentMetadataResponseValidationError) Field() string { return e.field } +func (e PutDeploymentPluginMetadataResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutDeploymentMetadataResponseValidationError) Reason() string { return e.reason } +func (e PutDeploymentPluginMetadataResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutDeploymentMetadataResponseValidationError) Cause() error { return e.cause } +func (e PutDeploymentPluginMetadataResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutDeploymentMetadataResponseValidationError) Key() bool { return e.key } +func (e PutDeploymentPluginMetadataResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutDeploymentMetadataResponseValidationError) ErrorName() string { - return "PutDeploymentMetadataResponseValidationError" +func (e PutDeploymentPluginMetadataResponseValidationError) ErrorName() string { + return "PutDeploymentPluginMetadataResponseValidationError" } // Error satisfies the builtin error interface -func (e PutDeploymentMetadataResponseValidationError) Error() string { +func (e PutDeploymentPluginMetadataResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2180,14 +2201,14 @@ func (e PutDeploymentMetadataResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutDeploymentMetadataResponse.%s: %s%s", + "invalid %sPutDeploymentPluginMetadataResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutDeploymentMetadataResponseValidationError{} +var _ error = PutDeploymentPluginMetadataResponseValidationError{} var _ interface { Field() string @@ -2195,25 +2216,261 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutDeploymentMetadataResponseValidationError{} +} = PutDeploymentPluginMetadataResponseValidationError{} + +// Validate checks the field values on PutDeploymentPluginMetadataMultiRequest +// 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 *PutDeploymentPluginMetadataMultiRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on +// PutDeploymentPluginMetadataMultiRequest 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 +// PutDeploymentPluginMetadataMultiRequestMultiError, or nil if none found. +func (m *PutDeploymentPluginMetadataMultiRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *PutDeploymentPluginMetadataMultiRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { + err := PutDeploymentPluginMetadataMultiRequestValidationError{ + field: "DeploymentId", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetPluginName()) < 1 { + err := PutDeploymentPluginMetadataMultiRequestValidationError{ + field: "PluginName", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Metadata + + if len(errors) > 0 { + return PutDeploymentPluginMetadataMultiRequestMultiError(errors) + } + + return nil +} + +// PutDeploymentPluginMetadataMultiRequestMultiError is an error wrapping +// multiple validation errors returned by +// PutDeploymentPluginMetadataMultiRequest.ValidateAll() if the designated +// constraints aren't met. +type PutDeploymentPluginMetadataMultiRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PutDeploymentPluginMetadataMultiRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PutDeploymentPluginMetadataMultiRequestMultiError) AllErrors() []error { return m } + +// PutDeploymentPluginMetadataMultiRequestValidationError is the validation +// error returned by PutDeploymentPluginMetadataMultiRequest.Validate if the +// designated constraints aren't met. +type PutDeploymentPluginMetadataMultiRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e PutDeploymentPluginMetadataMultiRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e PutDeploymentPluginMetadataMultiRequestValidationError) Reason() string { return e.reason } -// Validate checks the field values on PutDeploymentMetadataMultiRequest with +// Cause function returns cause value. +func (e PutDeploymentPluginMetadataMultiRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e PutDeploymentPluginMetadataMultiRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e PutDeploymentPluginMetadataMultiRequestValidationError) ErrorName() string { + return "PutDeploymentPluginMetadataMultiRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e PutDeploymentPluginMetadataMultiRequestValidationError) 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 %sPutDeploymentPluginMetadataMultiRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = PutDeploymentPluginMetadataMultiRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = PutDeploymentPluginMetadataMultiRequestValidationError{} + +// Validate checks the field values on PutDeploymentPluginMetadataMultiResponse +// 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 *PutDeploymentPluginMetadataMultiResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on +// PutDeploymentPluginMetadataMultiResponse 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 +// PutDeploymentPluginMetadataMultiResponseMultiError, or nil if none found. +func (m *PutDeploymentPluginMetadataMultiResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *PutDeploymentPluginMetadataMultiResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return PutDeploymentPluginMetadataMultiResponseMultiError(errors) + } + + return nil +} + +// PutDeploymentPluginMetadataMultiResponseMultiError is an error wrapping +// multiple validation errors returned by +// PutDeploymentPluginMetadataMultiResponse.ValidateAll() if the designated +// constraints aren't met. +type PutDeploymentPluginMetadataMultiResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PutDeploymentPluginMetadataMultiResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PutDeploymentPluginMetadataMultiResponseMultiError) AllErrors() []error { return m } + +// PutDeploymentPluginMetadataMultiResponseValidationError is the validation +// error returned by PutDeploymentPluginMetadataMultiResponse.Validate if the +// designated constraints aren't met. +type PutDeploymentPluginMetadataMultiResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e PutDeploymentPluginMetadataMultiResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e PutDeploymentPluginMetadataMultiResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e PutDeploymentPluginMetadataMultiResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e PutDeploymentPluginMetadataMultiResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e PutDeploymentPluginMetadataMultiResponseValidationError) ErrorName() string { + return "PutDeploymentPluginMetadataMultiResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e PutDeploymentPluginMetadataMultiResponseValidationError) 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 %sPutDeploymentPluginMetadataMultiResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = PutDeploymentPluginMetadataMultiResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = PutDeploymentPluginMetadataMultiResponseValidationError{} + +// Validate checks the field values on GetDeploymentSharedMetadataRequest 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 *PutDeploymentMetadataMultiRequest) Validate() error { +func (m *GetDeploymentSharedMetadataRequest) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutDeploymentMetadataMultiRequest +// ValidateAll checks the field values on GetDeploymentSharedMetadataRequest // 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 -// PutDeploymentMetadataMultiRequestMultiError, or nil if none found. -func (m *PutDeploymentMetadataMultiRequest) ValidateAll() error { +// GetDeploymentSharedMetadataRequestMultiError, or nil if none found. +func (m *GetDeploymentSharedMetadataRequest) ValidateAll() error { return m.validate(true) } -func (m *PutDeploymentMetadataMultiRequest) validate(all bool) error { +func (m *GetDeploymentSharedMetadataRequest) validate(all bool) error { if m == nil { return nil } @@ -2221,7 +2478,7 @@ func (m *PutDeploymentMetadataMultiRequest) validate(all bool) error { var errors []error if utf8.RuneCountInString(m.GetDeploymentId()) < 1 { - err := PutDeploymentMetadataMultiRequestValidationError{ + err := GetDeploymentSharedMetadataRequestValidationError{ field: "DeploymentId", reason: "value length must be at least 1 runes", } @@ -2231,23 +2488,32 @@ func (m *PutDeploymentMetadataMultiRequest) validate(all bool) error { errors = append(errors, err) } - // no validation rules for Metadata + if utf8.RuneCountInString(m.GetKey()) < 1 { + err := GetDeploymentSharedMetadataRequestValidationError{ + field: "Key", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } if len(errors) > 0 { - return PutDeploymentMetadataMultiRequestMultiError(errors) + return GetDeploymentSharedMetadataRequestMultiError(errors) } return nil } -// PutDeploymentMetadataMultiRequestMultiError is an error wrapping multiple +// GetDeploymentSharedMetadataRequestMultiError is an error wrapping multiple // validation errors returned by -// PutDeploymentMetadataMultiRequest.ValidateAll() if the designated +// GetDeploymentSharedMetadataRequest.ValidateAll() if the designated // constraints aren't met. -type PutDeploymentMetadataMultiRequestMultiError []error +type GetDeploymentSharedMetadataRequestMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutDeploymentMetadataMultiRequestMultiError) Error() string { +func (m GetDeploymentSharedMetadataRequestMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -2256,12 +2522,12 @@ func (m PutDeploymentMetadataMultiRequestMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutDeploymentMetadataMultiRequestMultiError) AllErrors() []error { return m } +func (m GetDeploymentSharedMetadataRequestMultiError) AllErrors() []error { return m } -// PutDeploymentMetadataMultiRequestValidationError is the validation error -// returned by PutDeploymentMetadataMultiRequest.Validate if the designated +// GetDeploymentSharedMetadataRequestValidationError is the validation error +// returned by GetDeploymentSharedMetadataRequest.Validate if the designated // constraints aren't met. -type PutDeploymentMetadataMultiRequestValidationError struct { +type GetDeploymentSharedMetadataRequestValidationError struct { field string reason string cause error @@ -2269,24 +2535,24 @@ type PutDeploymentMetadataMultiRequestValidationError struct { } // Field function returns field value. -func (e PutDeploymentMetadataMultiRequestValidationError) Field() string { return e.field } +func (e GetDeploymentSharedMetadataRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutDeploymentMetadataMultiRequestValidationError) Reason() string { return e.reason } +func (e GetDeploymentSharedMetadataRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutDeploymentMetadataMultiRequestValidationError) Cause() error { return e.cause } +func (e GetDeploymentSharedMetadataRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutDeploymentMetadataMultiRequestValidationError) Key() bool { return e.key } +func (e GetDeploymentSharedMetadataRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutDeploymentMetadataMultiRequestValidationError) ErrorName() string { - return "PutDeploymentMetadataMultiRequestValidationError" +func (e GetDeploymentSharedMetadataRequestValidationError) ErrorName() string { + return "GetDeploymentSharedMetadataRequestValidationError" } // Error satisfies the builtin error interface -func (e PutDeploymentMetadataMultiRequestValidationError) Error() string { +func (e GetDeploymentSharedMetadataRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2298,14 +2564,14 @@ func (e PutDeploymentMetadataMultiRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutDeploymentMetadataMultiRequest.%s: %s%s", + "invalid %sGetDeploymentSharedMetadataRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutDeploymentMetadataMultiRequestValidationError{} +var _ error = GetDeploymentSharedMetadataRequestValidationError{} var _ interface { Field() string @@ -2313,46 +2579,50 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutDeploymentMetadataMultiRequestValidationError{} +} = GetDeploymentSharedMetadataRequestValidationError{} -// Validate checks the field values on PutDeploymentMetadataMultiResponse with +// Validate checks the field values on GetDeploymentSharedMetadataResponse 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 *PutDeploymentMetadataMultiResponse) Validate() error { +func (m *GetDeploymentSharedMetadataResponse) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on PutDeploymentMetadataMultiResponse +// ValidateAll checks the field values on GetDeploymentSharedMetadataResponse // 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 -// PutDeploymentMetadataMultiResponseMultiError, or nil if none found. -func (m *PutDeploymentMetadataMultiResponse) ValidateAll() error { +// GetDeploymentSharedMetadataResponseMultiError, or nil if none found. +func (m *GetDeploymentSharedMetadataResponse) ValidateAll() error { return m.validate(true) } -func (m *PutDeploymentMetadataMultiResponse) validate(all bool) error { +func (m *GetDeploymentSharedMetadataResponse) validate(all bool) error { if m == nil { return nil } var errors []error + // no validation rules for Value + + // no validation rules for Found + if len(errors) > 0 { - return PutDeploymentMetadataMultiResponseMultiError(errors) + return GetDeploymentSharedMetadataResponseMultiError(errors) } return nil } -// PutDeploymentMetadataMultiResponseMultiError is an error wrapping multiple +// GetDeploymentSharedMetadataResponseMultiError is an error wrapping multiple // validation errors returned by -// PutDeploymentMetadataMultiResponse.ValidateAll() if the designated +// GetDeploymentSharedMetadataResponse.ValidateAll() if the designated // constraints aren't met. -type PutDeploymentMetadataMultiResponseMultiError []error +type GetDeploymentSharedMetadataResponseMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m PutDeploymentMetadataMultiResponseMultiError) Error() string { +func (m GetDeploymentSharedMetadataResponseMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -2361,12 +2631,12 @@ func (m PutDeploymentMetadataMultiResponseMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m PutDeploymentMetadataMultiResponseMultiError) AllErrors() []error { return m } +func (m GetDeploymentSharedMetadataResponseMultiError) AllErrors() []error { return m } -// PutDeploymentMetadataMultiResponseValidationError is the validation error -// returned by PutDeploymentMetadataMultiResponse.Validate if the designated +// GetDeploymentSharedMetadataResponseValidationError is the validation error +// returned by GetDeploymentSharedMetadataResponse.Validate if the designated // constraints aren't met. -type PutDeploymentMetadataMultiResponseValidationError struct { +type GetDeploymentSharedMetadataResponseValidationError struct { field string reason string cause error @@ -2374,24 +2644,24 @@ type PutDeploymentMetadataMultiResponseValidationError struct { } // Field function returns field value. -func (e PutDeploymentMetadataMultiResponseValidationError) Field() string { return e.field } +func (e GetDeploymentSharedMetadataResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e PutDeploymentMetadataMultiResponseValidationError) Reason() string { return e.reason } +func (e GetDeploymentSharedMetadataResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e PutDeploymentMetadataMultiResponseValidationError) Cause() error { return e.cause } +func (e GetDeploymentSharedMetadataResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e PutDeploymentMetadataMultiResponseValidationError) Key() bool { return e.key } +func (e GetDeploymentSharedMetadataResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e PutDeploymentMetadataMultiResponseValidationError) ErrorName() string { - return "PutDeploymentMetadataMultiResponseValidationError" +func (e GetDeploymentSharedMetadataResponseValidationError) ErrorName() string { + return "GetDeploymentSharedMetadataResponseValidationError" } // Error satisfies the builtin error interface -func (e PutDeploymentMetadataMultiResponseValidationError) Error() string { +func (e GetDeploymentSharedMetadataResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2403,14 +2673,14 @@ func (e PutDeploymentMetadataMultiResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sPutDeploymentMetadataMultiResponse.%s: %s%s", + "invalid %sGetDeploymentSharedMetadataResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = PutDeploymentMetadataMultiResponseValidationError{} +var _ error = GetDeploymentSharedMetadataResponseValidationError{} var _ interface { Field() string @@ -2418,4 +2688,4 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = PutDeploymentMetadataMultiResponseValidationError{} +} = GetDeploymentSharedMetadataResponseValidationError{} diff --git a/pkg/plugin/pipedservice/service.proto b/pkg/plugin/pipedservice/service.proto index 89819ba8f3..380a0b5e3c 100644 --- a/pkg/plugin/pipedservice/service.proto +++ b/pkg/plugin/pipedservice/service.proto @@ -37,11 +37,14 @@ service PluginService { // PutStageMetadataMulti puts the metadata pairs of the given stage. rpc PutStageMetadataMulti(PutStageMetadataMultiRequest) returns (PutStageMetadataMultiResponse) {} // GetDeploymentMetadata gets one metadata value of the given deployment. - rpc GetDeploymentMetadata(GetDeploymentMetadataRequest) returns (GetDeploymentMetadataResponse) {} + rpc GetDeploymentPluginMetadata(GetDeploymentPluginMetadataRequest) returns (GetDeploymentPluginMetadataResponse) {} // PutDeploymentMetadata puts one metadata of the given deployment. - rpc PutDeploymentMetadata(PutDeploymentMetadataRequest) returns (PutDeploymentMetadataResponse) {} + rpc PutDeploymentPluginMetadata(PutDeploymentPluginMetadataRequest) returns (PutDeploymentPluginMetadataResponse) {} // PutDeploymentMetadataMulti puts the metadata pairs of the given deployment. - rpc PutDeploymentMetadataMulti(PutDeploymentMetadataMultiRequest) returns (PutDeploymentMetadataMultiResponse) {} + rpc PutDeploymentPluginMetadataMulti(PutDeploymentPluginMetadataMultiRequest) returns (PutDeploymentPluginMetadataMultiResponse) {} + // GetDeploymentSharedMetadata gets one shared metadata value of the given deployment. + // The shared metadata is read-only in plugins for safety since it is shared among piped and plugins. + rpc GetDeploymentSharedMetadata(GetDeploymentSharedMetadataRequest) returns (GetDeploymentSharedMetadataResponse) {} } message DecryptSecretRequest { @@ -131,29 +134,48 @@ message PutStageMetadataMultiRequest { message PutStageMetadataMultiResponse { } -message GetDeploymentMetadataRequest { +message GetDeploymentPluginMetadataRequest { string deployment_id = 1 [(validate.rules).string.min_len = 1]; - string key = 2 [(validate.rules).string.min_len = 1]; + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + string plugin_name = 2; + string key = 3 [(validate.rules).string.min_len = 1]; } -message GetDeploymentMetadataResponse { +message GetDeploymentPluginMetadataResponse { string value = 1; bool found = 2; } -message PutDeploymentMetadataRequest { +message PutDeploymentPluginMetadataRequest { string deployment_id = 1 [(validate.rules).string.min_len = 1]; - string key = 2 [(validate.rules).string.min_len = 1]; - string value = 3; + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + string plugin_name = 2 [(validate.rules).string.min_len = 1]; + string key = 3 [(validate.rules).string.min_len = 1]; + string value = 4; } -message PutDeploymentMetadataResponse { +message PutDeploymentPluginMetadataResponse { } -message PutDeploymentMetadataMultiRequest { +message PutDeploymentPluginMetadataMultiRequest { string deployment_id = 1 [(validate.rules).string.min_len = 1]; - map metadata = 2; + // Plugin name to distinguish which plugin manages the metadata. + // e.g. "plugin-kubernetes", "plugin-wait-stage" + string plugin_name = 2 [(validate.rules).string.min_len = 1]; + map metadata = 3; } -message PutDeploymentMetadataMultiResponse { +message PutDeploymentPluginMetadataMultiResponse { } + +message GetDeploymentSharedMetadataRequest { + string deployment_id = 1 [(validate.rules).string.min_len = 1]; + string key = 2 [(validate.rules).string.min_len = 1]; +} + +message GetDeploymentSharedMetadataResponse { + string value = 1; + bool found = 2; +} \ No newline at end of file diff --git a/pkg/plugin/pipedservice/service_grpc.pb.go b/pkg/plugin/pipedservice/service_grpc.pb.go index 0172e9b4bc..faf7e5bc39 100644 --- a/pkg/plugin/pipedservice/service_grpc.pb.go +++ b/pkg/plugin/pipedservice/service_grpc.pb.go @@ -36,11 +36,14 @@ type PluginServiceClient interface { // PutStageMetadataMulti puts the metadata pairs of the given stage. PutStageMetadataMulti(ctx context.Context, in *PutStageMetadataMultiRequest, opts ...grpc.CallOption) (*PutStageMetadataMultiResponse, error) // GetDeploymentMetadata gets one metadata value of the given deployment. - GetDeploymentMetadata(ctx context.Context, in *GetDeploymentMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentMetadataResponse, error) + GetDeploymentPluginMetadata(ctx context.Context, in *GetDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentPluginMetadataResponse, error) // PutDeploymentMetadata puts one metadata of the given deployment. - PutDeploymentMetadata(ctx context.Context, in *PutDeploymentMetadataRequest, opts ...grpc.CallOption) (*PutDeploymentMetadataResponse, error) + PutDeploymentPluginMetadata(ctx context.Context, in *PutDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*PutDeploymentPluginMetadataResponse, error) // PutDeploymentMetadataMulti puts the metadata pairs of the given deployment. - PutDeploymentMetadataMulti(ctx context.Context, in *PutDeploymentMetadataMultiRequest, opts ...grpc.CallOption) (*PutDeploymentMetadataMultiResponse, error) + PutDeploymentPluginMetadataMulti(ctx context.Context, in *PutDeploymentPluginMetadataMultiRequest, opts ...grpc.CallOption) (*PutDeploymentPluginMetadataMultiResponse, error) + // GetDeploymentSharedMetadata gets one shared metadata value of the given deployment. + // The shared metadata is read-only in plugins for safety since it is shared among piped and plugins. + GetDeploymentSharedMetadata(ctx context.Context, in *GetDeploymentSharedMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentSharedMetadataResponse, error) } type pluginServiceClient struct { @@ -105,27 +108,36 @@ func (c *pluginServiceClient) PutStageMetadataMulti(ctx context.Context, in *Put return out, nil } -func (c *pluginServiceClient) GetDeploymentMetadata(ctx context.Context, in *GetDeploymentMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentMetadataResponse, error) { - out := new(GetDeploymentMetadataResponse) - err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/GetDeploymentMetadata", in, out, opts...) +func (c *pluginServiceClient) GetDeploymentPluginMetadata(ctx context.Context, in *GetDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentPluginMetadataResponse, error) { + out := new(GetDeploymentPluginMetadataResponse) + err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/GetDeploymentPluginMetadata", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *pluginServiceClient) PutDeploymentMetadata(ctx context.Context, in *PutDeploymentMetadataRequest, opts ...grpc.CallOption) (*PutDeploymentMetadataResponse, error) { - out := new(PutDeploymentMetadataResponse) - err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/PutDeploymentMetadata", in, out, opts...) +func (c *pluginServiceClient) PutDeploymentPluginMetadata(ctx context.Context, in *PutDeploymentPluginMetadataRequest, opts ...grpc.CallOption) (*PutDeploymentPluginMetadataResponse, error) { + out := new(PutDeploymentPluginMetadataResponse) + err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/PutDeploymentPluginMetadata", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *pluginServiceClient) PutDeploymentMetadataMulti(ctx context.Context, in *PutDeploymentMetadataMultiRequest, opts ...grpc.CallOption) (*PutDeploymentMetadataMultiResponse, error) { - out := new(PutDeploymentMetadataMultiResponse) - err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/PutDeploymentMetadataMulti", in, out, opts...) +func (c *pluginServiceClient) PutDeploymentPluginMetadataMulti(ctx context.Context, in *PutDeploymentPluginMetadataMultiRequest, opts ...grpc.CallOption) (*PutDeploymentPluginMetadataMultiResponse, error) { + out := new(PutDeploymentPluginMetadataMultiResponse) + err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/PutDeploymentPluginMetadataMulti", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pluginServiceClient) GetDeploymentSharedMetadata(ctx context.Context, in *GetDeploymentSharedMetadataRequest, opts ...grpc.CallOption) (*GetDeploymentSharedMetadataResponse, error) { + out := new(GetDeploymentSharedMetadataResponse) + err := c.cc.Invoke(ctx, "/grpc.piped.service.PluginService/GetDeploymentSharedMetadata", in, out, opts...) if err != nil { return nil, err } @@ -150,11 +162,14 @@ type PluginServiceServer interface { // PutStageMetadataMulti puts the metadata pairs of the given stage. PutStageMetadataMulti(context.Context, *PutStageMetadataMultiRequest) (*PutStageMetadataMultiResponse, error) // GetDeploymentMetadata gets one metadata value of the given deployment. - GetDeploymentMetadata(context.Context, *GetDeploymentMetadataRequest) (*GetDeploymentMetadataResponse, error) + GetDeploymentPluginMetadata(context.Context, *GetDeploymentPluginMetadataRequest) (*GetDeploymentPluginMetadataResponse, error) // PutDeploymentMetadata puts one metadata of the given deployment. - PutDeploymentMetadata(context.Context, *PutDeploymentMetadataRequest) (*PutDeploymentMetadataResponse, error) + PutDeploymentPluginMetadata(context.Context, *PutDeploymentPluginMetadataRequest) (*PutDeploymentPluginMetadataResponse, error) // PutDeploymentMetadataMulti puts the metadata pairs of the given deployment. - PutDeploymentMetadataMulti(context.Context, *PutDeploymentMetadataMultiRequest) (*PutDeploymentMetadataMultiResponse, error) + PutDeploymentPluginMetadataMulti(context.Context, *PutDeploymentPluginMetadataMultiRequest) (*PutDeploymentPluginMetadataMultiResponse, error) + // GetDeploymentSharedMetadata gets one shared metadata value of the given deployment. + // The shared metadata is read-only in plugins for safety since it is shared among piped and plugins. + GetDeploymentSharedMetadata(context.Context, *GetDeploymentSharedMetadataRequest) (*GetDeploymentSharedMetadataResponse, error) mustEmbedUnimplementedPluginServiceServer() } @@ -180,14 +195,17 @@ func (UnimplementedPluginServiceServer) PutStageMetadata(context.Context, *PutSt func (UnimplementedPluginServiceServer) PutStageMetadataMulti(context.Context, *PutStageMetadataMultiRequest) (*PutStageMetadataMultiResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PutStageMetadataMulti not implemented") } -func (UnimplementedPluginServiceServer) GetDeploymentMetadata(context.Context, *GetDeploymentMetadataRequest) (*GetDeploymentMetadataResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDeploymentMetadata not implemented") +func (UnimplementedPluginServiceServer) GetDeploymentPluginMetadata(context.Context, *GetDeploymentPluginMetadataRequest) (*GetDeploymentPluginMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeploymentPluginMetadata not implemented") } -func (UnimplementedPluginServiceServer) PutDeploymentMetadata(context.Context, *PutDeploymentMetadataRequest) (*PutDeploymentMetadataResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method PutDeploymentMetadata not implemented") +func (UnimplementedPluginServiceServer) PutDeploymentPluginMetadata(context.Context, *PutDeploymentPluginMetadataRequest) (*PutDeploymentPluginMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PutDeploymentPluginMetadata not implemented") } -func (UnimplementedPluginServiceServer) PutDeploymentMetadataMulti(context.Context, *PutDeploymentMetadataMultiRequest) (*PutDeploymentMetadataMultiResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method PutDeploymentMetadataMulti not implemented") +func (UnimplementedPluginServiceServer) PutDeploymentPluginMetadataMulti(context.Context, *PutDeploymentPluginMetadataMultiRequest) (*PutDeploymentPluginMetadataMultiResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PutDeploymentPluginMetadataMulti not implemented") +} +func (UnimplementedPluginServiceServer) GetDeploymentSharedMetadata(context.Context, *GetDeploymentSharedMetadataRequest) (*GetDeploymentSharedMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeploymentSharedMetadata not implemented") } func (UnimplementedPluginServiceServer) mustEmbedUnimplementedPluginServiceServer() {} @@ -310,56 +328,74 @@ func _PluginService_PutStageMetadataMulti_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } -func _PluginService_GetDeploymentMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDeploymentMetadataRequest) +func _PluginService_GetDeploymentPluginMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDeploymentPluginMetadataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PluginServiceServer).GetDeploymentPluginMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.piped.service.PluginService/GetDeploymentPluginMetadata", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PluginServiceServer).GetDeploymentPluginMetadata(ctx, req.(*GetDeploymentPluginMetadataRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PluginService_PutDeploymentPluginMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PutDeploymentPluginMetadataRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(PluginServiceServer).GetDeploymentMetadata(ctx, in) + return srv.(PluginServiceServer).PutDeploymentPluginMetadata(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/grpc.piped.service.PluginService/GetDeploymentMetadata", + FullMethod: "/grpc.piped.service.PluginService/PutDeploymentPluginMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PluginServiceServer).GetDeploymentMetadata(ctx, req.(*GetDeploymentMetadataRequest)) + return srv.(PluginServiceServer).PutDeploymentPluginMetadata(ctx, req.(*PutDeploymentPluginMetadataRequest)) } return interceptor(ctx, in, info, handler) } -func _PluginService_PutDeploymentMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PutDeploymentMetadataRequest) +func _PluginService_PutDeploymentPluginMetadataMulti_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PutDeploymentPluginMetadataMultiRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(PluginServiceServer).PutDeploymentMetadata(ctx, in) + return srv.(PluginServiceServer).PutDeploymentPluginMetadataMulti(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/grpc.piped.service.PluginService/PutDeploymentMetadata", + FullMethod: "/grpc.piped.service.PluginService/PutDeploymentPluginMetadataMulti", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PluginServiceServer).PutDeploymentMetadata(ctx, req.(*PutDeploymentMetadataRequest)) + return srv.(PluginServiceServer).PutDeploymentPluginMetadataMulti(ctx, req.(*PutDeploymentPluginMetadataMultiRequest)) } return interceptor(ctx, in, info, handler) } -func _PluginService_PutDeploymentMetadataMulti_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PutDeploymentMetadataMultiRequest) +func _PluginService_GetDeploymentSharedMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDeploymentSharedMetadataRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(PluginServiceServer).PutDeploymentMetadataMulti(ctx, in) + return srv.(PluginServiceServer).GetDeploymentSharedMetadata(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/grpc.piped.service.PluginService/PutDeploymentMetadataMulti", + FullMethod: "/grpc.piped.service.PluginService/GetDeploymentSharedMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PluginServiceServer).PutDeploymentMetadataMulti(ctx, req.(*PutDeploymentMetadataMultiRequest)) + return srv.(PluginServiceServer).GetDeploymentSharedMetadata(ctx, req.(*GetDeploymentSharedMetadataRequest)) } return interceptor(ctx, in, info, handler) } @@ -396,16 +432,20 @@ var PluginService_ServiceDesc = grpc.ServiceDesc{ Handler: _PluginService_PutStageMetadataMulti_Handler, }, { - MethodName: "GetDeploymentMetadata", - Handler: _PluginService_GetDeploymentMetadata_Handler, + MethodName: "GetDeploymentPluginMetadata", + Handler: _PluginService_GetDeploymentPluginMetadata_Handler, + }, + { + MethodName: "PutDeploymentPluginMetadata", + Handler: _PluginService_PutDeploymentPluginMetadata_Handler, }, { - MethodName: "PutDeploymentMetadata", - Handler: _PluginService_PutDeploymentMetadata_Handler, + MethodName: "PutDeploymentPluginMetadataMulti", + Handler: _PluginService_PutDeploymentPluginMetadataMulti_Handler, }, { - MethodName: "PutDeploymentMetadataMulti", - Handler: _PluginService_PutDeploymentMetadataMulti_Handler, + MethodName: "GetDeploymentSharedMetadata", + Handler: _PluginService_GetDeploymentSharedMetadata_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/web/model/deployment_pb.d.ts b/web/model/deployment_pb.d.ts index a3c13726b4..24ccc7e95b 100644 --- a/web/model/deployment_pb.d.ts +++ b/web/model/deployment_pb.d.ts @@ -78,6 +78,11 @@ export class Deployment extends jspb.Message { getMetadataMap(): jspb.Map; clearMetadataMap(): Deployment; + getMetadataV2(): DeploymentMetadata | undefined; + setMetadataV2(value?: DeploymentMetadata): Deployment; + hasMetadataV2(): boolean; + clearMetadataV2(): Deployment; + getDeploymentChainId(): string; setDeploymentChainId(value: string): Deployment; @@ -124,6 +129,7 @@ export namespace Deployment { statusReason: string, stagesList: Array, metadataMap: Array<[string, string]>, + metadataV2?: DeploymentMetadata.AsObject, deploymentChainId: string, deploymentChainBlockIndex: number, completedAt: number, @@ -286,6 +292,49 @@ export namespace Commit { } } +export class DeploymentMetadata extends jspb.Message { + getShared(): DeploymentMetadata.KeyValues | undefined; + setShared(value?: DeploymentMetadata.KeyValues): DeploymentMetadata; + hasShared(): boolean; + clearShared(): DeploymentMetadata; + + getPluginsMap(): jspb.Map; + clearPluginsMap(): DeploymentMetadata; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DeploymentMetadata.AsObject; + static toObject(includeInstance: boolean, msg: DeploymentMetadata): DeploymentMetadata.AsObject; + static serializeBinaryToWriter(message: DeploymentMetadata, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DeploymentMetadata; + static deserializeBinaryFromReader(message: DeploymentMetadata, reader: jspb.BinaryReader): DeploymentMetadata; +} + +export namespace DeploymentMetadata { + export type AsObject = { + shared?: DeploymentMetadata.KeyValues.AsObject, + pluginsMap: Array<[string, DeploymentMetadata.KeyValues.AsObject]>, + } + + export class KeyValues extends jspb.Message { + getKeyvaluesMap(): jspb.Map; + clearKeyvaluesMap(): KeyValues; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): KeyValues.AsObject; + static toObject(includeInstance: boolean, msg: KeyValues): KeyValues.AsObject; + static serializeBinaryToWriter(message: KeyValues, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): KeyValues; + static deserializeBinaryFromReader(message: KeyValues, reader: jspb.BinaryReader): KeyValues; + } + + export namespace KeyValues { + export type AsObject = { + keyvaluesMap: Array<[string, string]>, + } + } + +} + export enum DeploymentStatus { DEPLOYMENT_PENDING = 0, DEPLOYMENT_PLANNED = 1, diff --git a/web/model/deployment_pb.js b/web/model/deployment_pb.js index 503a445b9a..78f1e57d59 100644 --- a/web/model/deployment_pb.js +++ b/web/model/deployment_pb.js @@ -27,6 +27,8 @@ var pkg_model_common_pb = require('pipecd/web/model/common_pb.js'); goog.object.extend(proto, pkg_model_common_pb); goog.exportSymbol('proto.model.Commit', null, global); goog.exportSymbol('proto.model.Deployment', null, global); +goog.exportSymbol('proto.model.DeploymentMetadata', null, global); +goog.exportSymbol('proto.model.DeploymentMetadata.KeyValues', null, global); goog.exportSymbol('proto.model.DeploymentStatus', null, global); goog.exportSymbol('proto.model.DeploymentTrigger', null, global); goog.exportSymbol('proto.model.PipelineStage', null, global); @@ -116,6 +118,48 @@ if (goog.DEBUG && !COMPILED) { */ proto.model.Commit.displayName = 'proto.model.Commit'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.model.DeploymentMetadata = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.model.DeploymentMetadata, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.model.DeploymentMetadata.displayName = 'proto.model.DeploymentMetadata'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.model.DeploymentMetadata.KeyValues = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.model.DeploymentMetadata.KeyValues, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.model.DeploymentMetadata.KeyValues.displayName = 'proto.model.DeploymentMetadata.KeyValues'; +} /** * List of repeated fields within this message type. @@ -178,6 +222,7 @@ proto.model.Deployment.toObject = function(includeInstance, msg) { stagesList: jspb.Message.toObjectList(msg.getStagesList(), proto.model.PipelineStage.toObject, includeInstance), metadataMap: (f = msg.getMetadataMap()) ? f.toObject(includeInstance, undefined) : [], + metadataV2: (f = msg.getMetadataV2()) && proto.model.DeploymentMetadata.toObject(includeInstance, f), deploymentChainId: jspb.Message.getFieldWithDefault(msg, 40, ""), deploymentChainBlockIndex: jspb.Message.getFieldWithDefault(msg, 41, 0), completedAt: jspb.Message.getFieldWithDefault(msg, 100, 0), @@ -311,6 +356,11 @@ proto.model.Deployment.deserializeBinaryFromReader = function(msg, reader) { jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); }); break; + case 34: + var value = new proto.model.DeploymentMetadata; + reader.readMessage(value,proto.model.DeploymentMetadata.deserializeBinaryFromReader); + msg.setMetadataV2(value); + break; case 40: var value = /** @type {string} */ (reader.readString()); msg.setDeploymentChainId(value); @@ -505,6 +555,14 @@ proto.model.Deployment.serializeBinaryToWriter = function(message, writer) { if (f && f.getLength() > 0) { f.serializeBinary(33, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); } + f = message.getMetadataV2(); + if (f != null) { + writer.writeMessage( + 34, + f, + proto.model.DeploymentMetadata.serializeBinaryToWriter + ); + } f = message.getDeploymentChainId(); if (f.length > 0) { writer.writeString( @@ -1028,6 +1086,43 @@ proto.model.Deployment.prototype.clearMetadataMap = function() { }; +/** + * optional DeploymentMetadata metadata_v2 = 34; + * @return {?proto.model.DeploymentMetadata} + */ +proto.model.Deployment.prototype.getMetadataV2 = function() { + return /** @type{?proto.model.DeploymentMetadata} */ ( + jspb.Message.getWrapperField(this, proto.model.DeploymentMetadata, 34)); +}; + + +/** + * @param {?proto.model.DeploymentMetadata|undefined} value + * @return {!proto.model.Deployment} returns this +*/ +proto.model.Deployment.prototype.setMetadataV2 = function(value) { + return jspb.Message.setWrapperField(this, 34, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.model.Deployment} returns this + */ +proto.model.Deployment.prototype.clearMetadataV2 = function() { + return this.setMetadataV2(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.model.Deployment.prototype.hasMetadataV2 = function() { + return jspb.Message.getField(this, 34) != null; +}; + + /** * optional string deployment_chain_id = 40; * @return {string} @@ -2279,6 +2374,325 @@ proto.model.Commit.prototype.setCreatedAt = function(value) { }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.model.DeploymentMetadata.prototype.toObject = function(opt_includeInstance) { + return proto.model.DeploymentMetadata.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.model.DeploymentMetadata} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentMetadata.toObject = function(includeInstance, msg) { + var f, obj = { + shared: (f = msg.getShared()) && proto.model.DeploymentMetadata.KeyValues.toObject(includeInstance, f), + pluginsMap: (f = msg.getPluginsMap()) ? f.toObject(includeInstance, proto.model.DeploymentMetadata.KeyValues.toObject) : [] + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.model.DeploymentMetadata} + */ +proto.model.DeploymentMetadata.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.model.DeploymentMetadata; + return proto.model.DeploymentMetadata.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.model.DeploymentMetadata} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.model.DeploymentMetadata} + */ +proto.model.DeploymentMetadata.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.model.DeploymentMetadata.KeyValues; + reader.readMessage(value,proto.model.DeploymentMetadata.KeyValues.deserializeBinaryFromReader); + msg.setShared(value); + break; + case 2: + var value = msg.getPluginsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.model.DeploymentMetadata.KeyValues.deserializeBinaryFromReader, "", new proto.model.DeploymentMetadata.KeyValues()); + }); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.model.DeploymentMetadata.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.model.DeploymentMetadata.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.model.DeploymentMetadata} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentMetadata.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getShared(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.model.DeploymentMetadata.KeyValues.serializeBinaryToWriter + ); + } + f = message.getPluginsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.model.DeploymentMetadata.KeyValues.serializeBinaryToWriter); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.model.DeploymentMetadata.KeyValues.prototype.toObject = function(opt_includeInstance) { + return proto.model.DeploymentMetadata.KeyValues.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.model.DeploymentMetadata.KeyValues} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentMetadata.KeyValues.toObject = function(includeInstance, msg) { + var f, obj = { + keyvaluesMap: (f = msg.getKeyvaluesMap()) ? f.toObject(includeInstance, undefined) : [] + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.model.DeploymentMetadata.KeyValues} + */ +proto.model.DeploymentMetadata.KeyValues.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.model.DeploymentMetadata.KeyValues; + return proto.model.DeploymentMetadata.KeyValues.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.model.DeploymentMetadata.KeyValues} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.model.DeploymentMetadata.KeyValues} + */ +proto.model.DeploymentMetadata.KeyValues.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = msg.getKeyvaluesMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.model.DeploymentMetadata.KeyValues.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.model.DeploymentMetadata.KeyValues.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.model.DeploymentMetadata.KeyValues} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.model.DeploymentMetadata.KeyValues.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getKeyvaluesMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } +}; + + +/** + * map keyValues = 1; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.model.DeploymentMetadata.KeyValues.prototype.getKeyvaluesMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 1, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.model.DeploymentMetadata.KeyValues} returns this + */ +proto.model.DeploymentMetadata.KeyValues.prototype.clearKeyvaluesMap = function() { + this.getKeyvaluesMap().clear(); + return this; +}; + + +/** + * optional KeyValues shared = 1; + * @return {?proto.model.DeploymentMetadata.KeyValues} + */ +proto.model.DeploymentMetadata.prototype.getShared = function() { + return /** @type{?proto.model.DeploymentMetadata.KeyValues} */ ( + jspb.Message.getWrapperField(this, proto.model.DeploymentMetadata.KeyValues, 1)); +}; + + +/** + * @param {?proto.model.DeploymentMetadata.KeyValues|undefined} value + * @return {!proto.model.DeploymentMetadata} returns this +*/ +proto.model.DeploymentMetadata.prototype.setShared = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.model.DeploymentMetadata} returns this + */ +proto.model.DeploymentMetadata.prototype.clearShared = function() { + return this.setShared(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.model.DeploymentMetadata.prototype.hasShared = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * map plugins = 2; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.model.DeploymentMetadata.prototype.getPluginsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 2, opt_noLazyCreate, + proto.model.DeploymentMetadata.KeyValues)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.model.DeploymentMetadata} returns this + */ +proto.model.DeploymentMetadata.prototype.clearPluginsMap = function() { + this.getPluginsMap().clear(); + return this; +}; + + /** * @enum {number} */