From 1f8803787f873c210fc0b03b20952f121eb35038 Mon Sep 17 00:00:00 2001 From: Garren Date: Tue, 18 Apr 2023 14:48:07 +0200 Subject: [PATCH] feat: add explain endpoint --- api/client/v1/api/http.go | 1429 ++++++++++++---- api/proto | 2 +- api/server/v1/api.pb.go | 2064 +++++++++++++----------- api/server/v1/api.pb.gw.go | 143 +- api/server/v1/api_grpc.pb.go | 192 ++- api/server/v1/auth.pb.go | 889 +++++++++- api/server/v1/auth.pb.gw.go | 344 +++- api/server/v1/auth_grpc.pb.go | 194 ++- api/server/v1/cache.pb.go | 106 +- api/server/v1/cache.pb.gw.go | 4 +- api/server/v1/cache_grpc.pb.go | 59 +- api/server/v1/health.pb.go | 12 +- api/server/v1/health.pb.gw.go | 2 +- api/server/v1/health_grpc.pb.go | 26 +- api/server/v1/management.pb.go | 124 +- api/server/v1/management.pb.gw.go | 4 +- api/server/v1/management_grpc.pb.go | 66 +- api/server/v1/observability.pb.go | 56 +- api/server/v1/observability.pb.gw.go | 2 +- api/server/v1/observability_grpc.pb.go | 41 +- api/server/v1/realtime.pb.go | 96 +- api/server/v1/realtime.pb.gw.go | 6 +- api/server/v1/realtime_grpc.pb.go | 49 +- api/server/v1/search.pb.go | 170 +- api/server/v1/search.pb.gw.go | 6 +- api/server/v1/search_grpc.pb.go | 79 +- driver/driver.go | 15 + driver/grpc.go | 16 + driver/http.go | 22 + driver/internal.go | 2 + driver/types.go | 1 + mock/api/grpc.go | 75 + mock/driver.go | 40 + tigris/collection.go | 16 + tigris/collection_test.go | 5 + 35 files changed, 4443 insertions(+), 1914 deletions(-) diff --git a/api/client/v1/api/http.go b/api/client/v1/api/http.go index c06e0f4..b56e1a9 100644 --- a/api/client/v1/api/http.go +++ b/api/client/v1/api/http.go @@ -149,6 +149,23 @@ type BranchInfo struct { // BranchMetadata defines model for BranchMetadata. type BranchMetadata = map[string]interface{} +// BuildCollectionIndexRequest defines model for BuildCollectionIndexRequest. +type BuildCollectionIndexRequest struct { + // Branch Optionally specify a database branch name to perform operation on + Branch *string `json:"branch,omitempty"` + + // Collection Name of the collection. + Collection *string `json:"collection,omitempty"` + + // Project Project name whose db is under target to index documents. + Project *string `json:"project,omitempty"` +} + +// BuildCollectionIndexResponse defines model for BuildCollectionIndexResponse. +type BuildCollectionIndexResponse struct { + Indexes *[]CollectionIndex `json:"indexes,omitempty"` +} + // CacheMetadata defines model for CacheMetadata. type CacheMetadata struct { // Name Cache name @@ -298,6 +315,14 @@ type CreateDocumentResponse struct { Status *[]DocStatus `json:"status,omitempty"` } +// CreateInvitationsRequest defines model for CreateInvitationsRequest. +type CreateInvitationsRequest struct { + Invitations *[]InvitationInfo `json:"invitations,omitempty"` +} + +// CreateInvitationsResponse defines model for CreateInvitationsResponse. +type CreateInvitationsResponse = map[string]interface{} + // CreateNamespaceRequest defines model for CreateNamespaceRequest. type CreateNamespaceRequest struct { // Code Optional: unique id @@ -509,6 +534,15 @@ type DeleteIndexResponse struct { Status *string `json:"status,omitempty"` } +// DeleteInvitationsRequest defines model for DeleteInvitationsRequest. +type DeleteInvitationsRequest struct { + Email *string `json:"email,omitempty"` + Status *string `json:"status,omitempty"` +} + +// DeleteInvitationsResponse defines model for DeleteInvitationsResponse. +type DeleteInvitationsResponse = map[string]interface{} + // DeleteNamespaceResponse defines model for DeleteNamespaceResponse. type DeleteNamespaceResponse struct { // Message A detailed response message. @@ -674,9 +708,15 @@ type ExplainResponse struct { // Collection The collection that the explain response is run against Collection *string `json:"collection,omitempty"` + // Field the name of the field + Field *string `json:"field,omitempty"` + // Filter The filter used in the query Filter *string `json:"filter,omitempty"` + // KeyRange the key range + KeyRange *[]string `json:"key_range,omitempty"` + // ReadType The Type of read can be either Scan or Secondary Index ReadType *string `json:"read_type,omitempty"` @@ -937,6 +977,42 @@ type InsertUserMetadataResponse struct { Value *map[string]interface{} `json:"value,omitempty"` } +// Invitation defines model for Invitation. +type Invitation struct { + // CreatedBy created by sub + CreatedBy *string `json:"created_by,omitempty"` + + // CreatedByName created by name (display friendly) + CreatedByName *string `json:"created_by_name,omitempty"` + + // Email invited email address + Email *string `json:"email,omitempty"` + + // ExpirationTime expiration time + ExpirationTime *int64 `json:"expiration_time,omitempty"` + + // Role invited user's role + Role *string `json:"role,omitempty"` + + // Status status of invitation + Status *string `json:"status,omitempty"` + + // TigrisNamespace invited namespace + TigrisNamespace *string `json:"tigris_namespace,omitempty"` +} + +// InvitationInfo defines model for InvitationInfo. +type InvitationInfo struct { + // Email Required: Email address to invite + Email *string `json:"email,omitempty"` + + // InvitationSentByName Invitation sender name + InvitationSentByName *string `json:"invitation_sent_by_name,omitempty"` + + // Role Required: Role to associate this user to + Role *string `json:"role,omitempty"` +} + // KeysResponse defines model for KeysResponse. type KeysResponse struct { // Cursor cursor - 0 is the keys scan is finished, non-zero cursor can be passed in next keys request to continue the scan this is useful if streaming breaks and user wants to resume stream @@ -975,6 +1051,11 @@ type ListIndexesResponse struct { Indexes *[]IndexInfo `json:"indexes,omitempty"` } +// ListInvitationsResponse defines model for ListInvitationsResponse. +type ListInvitationsResponse struct { + Invitations *[]Invitation `json:"invitations,omitempty"` +} + // ListNamespacesResponse defines model for ListNamespacesResponse. type ListNamespacesResponse struct { Data *DescribeNamespacesData `json:"data,omitempty"` @@ -1581,9 +1662,33 @@ type UpdateUserMetadataResponse struct { Value *map[string]interface{} `json:"value,omitempty"` } +// VerifyInvitationRequest defines model for VerifyInvitationRequest. +type VerifyInvitationRequest struct { + // Code code + Code *string `json:"code,omitempty"` + + // Email invited email address + Email *string `json:"email,omitempty"` +} + +// VerifyInvitationResponse defines model for VerifyInvitationResponse. +type VerifyInvitationResponse struct { + // Role if successful - which role this user should be assigned to + Role *string `json:"role,omitempty"` + + // TigrisNamespace if successful - which namespace this user belongs to + TigrisNamespace *string `json:"tigris_namespace,omitempty"` +} + // WriteOptions Additional options to modify write requests. type WriteOptions = map[string]interface{} +// AuthListInvitationsParams defines parameters for AuthListInvitations. +type AuthListInvitationsParams struct { + // Status optional status - an enum [PENDING, EXPIRED, ACCEPTED] + Status *string `form:"status,omitempty" json:"status,omitempty"` +} + // ManagementListNamespacesParams defines parameters for ManagementListNamespaces. type ManagementListNamespacesParams struct { // Describe Optionally specify if the description of each namespace is requested @@ -1642,6 +1747,15 @@ type SearchGetParams struct { Ids *[]string `form:"ids,omitempty" json:"ids,omitempty"` } +// AuthCreateInvitationsJSONRequestBody defines body for AuthCreateInvitations for application/json ContentType. +type AuthCreateInvitationsJSONRequestBody = CreateInvitationsRequest + +// AuthDeleteInvitationsJSONRequestBody defines body for AuthDeleteInvitations for application/json ContentType. +type AuthDeleteInvitationsJSONRequestBody = DeleteInvitationsRequest + +// AuthVerifyInvitationJSONRequestBody defines body for AuthVerifyInvitation for application/json ContentType. +type AuthVerifyInvitationJSONRequestBody = VerifyInvitationRequest + // ManagementGetNamespaceMetadataJSONRequestBody defines body for ManagementGetNamespaceMetadata for application/json ContentType. type ManagementGetNamespaceMetadataJSONRequestBody = GetNamespaceMetadataRequest @@ -1723,6 +1837,9 @@ type TigrisExplainJSONRequestBody = ReadRequest // TigrisImportJSONRequestBody defines body for TigrisImport for application/json ContentType. type TigrisImportJSONRequestBody = ImportRequest +// TigrisBuildCollectionIndexJSONRequestBody defines body for TigrisBuildCollectionIndex for application/json ContentType. +type TigrisBuildCollectionIndexJSONRequestBody = BuildCollectionIndexRequest + // TigrisInsertJSONRequestBody defines body for TigrisInsert for application/json ContentType. type TigrisInsertJSONRequestBody = InsertRequest @@ -1859,6 +1976,24 @@ func WithRequestEditorFn(fn RequestEditorFn) ClientOption { // The interface specification for the client above. type ClientInterface interface { + // AuthCreateInvitations request with any body + AuthCreateInvitationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + AuthCreateInvitations(ctx context.Context, body AuthCreateInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // AuthDeleteInvitations request with any body + AuthDeleteInvitationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + AuthDeleteInvitations(ctx context.Context, body AuthDeleteInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // AuthListInvitations request + AuthListInvitations(ctx context.Context, params *AuthListInvitationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // AuthVerifyInvitation request with any body + AuthVerifyInvitationWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + AuthVerifyInvitation(ctx context.Context, body AuthVerifyInvitationJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // AuthGetAccessToken request with any body AuthGetAccessTokenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2030,6 +2165,11 @@ type ClientInterface interface { TigrisImport(ctx context.Context, project string, collection string, body TigrisImportJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // TigrisBuildCollectionIndex request with any body + TigrisBuildCollectionIndexWithBody(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + TigrisBuildCollectionIndex(ctx context.Context, project string, collection string, body TigrisBuildCollectionIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // TigrisInsert request with any body TigrisInsertWithBody(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2160,6 +2300,90 @@ type ClientInterface interface { SearchCreateOrUpdateIndex(ctx context.Context, project string, name string, body SearchCreateOrUpdateIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) } +func (c *Client) AuthCreateInvitationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthCreateInvitationsRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthCreateInvitations(ctx context.Context, body AuthCreateInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthCreateInvitationsRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthDeleteInvitationsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthDeleteInvitationsRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthDeleteInvitations(ctx context.Context, body AuthDeleteInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthDeleteInvitationsRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthListInvitations(ctx context.Context, params *AuthListInvitationsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthListInvitationsRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthVerifyInvitationWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthVerifyInvitationRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) AuthVerifyInvitation(ctx context.Context, body AuthVerifyInvitationJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAuthVerifyInvitationRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) AuthGetAccessTokenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewAuthGetAccessTokenRequestWithBody(c.Server, contentType, body) if err != nil { @@ -2952,6 +3176,30 @@ func (c *Client) TigrisImport(ctx context.Context, project string, collection st return c.Client.Do(req) } +func (c *Client) TigrisBuildCollectionIndexWithBody(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTigrisBuildCollectionIndexRequestWithBody(c.Server, project, collection, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) TigrisBuildCollectionIndex(ctx context.Context, project string, collection string, body TigrisBuildCollectionIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTigrisBuildCollectionIndexRequest(c.Server, project, collection, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) TigrisInsertWithBody(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewTigrisInsertRequestWithBody(c.Server, project, collection, contentType, body) if err != nil { @@ -3552,6 +3800,173 @@ func (c *Client) SearchCreateOrUpdateIndex(ctx context.Context, project string, return c.Client.Do(req) } +// NewAuthCreateInvitationsRequest calls the generic AuthCreateInvitations builder with application/json body +func NewAuthCreateInvitationsRequest(server string, body AuthCreateInvitationsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAuthCreateInvitationsRequestWithBody(server, "application/json", bodyReader) +} + +// NewAuthCreateInvitationsRequestWithBody generates requests for AuthCreateInvitations with any type of body +func NewAuthCreateInvitationsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/auth/namespace/invitations/create") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewAuthDeleteInvitationsRequest calls the generic AuthDeleteInvitations builder with application/json body +func NewAuthDeleteInvitationsRequest(server string, body AuthDeleteInvitationsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAuthDeleteInvitationsRequestWithBody(server, "application/json", bodyReader) +} + +// NewAuthDeleteInvitationsRequestWithBody generates requests for AuthDeleteInvitations with any type of body +func NewAuthDeleteInvitationsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/auth/namespace/invitations/delete") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewAuthListInvitationsRequest generates requests for AuthListInvitations +func NewAuthListInvitationsRequest(server string, params *AuthListInvitationsParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/auth/namespace/invitations/list") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + queryValues := queryURL.Query() + + if params.Status != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "status", runtime.ParamLocationQuery, *params.Status); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewAuthVerifyInvitationRequest calls the generic AuthVerifyInvitation builder with application/json body +func NewAuthVerifyInvitationRequest(server string, body AuthVerifyInvitationJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAuthVerifyInvitationRequestWithBody(server, "application/json", bodyReader) +} + +// NewAuthVerifyInvitationRequestWithBody generates requests for AuthVerifyInvitation with any type of body +func NewAuthVerifyInvitationRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/auth/namespace/invitations/verify") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + // NewAuthGetAccessTokenRequestWithBody generates requests for AuthGetAccessToken with any type of body func NewAuthGetAccessTokenRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error @@ -5393,6 +5808,60 @@ func NewTigrisImportRequestWithBody(server string, project string, collection st return req, nil } +// NewTigrisBuildCollectionIndexRequest calls the generic TigrisBuildCollectionIndex builder with application/json body +func NewTigrisBuildCollectionIndexRequest(server string, project string, collection string, body TigrisBuildCollectionIndexJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewTigrisBuildCollectionIndexRequestWithBody(server, project, collection, "application/json", bodyReader) +} + +// NewTigrisBuildCollectionIndexRequestWithBody generates requests for TigrisBuildCollectionIndex with any type of body +func NewTigrisBuildCollectionIndexRequestWithBody(server string, project string, collection string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "project", runtime.ParamLocationPath, project) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "collection", runtime.ParamLocationPath, collection) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/projects/%s/database/collections/%s/documents/index", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + // NewTigrisInsertRequest calls the generic TigrisInsert builder with application/json body func NewTigrisInsertRequest(server string, project string, collection string, body TigrisInsertJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader @@ -7064,6 +7533,24 @@ func WithBaseURL(baseURL string) ClientOption { // ClientWithResponsesInterface is the interface specification for the client with responses above. type ClientWithResponsesInterface interface { + // AuthCreateInvitations request with any body + AuthCreateInvitationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthCreateInvitationsResponse, error) + + AuthCreateInvitationsWithResponse(ctx context.Context, body AuthCreateInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthCreateInvitationsResponse, error) + + // AuthDeleteInvitations request with any body + AuthDeleteInvitationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthDeleteInvitationsResponse, error) + + AuthDeleteInvitationsWithResponse(ctx context.Context, body AuthDeleteInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthDeleteInvitationsResponse, error) + + // AuthListInvitations request + AuthListInvitationsWithResponse(ctx context.Context, params *AuthListInvitationsParams, reqEditors ...RequestEditorFn) (*AuthListInvitationsResponse, error) + + // AuthVerifyInvitation request with any body + AuthVerifyInvitationWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthVerifyInvitationResponse, error) + + AuthVerifyInvitationWithResponse(ctx context.Context, body AuthVerifyInvitationJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthVerifyInvitationResponse, error) + // AuthGetAccessToken request with any body AuthGetAccessTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthGetAccessTokenResponse, error) @@ -7235,6 +7722,11 @@ type ClientWithResponsesInterface interface { TigrisImportWithResponse(ctx context.Context, project string, collection string, body TigrisImportJSONRequestBody, reqEditors ...RequestEditorFn) (*TigrisImportResponse, error) + // TigrisBuildCollectionIndex request with any body + TigrisBuildCollectionIndexWithBodyWithResponse(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TigrisBuildCollectionIndexResponse, error) + + TigrisBuildCollectionIndexWithResponse(ctx context.Context, project string, collection string, body TigrisBuildCollectionIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*TigrisBuildCollectionIndexResponse, error) + // TigrisInsert request with any body TigrisInsertWithBodyWithResponse(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TigrisInsertResponse, error) @@ -7349,20 +7841,112 @@ type ClientWithResponsesInterface interface { // SearchCreateById request with any body SearchCreateByIdWithBodyWithResponse(ctx context.Context, project string, index string, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchCreateByIdResponse, error) - SearchCreateByIdWithResponse(ctx context.Context, project string, index string, id string, body SearchCreateByIdJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchCreateByIdResponse, error) + SearchCreateByIdWithResponse(ctx context.Context, project string, index string, id string, body SearchCreateByIdJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchCreateByIdResponse, error) + + // SearchDeleteIndex request with any body + SearchDeleteIndexWithBodyWithResponse(ctx context.Context, project string, name string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchDeleteIndexResponse, error) + + SearchDeleteIndexWithResponse(ctx context.Context, project string, name string, body SearchDeleteIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchDeleteIndexResponse, error) + + // SearchGetIndex request + SearchGetIndexWithResponse(ctx context.Context, project string, name string, reqEditors ...RequestEditorFn) (*SearchGetIndexResponse, error) + + // SearchCreateOrUpdateIndex request with any body + SearchCreateOrUpdateIndexWithBodyWithResponse(ctx context.Context, project string, name string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchCreateOrUpdateIndexResponse, error) + + SearchCreateOrUpdateIndexWithResponse(ctx context.Context, project string, name string, body SearchCreateOrUpdateIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchCreateOrUpdateIndexResponse, error) +} + +type AuthCreateInvitationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *CreateInvitationsResponse + JSONDefault *Status +} + +// Status returns HTTPResponse.Status +func (r AuthCreateInvitationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r AuthCreateInvitationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type AuthDeleteInvitationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *DeleteInvitationsResponse + JSONDefault *Status +} + +// Status returns HTTPResponse.Status +func (r AuthDeleteInvitationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r AuthDeleteInvitationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} - // SearchDeleteIndex request with any body - SearchDeleteIndexWithBodyWithResponse(ctx context.Context, project string, name string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchDeleteIndexResponse, error) +type AuthListInvitationsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ListInvitationsResponse + JSONDefault *Status +} - SearchDeleteIndexWithResponse(ctx context.Context, project string, name string, body SearchDeleteIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchDeleteIndexResponse, error) +// Status returns HTTPResponse.Status +func (r AuthListInvitationsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} - // SearchGetIndex request - SearchGetIndexWithResponse(ctx context.Context, project string, name string, reqEditors ...RequestEditorFn) (*SearchGetIndexResponse, error) +// StatusCode returns HTTPResponse.StatusCode +func (r AuthListInvitationsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} - // SearchCreateOrUpdateIndex request with any body - SearchCreateOrUpdateIndexWithBodyWithResponse(ctx context.Context, project string, name string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchCreateOrUpdateIndexResponse, error) +type AuthVerifyInvitationResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *VerifyInvitationResponse + JSONDefault *Status +} - SearchCreateOrUpdateIndexWithResponse(ctx context.Context, project string, name string, body SearchCreateOrUpdateIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchCreateOrUpdateIndexResponse, error) +// Status returns HTTPResponse.Status +func (r AuthVerifyInvitationResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r AuthVerifyInvitationResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 } type AuthGetAccessTokenResponse struct { @@ -8262,6 +8846,29 @@ func (r TigrisImportResponse) StatusCode() int { return 0 } +type TigrisBuildCollectionIndexResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *BuildCollectionIndexResponse + JSONDefault *Status +} + +// Status returns HTTPResponse.Status +func (r TigrisBuildCollectionIndexResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r TigrisBuildCollectionIndexResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + type TigrisInsertResponse struct { Body []byte HTTPResponse *http.Response @@ -8929,6 +9536,66 @@ func (r SearchCreateOrUpdateIndexResponse) StatusCode() int { return 0 } +// AuthCreateInvitationsWithBodyWithResponse request with arbitrary body returning *AuthCreateInvitationsResponse +func (c *ClientWithResponses) AuthCreateInvitationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthCreateInvitationsResponse, error) { + rsp, err := c.AuthCreateInvitationsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthCreateInvitationsResponse(rsp) +} + +func (c *ClientWithResponses) AuthCreateInvitationsWithResponse(ctx context.Context, body AuthCreateInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthCreateInvitationsResponse, error) { + rsp, err := c.AuthCreateInvitations(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthCreateInvitationsResponse(rsp) +} + +// AuthDeleteInvitationsWithBodyWithResponse request with arbitrary body returning *AuthDeleteInvitationsResponse +func (c *ClientWithResponses) AuthDeleteInvitationsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthDeleteInvitationsResponse, error) { + rsp, err := c.AuthDeleteInvitationsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthDeleteInvitationsResponse(rsp) +} + +func (c *ClientWithResponses) AuthDeleteInvitationsWithResponse(ctx context.Context, body AuthDeleteInvitationsJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthDeleteInvitationsResponse, error) { + rsp, err := c.AuthDeleteInvitations(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthDeleteInvitationsResponse(rsp) +} + +// AuthListInvitationsWithResponse request returning *AuthListInvitationsResponse +func (c *ClientWithResponses) AuthListInvitationsWithResponse(ctx context.Context, params *AuthListInvitationsParams, reqEditors ...RequestEditorFn) (*AuthListInvitationsResponse, error) { + rsp, err := c.AuthListInvitations(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthListInvitationsResponse(rsp) +} + +// AuthVerifyInvitationWithBodyWithResponse request with arbitrary body returning *AuthVerifyInvitationResponse +func (c *ClientWithResponses) AuthVerifyInvitationWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthVerifyInvitationResponse, error) { + rsp, err := c.AuthVerifyInvitationWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthVerifyInvitationResponse(rsp) +} + +func (c *ClientWithResponses) AuthVerifyInvitationWithResponse(ctx context.Context, body AuthVerifyInvitationJSONRequestBody, reqEditors ...RequestEditorFn) (*AuthVerifyInvitationResponse, error) { + rsp, err := c.AuthVerifyInvitation(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseAuthVerifyInvitationResponse(rsp) +} + // AuthGetAccessTokenWithBodyWithResponse request with arbitrary body returning *AuthGetAccessTokenResponse func (c *ClientWithResponses) AuthGetAccessTokenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AuthGetAccessTokenResponse, error) { rsp, err := c.AuthGetAccessTokenWithBody(ctx, contentType, body, reqEditors...) @@ -9496,6 +10163,23 @@ func (c *ClientWithResponses) TigrisImportWithResponse(ctx context.Context, proj return ParseTigrisImportResponse(rsp) } +// TigrisBuildCollectionIndexWithBodyWithResponse request with arbitrary body returning *TigrisBuildCollectionIndexResponse +func (c *ClientWithResponses) TigrisBuildCollectionIndexWithBodyWithResponse(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TigrisBuildCollectionIndexResponse, error) { + rsp, err := c.TigrisBuildCollectionIndexWithBody(ctx, project, collection, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTigrisBuildCollectionIndexResponse(rsp) +} + +func (c *ClientWithResponses) TigrisBuildCollectionIndexWithResponse(ctx context.Context, project string, collection string, body TigrisBuildCollectionIndexJSONRequestBody, reqEditors ...RequestEditorFn) (*TigrisBuildCollectionIndexResponse, error) { + rsp, err := c.TigrisBuildCollectionIndex(ctx, project, collection, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTigrisBuildCollectionIndexResponse(rsp) +} + // TigrisInsertWithBodyWithResponse request with arbitrary body returning *TigrisInsertResponse func (c *ClientWithResponses) TigrisInsertWithBodyWithResponse(ctx context.Context, project string, collection string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TigrisInsertResponse, error) { rsp, err := c.TigrisInsertWithBody(ctx, project, collection, contentType, body, reqEditors...) @@ -9925,6 +10609,138 @@ func (c *ClientWithResponses) SearchCreateOrUpdateIndexWithResponse(ctx context. return ParseSearchCreateOrUpdateIndexResponse(rsp) } +// ParseAuthCreateInvitationsResponse parses an HTTP response from a AuthCreateInvitationsWithResponse call +func ParseAuthCreateInvitationsResponse(rsp *http.Response) (*AuthCreateInvitationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &AuthCreateInvitationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest CreateInvitationsResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Status + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseAuthDeleteInvitationsResponse parses an HTTP response from a AuthDeleteInvitationsWithResponse call +func ParseAuthDeleteInvitationsResponse(rsp *http.Response) (*AuthDeleteInvitationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &AuthDeleteInvitationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest DeleteInvitationsResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Status + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseAuthListInvitationsResponse parses an HTTP response from a AuthListInvitationsWithResponse call +func ParseAuthListInvitationsResponse(rsp *http.Response) (*AuthListInvitationsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &AuthListInvitationsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ListInvitationsResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Status + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + +// ParseAuthVerifyInvitationResponse parses an HTTP response from a AuthVerifyInvitationWithResponse call +func ParseAuthVerifyInvitationResponse(rsp *http.Response) (*AuthVerifyInvitationResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &AuthVerifyInvitationResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest VerifyInvitationResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Status + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + // ParseAuthGetAccessTokenResponse parses an HTTP response from a AuthGetAccessTokenWithResponse call func ParseAuthGetAccessTokenResponse(rsp *http.Response) (*AuthGetAccessTokenResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -11212,6 +12028,39 @@ func ParseTigrisImportResponse(rsp *http.Response) (*TigrisImportResponse, error return response, nil } +// ParseTigrisBuildCollectionIndexResponse parses an HTTP response from a TigrisBuildCollectionIndexWithResponse call +func ParseTigrisBuildCollectionIndexResponse(rsp *http.Response) (*TigrisBuildCollectionIndexResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &TigrisBuildCollectionIndexResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest BuildCollectionIndexResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Status + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} + // ParseTigrisInsertResponse parses an HTTP response from a TigrisInsertWithResponse call func ParseTigrisInsertResponse(rsp *http.Response) (*TigrisInsertResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -12172,281 +13021,293 @@ func ParseSearchCreateOrUpdateIndexResponse(rsp *http.Response) (*SearchCreateOr // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "Bzk8GozeHJ0d7hexAF8mTM9WMCY3PeLsUKQie2GmkrAIbe0hd/FNGshLJjKsK6okCdqqSs/yB7JD9qSY", + "JDyySF+k9HaxIc5HrqH2ukR8wPzPX82ZmtK59ncAtQYZ1cnS9UMBoa+bbtEA6eCqChlJV+Z5GNakBdxa", + "eopqb4piqIEPlFkNxrA7+NLu4EBK8p6KBckyLv9BTnqnR2cne71R75d33bNTvBW24cw2zCj61AnIFl+N", + "lOS3lEeXlrz+bPc9krMZE1BegN2g1MlpQsY0upSTSRYBnrGBFqT8//lj97197OxRfn9zs/ysZWwJHKoj", + "p5h1SZOvzJRpho7jVLGvH4oCfw8UuO8NjqdYbAHYNiAvPx4e/XxI/oB3yj3xoEFSUlwQKYpgE81j1iEl", + "/8OpvnG3u28RzqISi93vdqr+++ODnqX4jo4ZotP5XCqTv/LF2cBliwpLT/MHs+PmeukelrfUsGu6CGD5", + "g7zu7o/edge9n7v/vAeq9T3QRrtzPGKWQF9RnoChD9fV/anbP+i+Pui5uRz07iVAPDfSwV80aezJ2Uw6", + "Vsdl8vPdvdsXOLfauzijVrQVFByW89/lFVOJpDFwYhZYS2L9pgz4jMnUZBuz3+vuH/QP7d3Z6/X28eoU", + "9hwsTLA4dNEDIhjSPMNnDLiUFdAdj+0KQCKHKDS/sk+4CsZfgtiKEf2chPmb7m+bA8+9crpQnOQipYoK", + "w0BLzYQXGSwfBVvHtUohLyoYeTj6DMsCa595LoAOFu+fnTZgYMn5dy9/aH//4kX7+xfftL9/8bL9/Ytv", + "z8POIH/pjJF1ZVJgP8KtcxhhaQ83HizPx61ynyDkAKJmP7HJBF9slL5ADYjFloZi6QGUDvuSBZHOlmWk", + "3RJLj1Oup2TMzLVljT1lBgEsLIUFknhniThXPbSHXpEePLfwXX6D86AZy6iic61fXs4aoZqfeay7YDf+", + "5QLBCWb9/36lO793d/7fh//lPrzY+WH04X994WDNG66DPkVRghW8li0yB34B/kGtGsTe+ZnLYe05vdx+", + "zX8HPPvmxYsfX3c2H6jgpZGN9X5lqKFotVsJj5jT96C7Qqs7p9GUkQP3Q7uVqsSpIfSr3d0LbqbpGJJI", + "5jkl3cfdcSLHu5bq7B7093qHpz3U6piEQbQ9XEt73U7YhCmostNu2bcNNRkvOi8636Cengk6561XrW87", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/proto b/api/proto index 1c4a37c..e86d660 160000 --- a/api/proto +++ b/api/proto @@ -1 +1 @@ -Subproject commit 1c4a37c6466622cb129dc382b7b3a6697a3de3d5 +Subproject commit e86d660f6a5566d75420994a577c03294a858699 diff --git a/api/server/v1/api.pb.go b/api/server/v1/api.pb.go index cef27dd..7b947a7 100644 --- a/api/server/v1/api.pb.go +++ b/api/server/v1/api.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/api.proto package api @@ -2040,6 +2040,10 @@ type ExplainResponse struct { Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` // The type of sort used Sorting string `protobuf:"bytes,4,opt,name=sorting,proto3" json:"sorting,omitempty"` + // the key range + KeyRange []string `protobuf:"bytes,5,rep,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` + // the name of the field + Field string `protobuf:"bytes,6,opt,name=field,proto3" json:"field,omitempty"` } func (x *ExplainResponse) Reset() { @@ -2102,6 +2106,20 @@ func (x *ExplainResponse) GetSorting() string { return "" } +func (x *ExplainResponse) GetKeyRange() []string { + if x != nil { + return x.KeyRange + } + return nil +} + +func (x *ExplainResponse) GetField() string { + if x != nil { + return x.Field + } + return "" +} + type SearchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4835,6 +4853,119 @@ func (x *Field) GetName() string { return "" } +type BuildCollectionIndexRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Project name whose db is under target to index documents. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // Name of the collection. + Collection string `protobuf:"bytes,2,opt,name=collection,proto3" json:"collection,omitempty"` + // Optionally specify a database branch name to perform operation on + Branch string `protobuf:"bytes,3,opt,name=branch,proto3" json:"branch,omitempty"` +} + +func (x *BuildCollectionIndexRequest) Reset() { + *x = BuildCollectionIndexRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_api_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BuildCollectionIndexRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildCollectionIndexRequest) ProtoMessage() {} + +func (x *BuildCollectionIndexRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_api_proto_msgTypes[76] + 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 BuildCollectionIndexRequest.ProtoReflect.Descriptor instead. +func (*BuildCollectionIndexRequest) Descriptor() ([]byte, []int) { + return file_server_v1_api_proto_rawDescGZIP(), []int{76} +} + +func (x *BuildCollectionIndexRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *BuildCollectionIndexRequest) GetCollection() string { + if x != nil { + return x.Collection + } + return "" +} + +func (x *BuildCollectionIndexRequest) GetBranch() string { + if x != nil { + return x.Branch + } + return "" +} + +type BuildCollectionIndexResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Indexes []*CollectionIndex `protobuf:"bytes,1,rep,name=indexes,proto3" json:"indexes,omitempty"` +} + +func (x *BuildCollectionIndexResponse) Reset() { + *x = BuildCollectionIndexResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_api_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BuildCollectionIndexResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildCollectionIndexResponse) ProtoMessage() {} + +func (x *BuildCollectionIndexResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_api_proto_msgTypes[77] + 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 BuildCollectionIndexResponse.ProtoReflect.Descriptor instead. +func (*BuildCollectionIndexResponse) Descriptor() ([]byte, []int) { + return file_server_v1_api_proto_rawDescGZIP(), []int{77} +} + +func (x *BuildCollectionIndexResponse) GetIndexes() []*CollectionIndex { + if x != nil { + return x.Indexes + } + return nil +} + type BranchMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4844,7 +4975,7 @@ type BranchMetadata struct { func (x *BranchMetadata) Reset() { *x = BranchMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[76] + mi := &file_server_v1_api_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4857,7 +4988,7 @@ func (x *BranchMetadata) String() string { func (*BranchMetadata) ProtoMessage() {} func (x *BranchMetadata) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[76] + mi := &file_server_v1_api_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4870,7 +5001,7 @@ func (x *BranchMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use BranchMetadata.ProtoReflect.Descriptor instead. func (*BranchMetadata) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{76} + return file_server_v1_api_proto_rawDescGZIP(), []int{78} } // Request creation of user app key @@ -4890,7 +5021,7 @@ type CreateAppKeyRequest struct { func (x *CreateAppKeyRequest) Reset() { *x = CreateAppKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[77] + mi := &file_server_v1_api_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4903,7 +5034,7 @@ func (x *CreateAppKeyRequest) String() string { func (*CreateAppKeyRequest) ProtoMessage() {} func (x *CreateAppKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[77] + mi := &file_server_v1_api_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4916,7 +5047,7 @@ func (x *CreateAppKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAppKeyRequest.ProtoReflect.Descriptor instead. func (*CreateAppKeyRequest) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{77} + return file_server_v1_api_proto_rawDescGZIP(), []int{79} } func (x *CreateAppKeyRequest) GetName() string { @@ -4953,7 +5084,7 @@ type CreateAppKeyResponse struct { func (x *CreateAppKeyResponse) Reset() { *x = CreateAppKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[78] + mi := &file_server_v1_api_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4966,7 +5097,7 @@ func (x *CreateAppKeyResponse) String() string { func (*CreateAppKeyResponse) ProtoMessage() {} func (x *CreateAppKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[78] + mi := &file_server_v1_api_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4979,7 +5110,7 @@ func (x *CreateAppKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAppKeyResponse.ProtoReflect.Descriptor instead. func (*CreateAppKeyResponse) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{78} + return file_server_v1_api_proto_rawDescGZIP(), []int{80} } func (x *CreateAppKeyResponse) GetCreatedAppKey() *AppKey { @@ -5008,7 +5139,7 @@ type UpdateAppKeyRequest struct { func (x *UpdateAppKeyRequest) Reset() { *x = UpdateAppKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[79] + mi := &file_server_v1_api_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5021,7 +5152,7 @@ func (x *UpdateAppKeyRequest) String() string { func (*UpdateAppKeyRequest) ProtoMessage() {} func (x *UpdateAppKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[79] + mi := &file_server_v1_api_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5034,7 +5165,7 @@ func (x *UpdateAppKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppKeyRequest.ProtoReflect.Descriptor instead. func (*UpdateAppKeyRequest) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{79} + return file_server_v1_api_proto_rawDescGZIP(), []int{81} } func (x *UpdateAppKeyRequest) GetId() string { @@ -5078,7 +5209,7 @@ type UpdateAppKeyResponse struct { func (x *UpdateAppKeyResponse) Reset() { *x = UpdateAppKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[80] + mi := &file_server_v1_api_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5091,7 +5222,7 @@ func (x *UpdateAppKeyResponse) String() string { func (*UpdateAppKeyResponse) ProtoMessage() {} func (x *UpdateAppKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[80] + mi := &file_server_v1_api_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5104,7 +5235,7 @@ func (x *UpdateAppKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppKeyResponse.ProtoReflect.Descriptor instead. func (*UpdateAppKeyResponse) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{80} + return file_server_v1_api_proto_rawDescGZIP(), []int{82} } func (x *UpdateAppKeyResponse) GetUpdatedAppKey() *AppKey { @@ -5143,7 +5274,7 @@ type AppKey struct { func (x *AppKey) Reset() { *x = AppKey{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[81] + mi := &file_server_v1_api_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5156,7 +5287,7 @@ func (x *AppKey) String() string { func (*AppKey) ProtoMessage() {} func (x *AppKey) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[81] + mi := &file_server_v1_api_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5169,7 +5300,7 @@ func (x *AppKey) ProtoReflect() protoreflect.Message { // Deprecated: Use AppKey.ProtoReflect.Descriptor instead. func (*AppKey) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{81} + return file_server_v1_api_proto_rawDescGZIP(), []int{83} } func (x *AppKey) GetId() string { @@ -5248,7 +5379,7 @@ type ListAppKeysRequest struct { func (x *ListAppKeysRequest) Reset() { *x = ListAppKeysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[82] + mi := &file_server_v1_api_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5261,7 +5392,7 @@ func (x *ListAppKeysRequest) String() string { func (*ListAppKeysRequest) ProtoMessage() {} func (x *ListAppKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[82] + mi := &file_server_v1_api_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5274,7 +5405,7 @@ func (x *ListAppKeysRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppKeysRequest.ProtoReflect.Descriptor instead. func (*ListAppKeysRequest) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{82} + return file_server_v1_api_proto_rawDescGZIP(), []int{84} } func (x *ListAppKeysRequest) GetProject() string { @@ -5296,7 +5427,7 @@ type ListAppKeysResponse struct { func (x *ListAppKeysResponse) Reset() { *x = ListAppKeysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[83] + mi := &file_server_v1_api_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5309,7 +5440,7 @@ func (x *ListAppKeysResponse) String() string { func (*ListAppKeysResponse) ProtoMessage() {} func (x *ListAppKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[83] + mi := &file_server_v1_api_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5322,7 +5453,7 @@ func (x *ListAppKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppKeysResponse.ProtoReflect.Descriptor instead. func (*ListAppKeysResponse) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{83} + return file_server_v1_api_proto_rawDescGZIP(), []int{85} } func (x *ListAppKeysResponse) GetAppKeys() []*AppKey { @@ -5347,7 +5478,7 @@ type DeleteAppKeyRequest struct { func (x *DeleteAppKeyRequest) Reset() { *x = DeleteAppKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[84] + mi := &file_server_v1_api_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5360,7 +5491,7 @@ func (x *DeleteAppKeyRequest) String() string { func (*DeleteAppKeyRequest) ProtoMessage() {} func (x *DeleteAppKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[84] + mi := &file_server_v1_api_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5373,7 +5504,7 @@ func (x *DeleteAppKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteAppKeyRequest) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{84} + return file_server_v1_api_proto_rawDescGZIP(), []int{86} } func (x *DeleteAppKeyRequest) GetId() string { @@ -5403,7 +5534,7 @@ type DeleteAppKeyResponse struct { func (x *DeleteAppKeyResponse) Reset() { *x = DeleteAppKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[85] + mi := &file_server_v1_api_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5416,7 +5547,7 @@ func (x *DeleteAppKeyResponse) String() string { func (*DeleteAppKeyResponse) ProtoMessage() {} func (x *DeleteAppKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[85] + mi := &file_server_v1_api_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5429,7 +5560,7 @@ func (x *DeleteAppKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppKeyResponse.ProtoReflect.Descriptor instead. func (*DeleteAppKeyResponse) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{85} + return file_server_v1_api_proto_rawDescGZIP(), []int{87} } func (x *DeleteAppKeyResponse) GetDeleted() bool { @@ -5454,7 +5585,7 @@ type RotateAppKeyRequest struct { func (x *RotateAppKeyRequest) Reset() { *x = RotateAppKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[86] + mi := &file_server_v1_api_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5467,7 +5598,7 @@ func (x *RotateAppKeyRequest) String() string { func (*RotateAppKeyRequest) ProtoMessage() {} func (x *RotateAppKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[86] + mi := &file_server_v1_api_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5480,7 +5611,7 @@ func (x *RotateAppKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateAppKeyRequest.ProtoReflect.Descriptor instead. func (*RotateAppKeyRequest) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{86} + return file_server_v1_api_proto_rawDescGZIP(), []int{88} } func (x *RotateAppKeyRequest) GetId() string { @@ -5510,7 +5641,7 @@ type RotateAppKeyResponse struct { func (x *RotateAppKeyResponse) Reset() { *x = RotateAppKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_server_v1_api_proto_msgTypes[87] + mi := &file_server_v1_api_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5523,7 +5654,7 @@ func (x *RotateAppKeyResponse) String() string { func (*RotateAppKeyResponse) ProtoMessage() {} func (x *RotateAppKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_api_proto_msgTypes[87] + mi := &file_server_v1_api_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5536,7 +5667,7 @@ func (x *RotateAppKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateAppKeyResponse.ProtoReflect.Descriptor instead. func (*RotateAppKeyResponse) Descriptor() ([]byte, []int) { - return file_server_v1_api_proto_rawDescGZIP(), []int{87} + return file_server_v1_api_proto_rawDescGZIP(), []int{89} } func (x *RotateAppKeyResponse) GetAppKey() *AppKey { @@ -5789,7 +5920,7 @@ var file_server_v1_api_proto_rawDesc = []byte{ 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, @@ -5797,853 +5928,885 @@ var file_server_v1_api_proto_rawDesc = []byte{ 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xc0, 0x03, 0x0a, 0x0d, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x01, 0x71, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, - 0x66, 0x61, 0x63, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x42, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x8b, 0x02, 0x0a, 0x0e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, - 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, - 0x31, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, - 0x74, 0x61, 0x1a, 0x55, 0x0a, 0x0b, 0x46, 0x61, 0x63, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x59, 0x0a, 0x09, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, + 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xc0, 0x03, 0x0a, 0x0d, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x71, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x01, 0x71, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x66, 0x61, 0x63, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x8b, + 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, + 0x41, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, + 0x61, 0x63, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, + 0x74, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x04, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x55, 0x0a, 0x0b, 0x46, 0x61, 0x63, 0x65, 0x74, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x63, 0x65, + 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x59, 0x0a, 0x09, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x48, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x2a, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x71, 0x0a, 0x0b, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x38, + 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x03, 0x61, 0x76, 0x67, 0x88, 0x01, 0x01, 0x12, 0x15, + 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x03, 0x6d, + 0x61, 0x78, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, + 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, 0x73, 0x75, 0x6d, + 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x76, + 0x67, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x69, + 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x75, 0x6d, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x75, + 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x22, 0x20, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, + 0x31, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x01, 0x48, 0x00, 0x52, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x65, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2c, + 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, - 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2a, 0x0a, 0x05, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x71, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x0a, 0x46, - 0x61, 0x63, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x01, 0x48, 0x00, 0x52, 0x03, 0x61, 0x76, 0x67, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, - 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, - 0x02, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x75, 0x6d, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x88, 0x01, 0x01, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x76, 0x67, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x73, 0x75, 0x6d, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x27, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x22, 0x20, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x31, 0x0a, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, - 0x52, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x65, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x68, - 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x48, 0x69, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x04, 0x50, 0x61, 0x67, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, - 0x30, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x72, 0x63, 0x68, 0x48, 0x69, 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x04, + 0x50, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x22, 0x30, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x22, 0x49, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x30, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x49, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x74, 0x22, 0x49, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x30, 0x0a, 0x14, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x49, - 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x47, 0x0a, 0x13, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x22, 0x48, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x47, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x48, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x48, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, + 0x47, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x4d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x69, 0x67, - 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x22, - 0xe8, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x54, 0x0a, 0x20, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x48, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x4d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x6c, 0x79, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, + 0x6e, 0x6c, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x54, 0x0a, + 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x16, 0x44, + 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x63, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x0e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, + 0x0a, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x15, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x5a, + 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x17, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0xce, 0x01, 0x0a, + 0x19, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0xcf, 0x01, + 0x0a, 0x18, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x22, + 0xe1, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x65, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdc, 0x01, 0x0a, 0x15, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x16, 0x44, 0x72, 0x6f, 0x70, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x63, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x38, + 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x0a, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x15, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, - 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x17, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0xce, 0x01, 0x0a, 0x19, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0xcf, 0x01, 0x0a, 0x18, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x22, 0xe1, 0x01, 0x0a, - 0x1a, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, - 0x22, 0x14, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xdc, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x07, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x14, 0x0a, 0x12, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x69, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x1b, 0x0a, - 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x13, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x55, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x22, 0x75, 0x0a, 0x13, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x55, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x70, 0x64, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x14, 0x0a, 0x12, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x22, 0x1b, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, + 0x1b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x58, + 0x0a, 0x1c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, + 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x55, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x06, 0x41, 0x70, 0x70, - 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x2e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x47, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, - 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x22, 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x55, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, - 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x30, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x22, 0x3f, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x07, - 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, - 0x70, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x32, 0x80, 0x29, 0x0a, - 0x06, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x10, 0x42, 0x65, 0x67, 0x69, - 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, - 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0xba, - 0x47, 0x1f, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x13, 0x42, 0x65, - 0x67, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0xc9, - 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0xba, 0x47, 0x20, 0x0a, 0x08, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x20, 0x61, - 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x38, 0x3a, 0x01, 0x2a, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0xd3, 0x01, 0x0a, 0x13, 0x52, - 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xba, 0x47, 0x22, 0x0a, 0x08, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, - 0x12, 0xbd, 0x01, 0x0a, 0x06, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 0x1c, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x2e, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x22, 0xfc, 0x01, 0x0a, 0x06, 0x41, 0x70, 0x70, 0x4b, 0x65, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x2e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, + 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x47, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, + 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, + 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x3f, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0x30, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x22, 0x3f, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x46, 0x0a, 0x14, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x61, 0x70, + 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4b, + 0x65, 0x79, 0x52, 0x06, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x32, 0xff, 0x2a, 0x0a, 0x06, 0x54, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x10, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1f, 0x0a, 0x08, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x13, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xc9, 0x01, 0x0a, + 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x22, 0x33, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x20, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x20, 0x61, 0x20, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xd3, 0x01, 0x0a, 0x13, 0x52, 0x6f, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, + 0x62, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x22, + 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x6f, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x22, 0x0a, 0x08, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xbd, + 0x01, 0x0a, 0x06, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 0x1c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xba, 0x47, 0x1f, 0x0a, 0x0b, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x49, 0x6e, 0x73, 0x65, - 0x72, 0x74, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, - 0x12, 0xcd, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0xba, 0x47, - 0x2a, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, - 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x4f, 0x3a, 0x01, 0x2a, 0x1a, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x12, 0xbd, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x22, 0x49, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1f, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x49, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcd, + 0x01, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4f, 0x1a, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x3a, 0x01, + 0x2a, 0xba, 0x47, 0x2a, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1b, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xbd, + 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xba, 0x47, 0x1f, 0x0a, 0x0b, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x2a, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x12, 0xbe, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x2a, 0x49, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1f, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xbe, + 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0xba, 0x47, 0x20, 0x0a, 0x0b, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x1a, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0xb5, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x74, 0x69, 0x67, - 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x72, 0xba, 0x47, 0x1d, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x20, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x1a, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x30, 0x01, 0x12, 0xc4, 0x01, 0x0a, 0x07, 0x45, 0x78, - 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x7d, 0xba, 0x47, 0x25, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x4f, 0x3a, 0x01, 0x2a, 0x22, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, - 0x12, 0xc0, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0xba, 0x47, 0x20, 0x0a, 0x0b, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x74, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x12, + 0xb5, 0x01, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x22, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x72, 0x65, + 0x61, 0x64, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1d, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x20, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0xfc, 0x01, 0x0a, 0x14, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x2a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4d, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0xba, + 0x47, 0x34, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x25, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xc4, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x22, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x30, 0x01, 0x12, 0xbd, 0x01, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1c, - 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, - 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xba, 0x47, 0x1f, - 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x49, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x69, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0xff, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x81, 0x01, 0xba, 0x47, 0x2c, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0xc8, 0x01, 0x0a, 0x0e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, - 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0xba, 0x47, 0x1e, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0f, 0x44, 0x72, 0x6f, 0x70, 0x20, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, - 0x2a, 0x2a, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x72, 0x6f, 0x70, - 0x12, 0x89, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0xba, 0x47, 0x19, 0x0a, - 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x20, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, - 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x25, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x52, 0xba, 0x47, 0x1c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x10, + 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x25, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xc0, 0x01, + 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x22, 0x49, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x20, 0x0a, 0x0b, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x11, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x30, 0x01, + 0x12, 0xbd, 0x01, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, + 0x22, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, + 0x1f, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0xff, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x81, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x22, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x2c, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0xc8, 0x01, 0x0a, 0x0e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x2a, 0x3d, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x72, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1e, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0f, 0x44, 0x72, + 0x6f, 0x70, 0x20, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x89, 0x01, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, + 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0xba, 0x47, 0x19, + 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0f, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0xba, 0x47, 0x1c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x12, 0xa1, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x3a, 0x0a, 0x08, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0xb8, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x26, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x69, 0x67, - 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x45, 0xba, 0x47, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0xc1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xba, 0x47, 0x3a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x12, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x2a, 0x1d, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xb8, 0x01, 0x0a, 0x10, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x12, 0x26, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, - 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x53, 0xba, 0x47, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0xc3, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x6a, 0xba, 0x47, 0x24, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, + 0x61, 0x73, 0x65, 0x12, 0xc3, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, + 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, + 0x01, 0x2a, 0xba, 0x47, 0x24, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, - 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0xc3, 0x01, 0x0a, - 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x22, 0x2e, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0xba, 0x47, 0x24, 0x0a, 0x08, 0x44, 0x61, 0x74, + 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0xc3, 0x01, 0x0a, 0x0c, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x38, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x24, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x2a, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0xba, 0x47, - 0x22, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0xae, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0xba, 0x47, 0x22, 0x0a, 0x08, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x12, 0xdc, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x22, 0x0a, 0x0b, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x13, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x20, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0xb5, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, + 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, + 0x65, 0x79, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x27, + 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x12, 0xc8, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x12, 0xdc, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, - 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x71, 0xba, 0x47, 0x22, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, - 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x12, 0xb5, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x3a, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x20, 0x6b, + 0x65, 0x79, 0x12, 0xb5, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0xba, 0x47, - 0x27, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, - 0x65, 0x79, 0x73, 0x12, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, - 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, - 0x65, 0x79, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0xc8, 0x01, 0x0a, 0x0c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x69, - 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0xba, 0x47, 0x3a, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x20, - 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0xb5, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, - 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x5c, 0xba, 0x47, 0x27, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2c, 0x3a, 0x01, 0x2a, 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x70, 0x70, - 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xaa, 0x01, - 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x21, 0x2e, + 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0xba, 0x47, 0x27, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x0b, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x21, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0xba, 0x47, 0x29, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x15, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x20, 0x6b, 0x65, - 0x79, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x12, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xba, 0x47, 0x2e, 0x0a, - 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, - 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x9f, 0x12, 0xba, 0x47, 0xda, 0x11, 0x12, 0x96, 0x02, 0x0a, 0x14, 0x54, 0x69, 0x67, 0x72, 0x69, - 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, - 0xac, 0x01, 0x0a, 0x23, 0x23, 0x20, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x0a, 0x54, - 0x68, 0x69, 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, - 0x48, 0x54, 0x54, 0x50, 0x20, 0x41, 0x50, 0x49, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, - 0x50, 0x49, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x4a, 0x53, 0x4f, 0x4e, - 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2d, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x68, - 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x48, 0x54, 0x54, 0x50, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x2a, 0x48, - 0x0a, 0x0e, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, - 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x69, 0x6e, - 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x05, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x1a, - 0x34, 0x0a, 0x24, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x0c, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x1a, 0x22, 0x0a, 0x15, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x38, 0x30, 0x38, 0x31, 0x12, 0x09, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x2a, 0x22, 0x3a, 0x20, 0x0a, 0x1e, 0x0a, - 0x0a, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x0e, 0x0a, - 0x04, 0x68, 0x74, 0x74, 0x70, 0x2a, 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x32, 0x10, 0x0a, - 0x0e, 0x0a, 0x0a, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x3a, - 0x99, 0x03, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x86, 0x03, 0x54, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x20, 0x73, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x50, 0x49, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x20, 0x32, 0x2e, 0x30, 0x20, - 0x41, 0x50, 0x49, 0x73, 0x2e, 0x20, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x70, 0x6c, 0x75, 0x67, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x4f, 0x41, 0x75, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x20, - 0x50, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2c, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, - 0x60, 0x2d, 0x48, 0x20, 0x22, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x65, 0x79, 0x4a, 0x68, 0x62, - 0x47, 0x63, 0x69, 0x4f, 0x69, 0x4a, 0x53, 0x55, 0x7a, 0x49, 0x31, 0x4e, 0x69, 0x49, 0x73, 0x49, - 0x6e, 0x52, 0x35, 0x63, 0x43, 0x49, 0x36, 0x49, 0x6b, 0x70, 0x58, 0x56, 0x43, 0x49, 0x73, 0x49, - 0x6d, 0x74, 0x70, 0x5a, 0x43, 0x49, 0x36, 0x49, 0x22, 0x60, 0x28, 0x72, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x29, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, - 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x48, 0x54, 0x54, 0x50, 0x53, - 0x2e, 0x20, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x76, 0x65, - 0x72, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x48, 0x54, 0x54, 0x50, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x2e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x2e, 0x3a, 0xb4, 0x01, 0x0a, 0x10, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0xba, 0x47, 0x29, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, - 0x12, 0x9f, 0x01, 0x54, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, - 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x68, 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, - 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, - 0x73, 0x2e, 0x3a, 0x82, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, - 0xf5, 0x01, 0x45, 0x76, 0x65, 0x72, 0x79, 0x20, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x46, 0x6f, - 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x42, 0x2c, 0x20, 0x6f, 0x6e, 0x65, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x69, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, - 0x2d, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, - 0x6b, 0x65, 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, - 0x20, 0x41, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x68, 0x65, - 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x3a, 0xd9, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0xcc, 0x01, 0x54, 0x68, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x61, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, - 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x68, - 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x79, 0x6f, - 0x75, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x2e, 0x3a, 0x88, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x79, 0x54, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, - 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x20, 0x41, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, - 0x61, 0x6e, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, - 0x6f, 0x72, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x3a, 0x61, - 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x54, 0x68, - 0x65, 0x20, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x2e, 0x3a, 0x89, 0x01, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x78, 0x54, 0x68, 0x65, 0x20, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, - 0x61, 0x73, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x76, 0x69, 0x73, 0x69, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2c, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x6f, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x3a, 0x55, 0x0a, - 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4c, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, + 0x12, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, + 0x70, 0x70, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x12, 0x52, 0x6f, 0x74, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x22, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, + 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x6b, 0x65, 0x79, + 0x73, 0x2f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x2e, 0x0a, 0x10, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, + 0x70, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x9f, 0x12, 0x0a, + 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, + 0xba, 0x47, 0xda, 0x11, 0x12, 0x96, 0x02, 0x0a, 0x14, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, + 0x41, 0x50, 0x49, 0x20, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0xac, 0x01, + 0x0a, 0x23, 0x23, 0x20, 0x4f, 0x76, 0x65, 0x72, 0x76, 0x69, 0x65, 0x77, 0x0a, 0x54, 0x68, 0x69, + 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x48, 0x54, + 0x54, 0x50, 0x20, 0x41, 0x50, 0x49, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, + 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x73, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2d, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x41, 0x50, 0x49, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x48, 0x54, 0x54, 0x50, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x2a, 0x48, 0x0a, 0x0e, + 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x36, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x4c, + 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x05, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x1a, 0x34, 0x0a, + 0x24, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x65, 0x77, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x0c, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x1a, 0x22, 0x0a, 0x15, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x38, 0x30, 0x38, 0x31, 0x12, 0x09, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x2a, 0x22, 0x3a, 0x20, 0x0a, 0x1e, 0x0a, 0x0a, 0x42, + 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x0e, 0x0a, 0x04, 0x68, + 0x74, 0x74, 0x70, 0x2a, 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x32, 0x10, 0x0a, 0x0e, 0x0a, + 0x0a, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x3a, 0x99, 0x03, + 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x86, 0x03, 0x54, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x20, 0x73, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x50, 0x49, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x73, 0x20, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x41, 0x50, + 0x49, 0x73, 0x2e, 0x20, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x20, 0x70, 0x6c, 0x75, 0x67, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x20, 0x50, 0x61, + 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, + 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x60, 0x2d, + 0x48, 0x20, 0x22, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x3a, 0x20, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x65, 0x79, 0x4a, 0x68, 0x62, 0x47, 0x63, + 0x69, 0x4f, 0x69, 0x4a, 0x53, 0x55, 0x7a, 0x49, 0x31, 0x4e, 0x69, 0x49, 0x73, 0x49, 0x6e, 0x52, + 0x35, 0x63, 0x43, 0x49, 0x36, 0x49, 0x6b, 0x70, 0x58, 0x56, 0x43, 0x49, 0x73, 0x49, 0x6d, 0x74, + 0x70, 0x5a, 0x43, 0x49, 0x36, 0x49, 0x22, 0x60, 0x28, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x29, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6d, + 0x61, 0x64, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x48, 0x54, 0x54, 0x50, 0x53, 0x2e, 0x20, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, + 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x48, 0x54, 0x54, 0x50, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x66, 0x61, 0x69, 0x6c, 0x2e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, + 0x6c, 0x73, 0x6f, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x2e, 0x3a, 0xb4, 0x01, 0x0a, 0x10, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x9f, + 0x01, 0x54, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, + 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2e, + 0x3a, 0x82, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0xf5, 0x01, + 0x45, 0x76, 0x65, 0x72, 0x79, 0x20, 0x54, 0x69, 0x67, 0x72, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x42, 0x2c, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x69, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x2d, 0x74, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x6b, 0x65, + 0x79, 0x2d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x41, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x6c, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, + 0x79, 0x6f, 0x75, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x3a, 0xd9, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0xcc, 0x01, 0x54, 0x68, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x3a, 0x53, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x47, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x73, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, - 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x3a, 0xd4, 0x01, 0x0a, 0x06, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x12, 0xc9, 0x01, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x73, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x66, - 0x75, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, - 0x20, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, - 0x73, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6f, 0x77, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x79, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, - 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x2f, 0x61, 0x70, - 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x61, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x20, 0x41, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x41, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x20, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x2e, 0x3a, 0x88, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x79, 0x54, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, + 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, + 0x41, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, + 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, + 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x3a, 0x61, 0x0a, 0x0a, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x54, 0x68, 0x65, 0x20, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x3a, + 0x89, 0x01, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x78, 0x54, 0x68, 0x65, 0x20, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x20, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, 0x73, + 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x73, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x2c, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2c, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x3a, 0x55, 0x0a, 0x05, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x12, 0x4c, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, + 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, + 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x3a, 0x53, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x47, + 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x73, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x3a, 0xd4, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x12, 0xc9, 0x01, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, + 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, + 0x20, 0x79, 0x6f, 0x75, 0x20, 0x41, 0x50, 0x49, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, + 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x66, 0x75, 0x6c, + 0x20, 0x61, 0x70, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x20, 0x59, + 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6f, 0x77, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x79, + 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x79, 0x20, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x79, 0x6f, 0x75, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6658,7 +6821,7 @@ func file_server_v1_api_proto_rawDescGZIP() []byte { return file_server_v1_api_proto_rawDescData } -var file_server_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 89) +var file_server_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 91) var file_server_v1_api_proto_goTypes = []interface{}{ (*WriteOptions)(nil), // 0: tigrisdata.v1.WriteOptions (*Collation)(nil), // 1: tigrisdata.v1.Collation @@ -6736,20 +6899,22 @@ var file_server_v1_api_proto_goTypes = []interface{}{ (*CollectionMetadata)(nil), // 73: tigrisdata.v1.CollectionMetadata (*CollectionIndex)(nil), // 74: tigrisdata.v1.CollectionIndex (*Field)(nil), // 75: tigrisdata.v1.Field - (*BranchMetadata)(nil), // 76: tigrisdata.v1.BranchMetadata - (*CreateAppKeyRequest)(nil), // 77: tigrisdata.v1.CreateAppKeyRequest - (*CreateAppKeyResponse)(nil), // 78: tigrisdata.v1.CreateAppKeyResponse - (*UpdateAppKeyRequest)(nil), // 79: tigrisdata.v1.UpdateAppKeyRequest - (*UpdateAppKeyResponse)(nil), // 80: tigrisdata.v1.UpdateAppKeyResponse - (*AppKey)(nil), // 81: tigrisdata.v1.AppKey - (*ListAppKeysRequest)(nil), // 82: tigrisdata.v1.ListAppKeysRequest - (*ListAppKeysResponse)(nil), // 83: tigrisdata.v1.ListAppKeysResponse - (*DeleteAppKeyRequest)(nil), // 84: tigrisdata.v1.DeleteAppKeyRequest - (*DeleteAppKeyResponse)(nil), // 85: tigrisdata.v1.DeleteAppKeyResponse - (*RotateAppKeyRequest)(nil), // 86: tigrisdata.v1.RotateAppKeyRequest - (*RotateAppKeyResponse)(nil), // 87: tigrisdata.v1.RotateAppKeyResponse - nil, // 88: tigrisdata.v1.SearchResponse.FacetsEntry - (*timestamppb.Timestamp)(nil), // 89: google.protobuf.Timestamp + (*BuildCollectionIndexRequest)(nil), // 76: tigrisdata.v1.BuildCollectionIndexRequest + (*BuildCollectionIndexResponse)(nil), // 77: tigrisdata.v1.BuildCollectionIndexResponse + (*BranchMetadata)(nil), // 78: tigrisdata.v1.BranchMetadata + (*CreateAppKeyRequest)(nil), // 79: tigrisdata.v1.CreateAppKeyRequest + (*CreateAppKeyResponse)(nil), // 80: tigrisdata.v1.CreateAppKeyResponse + (*UpdateAppKeyRequest)(nil), // 81: tigrisdata.v1.UpdateAppKeyRequest + (*UpdateAppKeyResponse)(nil), // 82: tigrisdata.v1.UpdateAppKeyResponse + (*AppKey)(nil), // 83: tigrisdata.v1.AppKey + (*ListAppKeysRequest)(nil), // 84: tigrisdata.v1.ListAppKeysRequest + (*ListAppKeysResponse)(nil), // 85: tigrisdata.v1.ListAppKeysResponse + (*DeleteAppKeyRequest)(nil), // 86: tigrisdata.v1.DeleteAppKeyRequest + (*DeleteAppKeyResponse)(nil), // 87: tigrisdata.v1.DeleteAppKeyResponse + (*RotateAppKeyRequest)(nil), // 88: tigrisdata.v1.RotateAppKeyRequest + (*RotateAppKeyResponse)(nil), // 89: tigrisdata.v1.RotateAppKeyResponse + nil, // 90: tigrisdata.v1.SearchResponse.FacetsEntry + (*timestamppb.Timestamp)(nil), // 91: google.protobuf.Timestamp } var file_server_v1_api_proto_depIdxs = []int32{ 1, // 0: tigrisdata.v1.ReadRequestOptions.collation:type_name -> tigrisdata.v1.Collation @@ -6757,9 +6922,9 @@ var file_server_v1_api_proto_depIdxs = []int32{ 6, // 2: tigrisdata.v1.BeginTransactionResponse.tx_ctx:type_name -> tigrisdata.v1.TransactionCtx 0, // 3: tigrisdata.v1.InsertRequestOptions.write_options:type_name -> tigrisdata.v1.WriteOptions 0, // 4: tigrisdata.v1.ImportRequestOptions.write_options:type_name -> tigrisdata.v1.WriteOptions - 89, // 5: tigrisdata.v1.ResponseMetadata.created_at:type_name -> google.protobuf.Timestamp - 89, // 6: tigrisdata.v1.ResponseMetadata.updated_at:type_name -> google.protobuf.Timestamp - 89, // 7: tigrisdata.v1.ResponseMetadata.deleted_at:type_name -> google.protobuf.Timestamp + 91, // 5: tigrisdata.v1.ResponseMetadata.created_at:type_name -> google.protobuf.Timestamp + 91, // 6: tigrisdata.v1.ResponseMetadata.updated_at:type_name -> google.protobuf.Timestamp + 91, // 7: tigrisdata.v1.ResponseMetadata.deleted_at:type_name -> google.protobuf.Timestamp 13, // 8: tigrisdata.v1.InsertRequest.options:type_name -> tigrisdata.v1.InsertRequestOptions 15, // 9: tigrisdata.v1.InsertResponse.metadata:type_name -> tigrisdata.v1.ResponseMetadata 14, // 10: tigrisdata.v1.ImportRequest.options:type_name -> tigrisdata.v1.ImportRequestOptions @@ -6779,11 +6944,11 @@ var file_server_v1_api_proto_depIdxs = []int32{ 15, // 24: tigrisdata.v1.ReadResponse.metadata:type_name -> tigrisdata.v1.ResponseMetadata 1, // 25: tigrisdata.v1.SearchRequest.collation:type_name -> tigrisdata.v1.Collation 34, // 26: tigrisdata.v1.SearchResponse.hits:type_name -> tigrisdata.v1.SearchHit - 88, // 27: tigrisdata.v1.SearchResponse.facets:type_name -> tigrisdata.v1.SearchResponse.FacetsEntry + 90, // 27: tigrisdata.v1.SearchResponse.facets:type_name -> tigrisdata.v1.SearchResponse.FacetsEntry 39, // 28: tigrisdata.v1.SearchResponse.meta:type_name -> tigrisdata.v1.SearchMetadata 35, // 29: tigrisdata.v1.SearchHit.metadata:type_name -> tigrisdata.v1.SearchHitMeta - 89, // 30: tigrisdata.v1.SearchHitMeta.created_at:type_name -> google.protobuf.Timestamp - 89, // 31: tigrisdata.v1.SearchHitMeta.updated_at:type_name -> google.protobuf.Timestamp + 91, // 30: tigrisdata.v1.SearchHitMeta.created_at:type_name -> google.protobuf.Timestamp + 91, // 31: tigrisdata.v1.SearchHitMeta.updated_at:type_name -> google.protobuf.Timestamp 41, // 32: tigrisdata.v1.SearchHitMeta.match:type_name -> tigrisdata.v1.Match 37, // 33: tigrisdata.v1.SearchFacet.counts:type_name -> tigrisdata.v1.FacetCount 38, // 34: tigrisdata.v1.SearchFacet.stats:type_name -> tigrisdata.v1.FacetStats @@ -6795,7 +6960,7 @@ var file_server_v1_api_proto_depIdxs = []int32{ 4, // 40: tigrisdata.v1.DropCollectionRequest.options:type_name -> tigrisdata.v1.CollectionOptions 71, // 41: tigrisdata.v1.ProjectInfo.metadata:type_name -> tigrisdata.v1.ProjectMetadata 73, // 42: tigrisdata.v1.CollectionInfo.metadata:type_name -> tigrisdata.v1.CollectionMetadata - 76, // 43: tigrisdata.v1.BranchInfo.metadata:type_name -> tigrisdata.v1.BranchMetadata + 78, // 43: tigrisdata.v1.BranchInfo.metadata:type_name -> tigrisdata.v1.BranchMetadata 58, // 44: tigrisdata.v1.ListProjectsResponse.projects:type_name -> tigrisdata.v1.ProjectInfo 4, // 45: tigrisdata.v1.ListCollectionsRequest.options:type_name -> tigrisdata.v1.CollectionOptions 59, // 46: tigrisdata.v1.ListCollectionsResponse.collections:type_name -> tigrisdata.v1.CollectionInfo @@ -6807,70 +6972,73 @@ var file_server_v1_api_proto_depIdxs = []int32{ 73, // 52: tigrisdata.v1.CollectionDescription.metadata:type_name -> tigrisdata.v1.CollectionMetadata 74, // 53: tigrisdata.v1.CollectionDescription.indexes:type_name -> tigrisdata.v1.CollectionIndex 75, // 54: tigrisdata.v1.CollectionIndex.fields:type_name -> tigrisdata.v1.Field - 81, // 55: tigrisdata.v1.CreateAppKeyResponse.created_app_key:type_name -> tigrisdata.v1.AppKey - 81, // 56: tigrisdata.v1.UpdateAppKeyResponse.updated_app_key:type_name -> tigrisdata.v1.AppKey - 81, // 57: tigrisdata.v1.ListAppKeysResponse.app_keys:type_name -> tigrisdata.v1.AppKey - 81, // 58: tigrisdata.v1.RotateAppKeyResponse.app_key:type_name -> tigrisdata.v1.AppKey - 36, // 59: tigrisdata.v1.SearchResponse.FacetsEntry.value:type_name -> tigrisdata.v1.SearchFacet - 7, // 60: tigrisdata.v1.Tigris.BeginTransaction:input_type -> tigrisdata.v1.BeginTransactionRequest - 9, // 61: tigrisdata.v1.Tigris.CommitTransaction:input_type -> tigrisdata.v1.CommitTransactionRequest - 11, // 62: tigrisdata.v1.Tigris.RollbackTransaction:input_type -> tigrisdata.v1.RollbackTransactionRequest - 16, // 63: tigrisdata.v1.Tigris.Insert:input_type -> tigrisdata.v1.InsertRequest - 21, // 64: tigrisdata.v1.Tigris.Replace:input_type -> tigrisdata.v1.ReplaceRequest - 24, // 65: tigrisdata.v1.Tigris.Delete:input_type -> tigrisdata.v1.DeleteRequest - 27, // 66: tigrisdata.v1.Tigris.Update:input_type -> tigrisdata.v1.UpdateRequest - 29, // 67: tigrisdata.v1.Tigris.Read:input_type -> tigrisdata.v1.ReadRequest - 29, // 68: tigrisdata.v1.Tigris.Explain:input_type -> tigrisdata.v1.ReadRequest - 32, // 69: tigrisdata.v1.Tigris.Search:input_type -> tigrisdata.v1.SearchRequest - 18, // 70: tigrisdata.v1.Tigris.Import:input_type -> tigrisdata.v1.ImportRequest - 54, // 71: tigrisdata.v1.Tigris.CreateOrUpdateCollection:input_type -> tigrisdata.v1.CreateOrUpdateCollectionRequest - 56, // 72: tigrisdata.v1.Tigris.DropCollection:input_type -> tigrisdata.v1.DropCollectionRequest - 61, // 73: tigrisdata.v1.Tigris.ListProjects:input_type -> tigrisdata.v1.ListProjectsRequest - 63, // 74: tigrisdata.v1.Tigris.ListCollections:input_type -> tigrisdata.v1.ListCollectionsRequest - 44, // 75: tigrisdata.v1.Tigris.CreateProject:input_type -> tigrisdata.v1.CreateProjectRequest - 46, // 76: tigrisdata.v1.Tigris.DeleteProject:input_type -> tigrisdata.v1.DeleteProjectRequest - 65, // 77: tigrisdata.v1.Tigris.DescribeDatabase:input_type -> tigrisdata.v1.DescribeDatabaseRequest - 48, // 78: tigrisdata.v1.Tigris.CreateBranch:input_type -> tigrisdata.v1.CreateBranchRequest - 50, // 79: tigrisdata.v1.Tigris.DeleteBranch:input_type -> tigrisdata.v1.DeleteBranchRequest - 52, // 80: tigrisdata.v1.Tigris.ListBranches:input_type -> tigrisdata.v1.ListBranchesRequest - 66, // 81: tigrisdata.v1.Tigris.DescribeCollection:input_type -> tigrisdata.v1.DescribeCollectionRequest - 77, // 82: tigrisdata.v1.Tigris.CreateAppKey:input_type -> tigrisdata.v1.CreateAppKeyRequest - 79, // 83: tigrisdata.v1.Tigris.UpdateAppKey:input_type -> tigrisdata.v1.UpdateAppKeyRequest - 84, // 84: tigrisdata.v1.Tigris.DeleteAppKey:input_type -> tigrisdata.v1.DeleteAppKeyRequest - 82, // 85: tigrisdata.v1.Tigris.ListAppKeys:input_type -> tigrisdata.v1.ListAppKeysRequest - 86, // 86: tigrisdata.v1.Tigris.RotateAppKeySecret:input_type -> tigrisdata.v1.RotateAppKeyRequest - 8, // 87: tigrisdata.v1.Tigris.BeginTransaction:output_type -> tigrisdata.v1.BeginTransactionResponse - 10, // 88: tigrisdata.v1.Tigris.CommitTransaction:output_type -> tigrisdata.v1.CommitTransactionResponse - 12, // 89: tigrisdata.v1.Tigris.RollbackTransaction:output_type -> tigrisdata.v1.RollbackTransactionResponse - 17, // 90: tigrisdata.v1.Tigris.Insert:output_type -> tigrisdata.v1.InsertResponse - 22, // 91: tigrisdata.v1.Tigris.Replace:output_type -> tigrisdata.v1.ReplaceResponse - 25, // 92: tigrisdata.v1.Tigris.Delete:output_type -> tigrisdata.v1.DeleteResponse - 28, // 93: tigrisdata.v1.Tigris.Update:output_type -> tigrisdata.v1.UpdateResponse - 30, // 94: tigrisdata.v1.Tigris.Read:output_type -> tigrisdata.v1.ReadResponse - 31, // 95: tigrisdata.v1.Tigris.Explain:output_type -> tigrisdata.v1.ExplainResponse - 33, // 96: tigrisdata.v1.Tigris.Search:output_type -> tigrisdata.v1.SearchResponse - 19, // 97: tigrisdata.v1.Tigris.Import:output_type -> tigrisdata.v1.ImportResponse - 55, // 98: tigrisdata.v1.Tigris.CreateOrUpdateCollection:output_type -> tigrisdata.v1.CreateOrUpdateCollectionResponse - 57, // 99: tigrisdata.v1.Tigris.DropCollection:output_type -> tigrisdata.v1.DropCollectionResponse - 62, // 100: tigrisdata.v1.Tigris.ListProjects:output_type -> tigrisdata.v1.ListProjectsResponse - 64, // 101: tigrisdata.v1.Tigris.ListCollections:output_type -> tigrisdata.v1.ListCollectionsResponse - 45, // 102: tigrisdata.v1.Tigris.CreateProject:output_type -> tigrisdata.v1.CreateProjectResponse - 47, // 103: tigrisdata.v1.Tigris.DeleteProject:output_type -> tigrisdata.v1.DeleteProjectResponse - 67, // 104: tigrisdata.v1.Tigris.DescribeDatabase:output_type -> tigrisdata.v1.DescribeDatabaseResponse - 49, // 105: tigrisdata.v1.Tigris.CreateBranch:output_type -> tigrisdata.v1.CreateBranchResponse - 51, // 106: tigrisdata.v1.Tigris.DeleteBranch:output_type -> tigrisdata.v1.DeleteBranchResponse - 53, // 107: tigrisdata.v1.Tigris.ListBranches:output_type -> tigrisdata.v1.ListBranchesResponse - 68, // 108: tigrisdata.v1.Tigris.DescribeCollection:output_type -> tigrisdata.v1.DescribeCollectionResponse - 78, // 109: tigrisdata.v1.Tigris.CreateAppKey:output_type -> tigrisdata.v1.CreateAppKeyResponse - 80, // 110: tigrisdata.v1.Tigris.UpdateAppKey:output_type -> tigrisdata.v1.UpdateAppKeyResponse - 85, // 111: tigrisdata.v1.Tigris.DeleteAppKey:output_type -> tigrisdata.v1.DeleteAppKeyResponse - 83, // 112: tigrisdata.v1.Tigris.ListAppKeys:output_type -> tigrisdata.v1.ListAppKeysResponse - 87, // 113: tigrisdata.v1.Tigris.RotateAppKeySecret:output_type -> tigrisdata.v1.RotateAppKeyResponse - 87, // [87:114] is the sub-list for method output_type - 60, // [60:87] is the sub-list for method input_type - 60, // [60:60] is the sub-list for extension type_name - 60, // [60:60] is the sub-list for extension extendee - 0, // [0:60] is the sub-list for field type_name + 74, // 55: tigrisdata.v1.BuildCollectionIndexResponse.indexes:type_name -> tigrisdata.v1.CollectionIndex + 83, // 56: tigrisdata.v1.CreateAppKeyResponse.created_app_key:type_name -> tigrisdata.v1.AppKey + 83, // 57: tigrisdata.v1.UpdateAppKeyResponse.updated_app_key:type_name -> tigrisdata.v1.AppKey + 83, // 58: tigrisdata.v1.ListAppKeysResponse.app_keys:type_name -> tigrisdata.v1.AppKey + 83, // 59: tigrisdata.v1.RotateAppKeyResponse.app_key:type_name -> tigrisdata.v1.AppKey + 36, // 60: tigrisdata.v1.SearchResponse.FacetsEntry.value:type_name -> tigrisdata.v1.SearchFacet + 7, // 61: tigrisdata.v1.Tigris.BeginTransaction:input_type -> tigrisdata.v1.BeginTransactionRequest + 9, // 62: tigrisdata.v1.Tigris.CommitTransaction:input_type -> tigrisdata.v1.CommitTransactionRequest + 11, // 63: tigrisdata.v1.Tigris.RollbackTransaction:input_type -> tigrisdata.v1.RollbackTransactionRequest + 16, // 64: tigrisdata.v1.Tigris.Insert:input_type -> tigrisdata.v1.InsertRequest + 21, // 65: tigrisdata.v1.Tigris.Replace:input_type -> tigrisdata.v1.ReplaceRequest + 24, // 66: tigrisdata.v1.Tigris.Delete:input_type -> tigrisdata.v1.DeleteRequest + 27, // 67: tigrisdata.v1.Tigris.Update:input_type -> tigrisdata.v1.UpdateRequest + 29, // 68: tigrisdata.v1.Tigris.Read:input_type -> tigrisdata.v1.ReadRequest + 76, // 69: tigrisdata.v1.Tigris.BuildCollectionIndex:input_type -> tigrisdata.v1.BuildCollectionIndexRequest + 29, // 70: tigrisdata.v1.Tigris.Explain:input_type -> tigrisdata.v1.ReadRequest + 32, // 71: tigrisdata.v1.Tigris.Search:input_type -> tigrisdata.v1.SearchRequest + 18, // 72: tigrisdata.v1.Tigris.Import:input_type -> tigrisdata.v1.ImportRequest + 54, // 73: tigrisdata.v1.Tigris.CreateOrUpdateCollection:input_type -> tigrisdata.v1.CreateOrUpdateCollectionRequest + 56, // 74: tigrisdata.v1.Tigris.DropCollection:input_type -> tigrisdata.v1.DropCollectionRequest + 61, // 75: tigrisdata.v1.Tigris.ListProjects:input_type -> tigrisdata.v1.ListProjectsRequest + 63, // 76: tigrisdata.v1.Tigris.ListCollections:input_type -> tigrisdata.v1.ListCollectionsRequest + 44, // 77: tigrisdata.v1.Tigris.CreateProject:input_type -> tigrisdata.v1.CreateProjectRequest + 46, // 78: tigrisdata.v1.Tigris.DeleteProject:input_type -> tigrisdata.v1.DeleteProjectRequest + 65, // 79: tigrisdata.v1.Tigris.DescribeDatabase:input_type -> tigrisdata.v1.DescribeDatabaseRequest + 48, // 80: tigrisdata.v1.Tigris.CreateBranch:input_type -> tigrisdata.v1.CreateBranchRequest + 50, // 81: tigrisdata.v1.Tigris.DeleteBranch:input_type -> tigrisdata.v1.DeleteBranchRequest + 52, // 82: tigrisdata.v1.Tigris.ListBranches:input_type -> tigrisdata.v1.ListBranchesRequest + 66, // 83: tigrisdata.v1.Tigris.DescribeCollection:input_type -> tigrisdata.v1.DescribeCollectionRequest + 79, // 84: tigrisdata.v1.Tigris.CreateAppKey:input_type -> tigrisdata.v1.CreateAppKeyRequest + 81, // 85: tigrisdata.v1.Tigris.UpdateAppKey:input_type -> tigrisdata.v1.UpdateAppKeyRequest + 86, // 86: tigrisdata.v1.Tigris.DeleteAppKey:input_type -> tigrisdata.v1.DeleteAppKeyRequest + 84, // 87: tigrisdata.v1.Tigris.ListAppKeys:input_type -> tigrisdata.v1.ListAppKeysRequest + 88, // 88: tigrisdata.v1.Tigris.RotateAppKeySecret:input_type -> tigrisdata.v1.RotateAppKeyRequest + 8, // 89: tigrisdata.v1.Tigris.BeginTransaction:output_type -> tigrisdata.v1.BeginTransactionResponse + 10, // 90: tigrisdata.v1.Tigris.CommitTransaction:output_type -> tigrisdata.v1.CommitTransactionResponse + 12, // 91: tigrisdata.v1.Tigris.RollbackTransaction:output_type -> tigrisdata.v1.RollbackTransactionResponse + 17, // 92: tigrisdata.v1.Tigris.Insert:output_type -> tigrisdata.v1.InsertResponse + 22, // 93: tigrisdata.v1.Tigris.Replace:output_type -> tigrisdata.v1.ReplaceResponse + 25, // 94: tigrisdata.v1.Tigris.Delete:output_type -> tigrisdata.v1.DeleteResponse + 28, // 95: tigrisdata.v1.Tigris.Update:output_type -> tigrisdata.v1.UpdateResponse + 30, // 96: tigrisdata.v1.Tigris.Read:output_type -> tigrisdata.v1.ReadResponse + 77, // 97: tigrisdata.v1.Tigris.BuildCollectionIndex:output_type -> tigrisdata.v1.BuildCollectionIndexResponse + 31, // 98: tigrisdata.v1.Tigris.Explain:output_type -> tigrisdata.v1.ExplainResponse + 33, // 99: tigrisdata.v1.Tigris.Search:output_type -> tigrisdata.v1.SearchResponse + 19, // 100: tigrisdata.v1.Tigris.Import:output_type -> tigrisdata.v1.ImportResponse + 55, // 101: tigrisdata.v1.Tigris.CreateOrUpdateCollection:output_type -> tigrisdata.v1.CreateOrUpdateCollectionResponse + 57, // 102: tigrisdata.v1.Tigris.DropCollection:output_type -> tigrisdata.v1.DropCollectionResponse + 62, // 103: tigrisdata.v1.Tigris.ListProjects:output_type -> tigrisdata.v1.ListProjectsResponse + 64, // 104: tigrisdata.v1.Tigris.ListCollections:output_type -> tigrisdata.v1.ListCollectionsResponse + 45, // 105: tigrisdata.v1.Tigris.CreateProject:output_type -> tigrisdata.v1.CreateProjectResponse + 47, // 106: tigrisdata.v1.Tigris.DeleteProject:output_type -> tigrisdata.v1.DeleteProjectResponse + 67, // 107: tigrisdata.v1.Tigris.DescribeDatabase:output_type -> tigrisdata.v1.DescribeDatabaseResponse + 49, // 108: tigrisdata.v1.Tigris.CreateBranch:output_type -> tigrisdata.v1.CreateBranchResponse + 51, // 109: tigrisdata.v1.Tigris.DeleteBranch:output_type -> tigrisdata.v1.DeleteBranchResponse + 53, // 110: tigrisdata.v1.Tigris.ListBranches:output_type -> tigrisdata.v1.ListBranchesResponse + 68, // 111: tigrisdata.v1.Tigris.DescribeCollection:output_type -> tigrisdata.v1.DescribeCollectionResponse + 80, // 112: tigrisdata.v1.Tigris.CreateAppKey:output_type -> tigrisdata.v1.CreateAppKeyResponse + 82, // 113: tigrisdata.v1.Tigris.UpdateAppKey:output_type -> tigrisdata.v1.UpdateAppKeyResponse + 87, // 114: tigrisdata.v1.Tigris.DeleteAppKey:output_type -> tigrisdata.v1.DeleteAppKeyResponse + 85, // 115: tigrisdata.v1.Tigris.ListAppKeys:output_type -> tigrisdata.v1.ListAppKeysResponse + 89, // 116: tigrisdata.v1.Tigris.RotateAppKeySecret:output_type -> tigrisdata.v1.RotateAppKeyResponse + 89, // [89:117] is the sub-list for method output_type + 61, // [61:89] is the sub-list for method input_type + 61, // [61:61] is the sub-list for extension type_name + 61, // [61:61] is the sub-list for extension extendee + 0, // [0:61] is the sub-list for field type_name } func init() { file_server_v1_api_proto_init() } @@ -7792,7 +7960,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BranchMetadata); i { + switch v := v.(*BuildCollectionIndexRequest); i { case 0: return &v.state case 1: @@ -7804,7 +7972,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAppKeyRequest); i { + switch v := v.(*BuildCollectionIndexResponse); i { case 0: return &v.state case 1: @@ -7816,7 +7984,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAppKeyResponse); i { + switch v := v.(*BranchMetadata); i { case 0: return &v.state case 1: @@ -7828,7 +7996,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppKeyRequest); i { + switch v := v.(*CreateAppKeyRequest); i { case 0: return &v.state case 1: @@ -7840,7 +8008,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppKeyResponse); i { + switch v := v.(*CreateAppKeyResponse); i { case 0: return &v.state case 1: @@ -7852,7 +8020,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppKey); i { + switch v := v.(*UpdateAppKeyRequest); i { case 0: return &v.state case 1: @@ -7864,7 +8032,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppKeysRequest); i { + switch v := v.(*UpdateAppKeyResponse); i { case 0: return &v.state case 1: @@ -7876,7 +8044,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppKeysResponse); i { + switch v := v.(*AppKey); i { case 0: return &v.state case 1: @@ -7888,7 +8056,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppKeyRequest); i { + switch v := v.(*ListAppKeysRequest); i { case 0: return &v.state case 1: @@ -7900,7 +8068,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppKeyResponse); i { + switch v := v.(*ListAppKeysResponse); i { case 0: return &v.state case 1: @@ -7912,7 +8080,7 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RotateAppKeyRequest); i { + switch v := v.(*DeleteAppKeyRequest); i { case 0: return &v.state case 1: @@ -7924,6 +8092,30 @@ func file_server_v1_api_proto_init() { } } file_server_v1_api_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteAppKeyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_api_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RotateAppKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_api_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RotateAppKeyResponse); i { case 0: return &v.state @@ -7944,7 +8136,7 @@ func file_server_v1_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_v1_api_proto_rawDesc, NumEnums: 0, - NumMessages: 89, + NumMessages: 91, NumExtensions: 0, NumServices: 1, }, diff --git a/api/server/v1/api.pb.gw.go b/api/server/v1/api.pb.gw.go index 4cb7604..84040d1 100644 --- a/api/server/v1/api.pb.gw.go +++ b/api/server/v1/api.pb.gw.go @@ -639,6 +639,94 @@ func request_Tigris_Read_0(ctx context.Context, marshaler runtime.Marshaler, cli } +func request_Tigris_BuildCollectionIndex_0(ctx context.Context, marshaler runtime.Marshaler, client TigrisClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BuildCollectionIndexRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["collection"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "collection") + } + + protoReq.Collection, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collection", err) + } + + msg, err := client.BuildCollectionIndex(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Tigris_BuildCollectionIndex_0(ctx context.Context, marshaler runtime.Marshaler, server TigrisServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BuildCollectionIndexRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + val, ok = pathParams["collection"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "collection") + } + + protoReq.Collection, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collection", err) + } + + msg, err := server.BuildCollectionIndex(ctx, &protoReq) + return msg, metadata, err + +} + func request_Tigris_Explain_0(ctx context.Context, marshaler runtime.Marshaler, client TigrisClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ReadRequest var metadata runtime.ServerMetadata @@ -1062,7 +1150,7 @@ func local_request_Tigris_ListProjects_0(ctx context.Context, marshaler runtime. } var ( - filter_Tigris_ListCollections_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} + filter_Tigris_ListCollections_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) func request_Tigris_ListCollections_0(ctx context.Context, marshaler runtime.Marshaler, client TigrisClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -2163,6 +2251,31 @@ func RegisterTigrisHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser return }) + mux.Handle("POST", pattern_Tigris_BuildCollectionIndex_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/tigrisdata.v1.Tigris/BuildCollectionIndex", runtime.WithHTTPPathPattern("/v1/projects/{project}/database/collections/{collection}/documents/index")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Tigris_BuildCollectionIndex_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tigris_BuildCollectionIndex_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Tigris_Explain_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2626,7 +2739,7 @@ func RegisterTigrisHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser // RegisterTigrisHandlerFromEndpoint is same as RegisterTigrisHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterTigrisHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } @@ -2837,6 +2950,28 @@ func RegisterTigrisHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_Tigris_BuildCollectionIndex_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/tigrisdata.v1.Tigris/BuildCollectionIndex", runtime.WithHTTPPathPattern("/v1/projects/{project}/database/collections/{collection}/documents/index")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Tigris_BuildCollectionIndex_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tigris_BuildCollectionIndex_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Tigris_Explain_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3275,6 +3410,8 @@ var ( pattern_Tigris_Read_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 2, 7}, []string{"v1", "projects", "project", "database", "collections", "collection", "documents", "read"}, "")) + pattern_Tigris_BuildCollectionIndex_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 2, 7}, []string{"v1", "projects", "project", "database", "collections", "collection", "documents", "index"}, "")) + pattern_Tigris_Explain_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 2, 7}, []string{"v1", "projects", "project", "database", "collections", "collection", "documents", "explain"}, "")) pattern_Tigris_Search_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 2, 7}, []string{"v1", "projects", "project", "database", "collections", "collection", "documents", "search"}, "")) @@ -3331,6 +3468,8 @@ var ( forward_Tigris_Read_0 = runtime.ForwardResponseStream + forward_Tigris_BuildCollectionIndex_0 = runtime.ForwardResponseMessage + forward_Tigris_Explain_0 = runtime.ForwardResponseMessage forward_Tigris_Search_0 = runtime.ForwardResponseStream diff --git a/api/server/v1/api_grpc.pb.go b/api/server/v1/api_grpc.pb.go index 3a31b62..503927e 100644 --- a/api/server/v1/api_grpc.pb.go +++ b/api/server/v1/api_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/api.proto package api @@ -32,36 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Tigris_BeginTransaction_FullMethodName = "/tigrisdata.v1.Tigris/BeginTransaction" - Tigris_CommitTransaction_FullMethodName = "/tigrisdata.v1.Tigris/CommitTransaction" - Tigris_RollbackTransaction_FullMethodName = "/tigrisdata.v1.Tigris/RollbackTransaction" - Tigris_Insert_FullMethodName = "/tigrisdata.v1.Tigris/Insert" - Tigris_Replace_FullMethodName = "/tigrisdata.v1.Tigris/Replace" - Tigris_Delete_FullMethodName = "/tigrisdata.v1.Tigris/Delete" - Tigris_Update_FullMethodName = "/tigrisdata.v1.Tigris/Update" - Tigris_Read_FullMethodName = "/tigrisdata.v1.Tigris/Read" - Tigris_Explain_FullMethodName = "/tigrisdata.v1.Tigris/Explain" - Tigris_Search_FullMethodName = "/tigrisdata.v1.Tigris/Search" - Tigris_Import_FullMethodName = "/tigrisdata.v1.Tigris/Import" - Tigris_CreateOrUpdateCollection_FullMethodName = "/tigrisdata.v1.Tigris/CreateOrUpdateCollection" - Tigris_DropCollection_FullMethodName = "/tigrisdata.v1.Tigris/DropCollection" - Tigris_ListProjects_FullMethodName = "/tigrisdata.v1.Tigris/ListProjects" - Tigris_ListCollections_FullMethodName = "/tigrisdata.v1.Tigris/ListCollections" - Tigris_CreateProject_FullMethodName = "/tigrisdata.v1.Tigris/CreateProject" - Tigris_DeleteProject_FullMethodName = "/tigrisdata.v1.Tigris/DeleteProject" - Tigris_DescribeDatabase_FullMethodName = "/tigrisdata.v1.Tigris/DescribeDatabase" - Tigris_CreateBranch_FullMethodName = "/tigrisdata.v1.Tigris/CreateBranch" - Tigris_DeleteBranch_FullMethodName = "/tigrisdata.v1.Tigris/DeleteBranch" - Tigris_ListBranches_FullMethodName = "/tigrisdata.v1.Tigris/ListBranches" - Tigris_DescribeCollection_FullMethodName = "/tigrisdata.v1.Tigris/DescribeCollection" - Tigris_CreateAppKey_FullMethodName = "/tigrisdata.v1.Tigris/CreateAppKey" - Tigris_UpdateAppKey_FullMethodName = "/tigrisdata.v1.Tigris/UpdateAppKey" - Tigris_DeleteAppKey_FullMethodName = "/tigrisdata.v1.Tigris/DeleteAppKey" - Tigris_ListAppKeys_FullMethodName = "/tigrisdata.v1.Tigris/ListAppKeys" - Tigris_RotateAppKeySecret_FullMethodName = "/tigrisdata.v1.Tigris/RotateAppKeySecret" -) - // TigrisClient is the client API for Tigris service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -93,6 +49,9 @@ type TigrisClient interface { // the `limit` parameter is used to specify the number of documents to read. You can find more detailed documentation // of the Read API here. Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (Tigris_ReadClient, error) + // Index Collection will do a full scan off all documents in the collection and rebuild + // all indexes in the collection + BuildCollectionIndex(ctx context.Context, in *BuildCollectionIndexRequest, opts ...grpc.CallOption) (*BuildCollectionIndexResponse, error) // Explain takes the same parameters as Read and returns how the Tigris Query Planner would process the // response Explain(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (*ExplainResponse, error) @@ -160,7 +119,7 @@ func NewTigrisClient(cc grpc.ClientConnInterface) TigrisClient { func (c *tigrisClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) { out := new(BeginTransactionResponse) - err := c.cc.Invoke(ctx, Tigris_BeginTransaction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/BeginTransaction", in, out, opts...) if err != nil { return nil, err } @@ -169,7 +128,7 @@ func (c *tigrisClient) BeginTransaction(ctx context.Context, in *BeginTransactio func (c *tigrisClient) CommitTransaction(ctx context.Context, in *CommitTransactionRequest, opts ...grpc.CallOption) (*CommitTransactionResponse, error) { out := new(CommitTransactionResponse) - err := c.cc.Invoke(ctx, Tigris_CommitTransaction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/CommitTransaction", in, out, opts...) if err != nil { return nil, err } @@ -178,7 +137,7 @@ func (c *tigrisClient) CommitTransaction(ctx context.Context, in *CommitTransact func (c *tigrisClient) RollbackTransaction(ctx context.Context, in *RollbackTransactionRequest, opts ...grpc.CallOption) (*RollbackTransactionResponse, error) { out := new(RollbackTransactionResponse) - err := c.cc.Invoke(ctx, Tigris_RollbackTransaction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/RollbackTransaction", in, out, opts...) if err != nil { return nil, err } @@ -187,7 +146,7 @@ func (c *tigrisClient) RollbackTransaction(ctx context.Context, in *RollbackTran func (c *tigrisClient) Insert(ctx context.Context, in *InsertRequest, opts ...grpc.CallOption) (*InsertResponse, error) { out := new(InsertResponse) - err := c.cc.Invoke(ctx, Tigris_Insert_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Insert", in, out, opts...) if err != nil { return nil, err } @@ -196,7 +155,7 @@ func (c *tigrisClient) Insert(ctx context.Context, in *InsertRequest, opts ...gr func (c *tigrisClient) Replace(ctx context.Context, in *ReplaceRequest, opts ...grpc.CallOption) (*ReplaceResponse, error) { out := new(ReplaceResponse) - err := c.cc.Invoke(ctx, Tigris_Replace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Replace", in, out, opts...) if err != nil { return nil, err } @@ -205,7 +164,7 @@ func (c *tigrisClient) Replace(ctx context.Context, in *ReplaceRequest, opts ... func (c *tigrisClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) { out := new(DeleteResponse) - err := c.cc.Invoke(ctx, Tigris_Delete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Delete", in, out, opts...) if err != nil { return nil, err } @@ -214,7 +173,7 @@ func (c *tigrisClient) Delete(ctx context.Context, in *DeleteRequest, opts ...gr func (c *tigrisClient) Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error) { out := new(UpdateResponse) - err := c.cc.Invoke(ctx, Tigris_Update_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Update", in, out, opts...) if err != nil { return nil, err } @@ -222,7 +181,7 @@ func (c *tigrisClient) Update(ctx context.Context, in *UpdateRequest, opts ...gr } func (c *tigrisClient) Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (Tigris_ReadClient, error) { - stream, err := c.cc.NewStream(ctx, &Tigris_ServiceDesc.Streams[0], Tigris_Read_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Tigris_ServiceDesc.Streams[0], "/tigrisdata.v1.Tigris/Read", opts...) if err != nil { return nil, err } @@ -253,9 +212,18 @@ func (x *tigrisReadClient) Recv() (*ReadResponse, error) { return m, nil } +func (c *tigrisClient) BuildCollectionIndex(ctx context.Context, in *BuildCollectionIndexRequest, opts ...grpc.CallOption) (*BuildCollectionIndexResponse, error) { + out := new(BuildCollectionIndexResponse) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/BuildCollectionIndex", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *tigrisClient) Explain(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (*ExplainResponse, error) { out := new(ExplainResponse) - err := c.cc.Invoke(ctx, Tigris_Explain_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Explain", in, out, opts...) if err != nil { return nil, err } @@ -263,7 +231,7 @@ func (c *tigrisClient) Explain(ctx context.Context, in *ReadRequest, opts ...grp } func (c *tigrisClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (Tigris_SearchClient, error) { - stream, err := c.cc.NewStream(ctx, &Tigris_ServiceDesc.Streams[1], Tigris_Search_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Tigris_ServiceDesc.Streams[1], "/tigrisdata.v1.Tigris/Search", opts...) if err != nil { return nil, err } @@ -296,7 +264,7 @@ func (x *tigrisSearchClient) Recv() (*SearchResponse, error) { func (c *tigrisClient) Import(ctx context.Context, in *ImportRequest, opts ...grpc.CallOption) (*ImportResponse, error) { out := new(ImportResponse) - err := c.cc.Invoke(ctx, Tigris_Import_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/Import", in, out, opts...) if err != nil { return nil, err } @@ -305,7 +273,7 @@ func (c *tigrisClient) Import(ctx context.Context, in *ImportRequest, opts ...gr func (c *tigrisClient) CreateOrUpdateCollection(ctx context.Context, in *CreateOrUpdateCollectionRequest, opts ...grpc.CallOption) (*CreateOrUpdateCollectionResponse, error) { out := new(CreateOrUpdateCollectionResponse) - err := c.cc.Invoke(ctx, Tigris_CreateOrUpdateCollection_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/CreateOrUpdateCollection", in, out, opts...) if err != nil { return nil, err } @@ -314,7 +282,7 @@ func (c *tigrisClient) CreateOrUpdateCollection(ctx context.Context, in *CreateO func (c *tigrisClient) DropCollection(ctx context.Context, in *DropCollectionRequest, opts ...grpc.CallOption) (*DropCollectionResponse, error) { out := new(DropCollectionResponse) - err := c.cc.Invoke(ctx, Tigris_DropCollection_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DropCollection", in, out, opts...) if err != nil { return nil, err } @@ -323,7 +291,7 @@ func (c *tigrisClient) DropCollection(ctx context.Context, in *DropCollectionReq func (c *tigrisClient) ListProjects(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) { out := new(ListProjectsResponse) - err := c.cc.Invoke(ctx, Tigris_ListProjects_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/ListProjects", in, out, opts...) if err != nil { return nil, err } @@ -332,7 +300,7 @@ func (c *tigrisClient) ListProjects(ctx context.Context, in *ListProjectsRequest func (c *tigrisClient) ListCollections(ctx context.Context, in *ListCollectionsRequest, opts ...grpc.CallOption) (*ListCollectionsResponse, error) { out := new(ListCollectionsResponse) - err := c.cc.Invoke(ctx, Tigris_ListCollections_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/ListCollections", in, out, opts...) if err != nil { return nil, err } @@ -341,7 +309,7 @@ func (c *tigrisClient) ListCollections(ctx context.Context, in *ListCollectionsR func (c *tigrisClient) CreateProject(ctx context.Context, in *CreateProjectRequest, opts ...grpc.CallOption) (*CreateProjectResponse, error) { out := new(CreateProjectResponse) - err := c.cc.Invoke(ctx, Tigris_CreateProject_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/CreateProject", in, out, opts...) if err != nil { return nil, err } @@ -350,7 +318,7 @@ func (c *tigrisClient) CreateProject(ctx context.Context, in *CreateProjectReque func (c *tigrisClient) DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*DeleteProjectResponse, error) { out := new(DeleteProjectResponse) - err := c.cc.Invoke(ctx, Tigris_DeleteProject_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DeleteProject", in, out, opts...) if err != nil { return nil, err } @@ -359,7 +327,7 @@ func (c *tigrisClient) DeleteProject(ctx context.Context, in *DeleteProjectReque func (c *tigrisClient) DescribeDatabase(ctx context.Context, in *DescribeDatabaseRequest, opts ...grpc.CallOption) (*DescribeDatabaseResponse, error) { out := new(DescribeDatabaseResponse) - err := c.cc.Invoke(ctx, Tigris_DescribeDatabase_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DescribeDatabase", in, out, opts...) if err != nil { return nil, err } @@ -368,7 +336,7 @@ func (c *tigrisClient) DescribeDatabase(ctx context.Context, in *DescribeDatabas func (c *tigrisClient) CreateBranch(ctx context.Context, in *CreateBranchRequest, opts ...grpc.CallOption) (*CreateBranchResponse, error) { out := new(CreateBranchResponse) - err := c.cc.Invoke(ctx, Tigris_CreateBranch_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/CreateBranch", in, out, opts...) if err != nil { return nil, err } @@ -377,7 +345,7 @@ func (c *tigrisClient) CreateBranch(ctx context.Context, in *CreateBranchRequest func (c *tigrisClient) DeleteBranch(ctx context.Context, in *DeleteBranchRequest, opts ...grpc.CallOption) (*DeleteBranchResponse, error) { out := new(DeleteBranchResponse) - err := c.cc.Invoke(ctx, Tigris_DeleteBranch_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DeleteBranch", in, out, opts...) if err != nil { return nil, err } @@ -386,7 +354,7 @@ func (c *tigrisClient) DeleteBranch(ctx context.Context, in *DeleteBranchRequest func (c *tigrisClient) ListBranches(ctx context.Context, in *ListBranchesRequest, opts ...grpc.CallOption) (*ListBranchesResponse, error) { out := new(ListBranchesResponse) - err := c.cc.Invoke(ctx, Tigris_ListBranches_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/ListBranches", in, out, opts...) if err != nil { return nil, err } @@ -395,7 +363,7 @@ func (c *tigrisClient) ListBranches(ctx context.Context, in *ListBranchesRequest func (c *tigrisClient) DescribeCollection(ctx context.Context, in *DescribeCollectionRequest, opts ...grpc.CallOption) (*DescribeCollectionResponse, error) { out := new(DescribeCollectionResponse) - err := c.cc.Invoke(ctx, Tigris_DescribeCollection_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DescribeCollection", in, out, opts...) if err != nil { return nil, err } @@ -404,7 +372,7 @@ func (c *tigrisClient) DescribeCollection(ctx context.Context, in *DescribeColle func (c *tigrisClient) CreateAppKey(ctx context.Context, in *CreateAppKeyRequest, opts ...grpc.CallOption) (*CreateAppKeyResponse, error) { out := new(CreateAppKeyResponse) - err := c.cc.Invoke(ctx, Tigris_CreateAppKey_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/CreateAppKey", in, out, opts...) if err != nil { return nil, err } @@ -413,7 +381,7 @@ func (c *tigrisClient) CreateAppKey(ctx context.Context, in *CreateAppKeyRequest func (c *tigrisClient) UpdateAppKey(ctx context.Context, in *UpdateAppKeyRequest, opts ...grpc.CallOption) (*UpdateAppKeyResponse, error) { out := new(UpdateAppKeyResponse) - err := c.cc.Invoke(ctx, Tigris_UpdateAppKey_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/UpdateAppKey", in, out, opts...) if err != nil { return nil, err } @@ -422,7 +390,7 @@ func (c *tigrisClient) UpdateAppKey(ctx context.Context, in *UpdateAppKeyRequest func (c *tigrisClient) DeleteAppKey(ctx context.Context, in *DeleteAppKeyRequest, opts ...grpc.CallOption) (*DeleteAppKeyResponse, error) { out := new(DeleteAppKeyResponse) - err := c.cc.Invoke(ctx, Tigris_DeleteAppKey_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/DeleteAppKey", in, out, opts...) if err != nil { return nil, err } @@ -431,7 +399,7 @@ func (c *tigrisClient) DeleteAppKey(ctx context.Context, in *DeleteAppKeyRequest func (c *tigrisClient) ListAppKeys(ctx context.Context, in *ListAppKeysRequest, opts ...grpc.CallOption) (*ListAppKeysResponse, error) { out := new(ListAppKeysResponse) - err := c.cc.Invoke(ctx, Tigris_ListAppKeys_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/ListAppKeys", in, out, opts...) if err != nil { return nil, err } @@ -440,7 +408,7 @@ func (c *tigrisClient) ListAppKeys(ctx context.Context, in *ListAppKeysRequest, func (c *tigrisClient) RotateAppKeySecret(ctx context.Context, in *RotateAppKeyRequest, opts ...grpc.CallOption) (*RotateAppKeyResponse, error) { out := new(RotateAppKeyResponse) - err := c.cc.Invoke(ctx, Tigris_RotateAppKeySecret_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.v1.Tigris/RotateAppKeySecret", in, out, opts...) if err != nil { return nil, err } @@ -478,6 +446,9 @@ type TigrisServer interface { // the `limit` parameter is used to specify the number of documents to read. You can find more detailed documentation // of the Read API here. Read(*ReadRequest, Tigris_ReadServer) error + // Index Collection will do a full scan off all documents in the collection and rebuild + // all indexes in the collection + BuildCollectionIndex(context.Context, *BuildCollectionIndexRequest) (*BuildCollectionIndexResponse, error) // Explain takes the same parameters as Read and returns how the Tigris Query Planner would process the // response Explain(context.Context, *ReadRequest) (*ExplainResponse, error) @@ -563,6 +534,9 @@ func (UnimplementedTigrisServer) Update(context.Context, *UpdateRequest) (*Updat func (UnimplementedTigrisServer) Read(*ReadRequest, Tigris_ReadServer) error { return status.Errorf(codes.Unimplemented, "method Read not implemented") } +func (UnimplementedTigrisServer) BuildCollectionIndex(context.Context, *BuildCollectionIndexRequest) (*BuildCollectionIndexResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BuildCollectionIndex not implemented") +} func (UnimplementedTigrisServer) Explain(context.Context, *ReadRequest) (*ExplainResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Explain not implemented") } @@ -642,7 +616,7 @@ func _Tigris_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_BeginTransaction_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/BeginTransaction", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) @@ -660,7 +634,7 @@ func _Tigris_CommitTransaction_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_CommitTransaction_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/CommitTransaction", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).CommitTransaction(ctx, req.(*CommitTransactionRequest)) @@ -678,7 +652,7 @@ func _Tigris_RollbackTransaction_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_RollbackTransaction_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/RollbackTransaction", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).RollbackTransaction(ctx, req.(*RollbackTransactionRequest)) @@ -696,7 +670,7 @@ func _Tigris_Insert_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Insert_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Insert", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Insert(ctx, req.(*InsertRequest)) @@ -714,7 +688,7 @@ func _Tigris_Replace_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Replace_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Replace", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Replace(ctx, req.(*ReplaceRequest)) @@ -732,7 +706,7 @@ func _Tigris_Delete_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Delete_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Delete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Delete(ctx, req.(*DeleteRequest)) @@ -750,7 +724,7 @@ func _Tigris_Update_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Update_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Update", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Update(ctx, req.(*UpdateRequest)) @@ -779,6 +753,24 @@ func (x *tigrisReadServer) Send(m *ReadResponse) error { return x.ServerStream.SendMsg(m) } +func _Tigris_BuildCollectionIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BuildCollectionIndexRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TigrisServer).BuildCollectionIndex(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tigrisdata.v1.Tigris/BuildCollectionIndex", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TigrisServer).BuildCollectionIndex(ctx, req.(*BuildCollectionIndexRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Tigris_Explain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ReadRequest) if err := dec(in); err != nil { @@ -789,7 +781,7 @@ func _Tigris_Explain_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Explain_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Explain", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Explain(ctx, req.(*ReadRequest)) @@ -828,7 +820,7 @@ func _Tigris_Import_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_Import_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/Import", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).Import(ctx, req.(*ImportRequest)) @@ -846,7 +838,7 @@ func _Tigris_CreateOrUpdateCollection_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_CreateOrUpdateCollection_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/CreateOrUpdateCollection", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).CreateOrUpdateCollection(ctx, req.(*CreateOrUpdateCollectionRequest)) @@ -864,7 +856,7 @@ func _Tigris_DropCollection_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DropCollection_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DropCollection", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DropCollection(ctx, req.(*DropCollectionRequest)) @@ -882,7 +874,7 @@ func _Tigris_ListProjects_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_ListProjects_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/ListProjects", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).ListProjects(ctx, req.(*ListProjectsRequest)) @@ -900,7 +892,7 @@ func _Tigris_ListCollections_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_ListCollections_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/ListCollections", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).ListCollections(ctx, req.(*ListCollectionsRequest)) @@ -918,7 +910,7 @@ func _Tigris_CreateProject_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_CreateProject_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/CreateProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).CreateProject(ctx, req.(*CreateProjectRequest)) @@ -936,7 +928,7 @@ func _Tigris_DeleteProject_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DeleteProject_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DeleteProject", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DeleteProject(ctx, req.(*DeleteProjectRequest)) @@ -954,7 +946,7 @@ func _Tigris_DescribeDatabase_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DescribeDatabase_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DescribeDatabase", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DescribeDatabase(ctx, req.(*DescribeDatabaseRequest)) @@ -972,7 +964,7 @@ func _Tigris_CreateBranch_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_CreateBranch_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/CreateBranch", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).CreateBranch(ctx, req.(*CreateBranchRequest)) @@ -990,7 +982,7 @@ func _Tigris_DeleteBranch_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DeleteBranch_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DeleteBranch", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DeleteBranch(ctx, req.(*DeleteBranchRequest)) @@ -1008,7 +1000,7 @@ func _Tigris_ListBranches_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_ListBranches_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/ListBranches", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).ListBranches(ctx, req.(*ListBranchesRequest)) @@ -1026,7 +1018,7 @@ func _Tigris_DescribeCollection_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DescribeCollection_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DescribeCollection", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DescribeCollection(ctx, req.(*DescribeCollectionRequest)) @@ -1044,7 +1036,7 @@ func _Tigris_CreateAppKey_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_CreateAppKey_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/CreateAppKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).CreateAppKey(ctx, req.(*CreateAppKeyRequest)) @@ -1062,7 +1054,7 @@ func _Tigris_UpdateAppKey_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_UpdateAppKey_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/UpdateAppKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).UpdateAppKey(ctx, req.(*UpdateAppKeyRequest)) @@ -1080,7 +1072,7 @@ func _Tigris_DeleteAppKey_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_DeleteAppKey_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/DeleteAppKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).DeleteAppKey(ctx, req.(*DeleteAppKeyRequest)) @@ -1098,7 +1090,7 @@ func _Tigris_ListAppKeys_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_ListAppKeys_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/ListAppKeys", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).ListAppKeys(ctx, req.(*ListAppKeysRequest)) @@ -1116,7 +1108,7 @@ func _Tigris_RotateAppKeySecret_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Tigris_RotateAppKeySecret_FullMethodName, + FullMethod: "/tigrisdata.v1.Tigris/RotateAppKeySecret", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(TigrisServer).RotateAppKeySecret(ctx, req.(*RotateAppKeyRequest)) @@ -1159,6 +1151,10 @@ var Tigris_ServiceDesc = grpc.ServiceDesc{ MethodName: "Update", Handler: _Tigris_Update_Handler, }, + { + MethodName: "BuildCollectionIndex", + Handler: _Tigris_BuildCollectionIndex_Handler, + }, { MethodName: "Explain", Handler: _Tigris_Explain_Handler, diff --git a/api/server/v1/auth.pb.go b/api/server/v1/auth.pb.go index ce2806b..cf57418 100644 --- a/api/server/v1/auth.pb.go +++ b/api/server/v1/auth.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/auth.proto package api @@ -82,8 +82,9 @@ func (GrantType) EnumDescriptor() ([]byte, []int) { return file_server_v1_auth_proto_rawDescGZIP(), []int{0} } -// The Request message for the GetAccessToken. The grant type is a required field and based on the grant type -// the other fields are used as mentioned below. +// The Request message for the GetAccessToken. The grant type is a required +// field and based on the grant type the other fields are used as mentioned +// below. type GetAccessTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -94,7 +95,8 @@ type GetAccessTokenRequest struct { RefreshToken string `protobuf:"bytes,2,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"` // Client Id is required when grant type is set as `CLIENT_CREDENTIALS`. ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // Your Tigris API Key is required when grant type is set as `CLIENT_CREDENTIALS`. + // Your Tigris API Key is required when grant type is set as + // `CLIENT_CREDENTIALS`. ClientSecret string `protobuf:"bytes,4,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` } @@ -158,7 +160,8 @@ func (x *GetAccessTokenRequest) GetClientSecret() string { return "" } -// The response of GetAccessToken which contains access_token and optionally refresh_token. +// The response of GetAccessToken which contains access_token and optionally +// refresh_token. type GetAccessTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -225,6 +228,561 @@ func (x *GetAccessTokenResponse) GetExpiresIn() int32 { return 0 } +type InvitationInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required: Email address to invite + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + // Required: Role to associate this user to + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + // Invitation sender name + InvitationSentByName string `protobuf:"bytes,3,opt,name=invitation_sent_by_name,json=invitationSentByName,proto3" json:"invitation_sent_by_name,omitempty"` +} + +func (x *InvitationInfo) Reset() { + *x = InvitationInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InvitationInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvitationInfo) ProtoMessage() {} + +func (x *InvitationInfo) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvitationInfo.ProtoReflect.Descriptor instead. +func (*InvitationInfo) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{2} +} + +func (x *InvitationInfo) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *InvitationInfo) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *InvitationInfo) GetInvitationSentByName() string { + if x != nil { + return x.InvitationSentByName + } + return "" +} + +type CreateInvitationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invitations []*InvitationInfo `protobuf:"bytes,1,rep,name=invitations,proto3" json:"invitations,omitempty"` +} + +func (x *CreateInvitationsRequest) Reset() { + *x = CreateInvitationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateInvitationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateInvitationsRequest) ProtoMessage() {} + +func (x *CreateInvitationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateInvitationsRequest.ProtoReflect.Descriptor instead. +func (*CreateInvitationsRequest) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateInvitationsRequest) GetInvitations() []*InvitationInfo { + if x != nil { + return x.Invitations + } + return nil +} + +type CreateInvitationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CreateInvitationsResponse) Reset() { + *x = CreateInvitationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateInvitationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateInvitationsResponse) ProtoMessage() {} + +func (x *CreateInvitationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_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 CreateInvitationsResponse.ProtoReflect.Descriptor instead. +func (*CreateInvitationsResponse) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{4} +} + +type DeleteInvitationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Status *string `protobuf:"bytes,2,opt,name=status,proto3,oneof" json:"status,omitempty"` +} + +func (x *DeleteInvitationsRequest) Reset() { + *x = DeleteInvitationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteInvitationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteInvitationsRequest) ProtoMessage() {} + +func (x *DeleteInvitationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteInvitationsRequest.ProtoReflect.Descriptor instead. +func (*DeleteInvitationsRequest) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteInvitationsRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *DeleteInvitationsRequest) GetStatus() string { + if x != nil && x.Status != nil { + return *x.Status + } + return "" +} + +type DeleteInvitationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteInvitationsResponse) Reset() { + *x = DeleteInvitationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteInvitationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteInvitationsResponse) ProtoMessage() {} + +func (x *DeleteInvitationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteInvitationsResponse.ProtoReflect.Descriptor instead. +func (*DeleteInvitationsResponse) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{6} +} + +type Invitation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // invited email address + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + // invited user's role + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + // status of invitation + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + // invited namespace + TigrisNamespace string `protobuf:"bytes,4,opt,name=tigris_namespace,json=tigrisNamespace,proto3" json:"tigris_namespace,omitempty"` + // created by sub + CreatedBy string `protobuf:"bytes,5,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` + // created by name (display friendly) + CreatedByName string `protobuf:"bytes,6,opt,name=created_by_name,json=createdByName,proto3" json:"created_by_name,omitempty"` + // expiration time + ExpirationTime int64 `protobuf:"varint,7,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` +} + +func (x *Invitation) Reset() { + *x = Invitation{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Invitation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Invitation) ProtoMessage() {} + +func (x *Invitation) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Invitation.ProtoReflect.Descriptor instead. +func (*Invitation) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{7} +} + +func (x *Invitation) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *Invitation) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *Invitation) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Invitation) GetTigrisNamespace() string { + if x != nil { + return x.TigrisNamespace + } + return "" +} + +func (x *Invitation) GetCreatedBy() string { + if x != nil { + return x.CreatedBy + } + return "" +} + +func (x *Invitation) GetCreatedByName() string { + if x != nil { + return x.CreatedByName + } + return "" +} + +func (x *Invitation) GetExpirationTime() int64 { + if x != nil { + return x.ExpirationTime + } + return 0 +} + +type ListInvitationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // optional status - an enum [PENDING, EXPIRED, ACCEPTED] + Status *string `protobuf:"bytes,1,opt,name=status,proto3,oneof" json:"status,omitempty"` +} + +func (x *ListInvitationsRequest) Reset() { + *x = ListInvitationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListInvitationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListInvitationsRequest) ProtoMessage() {} + +func (x *ListInvitationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListInvitationsRequest.ProtoReflect.Descriptor instead. +func (*ListInvitationsRequest) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{8} +} + +func (x *ListInvitationsRequest) GetStatus() string { + if x != nil && x.Status != nil { + return *x.Status + } + return "" +} + +type ListInvitationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invitations []*Invitation `protobuf:"bytes,1,rep,name=invitations,proto3" json:"invitations,omitempty"` +} + +func (x *ListInvitationsResponse) Reset() { + *x = ListInvitationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListInvitationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListInvitationsResponse) ProtoMessage() {} + +func (x *ListInvitationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_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 ListInvitationsResponse.ProtoReflect.Descriptor instead. +func (*ListInvitationsResponse) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{9} +} + +func (x *ListInvitationsResponse) GetInvitations() []*Invitation { + if x != nil { + return x.Invitations + } + return nil +} + +type VerifyInvitationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // invited email address + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + // code + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` +} + +func (x *VerifyInvitationRequest) Reset() { + *x = VerifyInvitationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VerifyInvitationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyInvitationRequest) ProtoMessage() {} + +func (x *VerifyInvitationRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyInvitationRequest.ProtoReflect.Descriptor instead. +func (*VerifyInvitationRequest) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{10} +} + +func (x *VerifyInvitationRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *VerifyInvitationRequest) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +type VerifyInvitationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // if successful - which namespace this user belongs to + TigrisNamespace string `protobuf:"bytes,1,opt,name=tigris_namespace,json=tigrisNamespace,proto3" json:"tigris_namespace,omitempty"` + // if successful - which role this user should be assigned to + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` +} + +func (x *VerifyInvitationResponse) Reset() { + *x = VerifyInvitationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_v1_auth_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VerifyInvitationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyInvitationResponse) ProtoMessage() {} + +func (x *VerifyInvitationResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_v1_auth_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyInvitationResponse.ProtoReflect.Descriptor instead. +func (*VerifyInvitationResponse) Descriptor() ([]byte, []int) { + return file_server_v1_auth_proto_rawDescGZIP(), []int{11} +} + +func (x *VerifyInvitationResponse) GetTigrisNamespace() string { + if x != nil { + return x.TigrisNamespace + } + return "" +} + +func (x *VerifyInvitationResponse) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + var File_server_v1_auth_proto protoreflect.FileDescriptor var file_server_v1_auth_proto_rawDesc = []byte{ @@ -254,26 +812,137 @@ var file_server_v1_auth_proto_rawDesc = []byte{ 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x49, 0x6e, 0x2a, 0x36, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x5f, 0x54, 0x4f, - 0x4b, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, - 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x10, 0x01, 0x32, 0xac, 0x01, - 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, - 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3a, 0xba, 0x47, 0x1e, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01, 0x2a, 0x22, 0x0e, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x41, 0x0a, 0x1d, - 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, - 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, - 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x65, 0x73, 0x49, 0x6e, 0x22, 0x71, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, + 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe9, + 0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x5b, 0x0a, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, + 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x59, + 0x0a, 0x18, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x69, + 0x67, 0x72, 0x69, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x2a, 0x36, 0x0a, 0x09, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, + 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4c, 0x49, + 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x10, + 0x01, 0x32, 0x8e, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x01, 0x2a, 0xba, + 0x47, 0x1e, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0xdc, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x37, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6a, 0x6f, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0xdc, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x25, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x37, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6a, 0x6f, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0xd7, + 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, + 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0xba, 0x47, 0x3d, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, + 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6a, 0x6f, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, + 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x25, 0x0a, 0x0a, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -289,21 +958,41 @@ func file_server_v1_auth_proto_rawDescGZIP() []byte { } var file_server_v1_auth_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_server_v1_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_server_v1_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_server_v1_auth_proto_goTypes = []interface{}{ - (GrantType)(0), // 0: tigrisdata.auth.v1.GrantType - (*GetAccessTokenRequest)(nil), // 1: tigrisdata.auth.v1.GetAccessTokenRequest - (*GetAccessTokenResponse)(nil), // 2: tigrisdata.auth.v1.GetAccessTokenResponse + (GrantType)(0), // 0: tigrisdata.auth.v1.GrantType + (*GetAccessTokenRequest)(nil), // 1: tigrisdata.auth.v1.GetAccessTokenRequest + (*GetAccessTokenResponse)(nil), // 2: tigrisdata.auth.v1.GetAccessTokenResponse + (*InvitationInfo)(nil), // 3: tigrisdata.auth.v1.InvitationInfo + (*CreateInvitationsRequest)(nil), // 4: tigrisdata.auth.v1.CreateInvitationsRequest + (*CreateInvitationsResponse)(nil), // 5: tigrisdata.auth.v1.CreateInvitationsResponse + (*DeleteInvitationsRequest)(nil), // 6: tigrisdata.auth.v1.DeleteInvitationsRequest + (*DeleteInvitationsResponse)(nil), // 7: tigrisdata.auth.v1.DeleteInvitationsResponse + (*Invitation)(nil), // 8: tigrisdata.auth.v1.Invitation + (*ListInvitationsRequest)(nil), // 9: tigrisdata.auth.v1.ListInvitationsRequest + (*ListInvitationsResponse)(nil), // 10: tigrisdata.auth.v1.ListInvitationsResponse + (*VerifyInvitationRequest)(nil), // 11: tigrisdata.auth.v1.VerifyInvitationRequest + (*VerifyInvitationResponse)(nil), // 12: tigrisdata.auth.v1.VerifyInvitationResponse } var file_server_v1_auth_proto_depIdxs = []int32{ - 0, // 0: tigrisdata.auth.v1.GetAccessTokenRequest.grant_type:type_name -> tigrisdata.auth.v1.GrantType - 1, // 1: tigrisdata.auth.v1.Auth.GetAccessToken:input_type -> tigrisdata.auth.v1.GetAccessTokenRequest - 2, // 2: tigrisdata.auth.v1.Auth.GetAccessToken:output_type -> tigrisdata.auth.v1.GetAccessTokenResponse - 2, // [2:3] is the sub-list for method output_type - 1, // [1:2] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 0, // 0: tigrisdata.auth.v1.GetAccessTokenRequest.grant_type:type_name -> tigrisdata.auth.v1.GrantType + 3, // 1: tigrisdata.auth.v1.CreateInvitationsRequest.invitations:type_name -> tigrisdata.auth.v1.InvitationInfo + 8, // 2: tigrisdata.auth.v1.ListInvitationsResponse.invitations:type_name -> tigrisdata.auth.v1.Invitation + 1, // 3: tigrisdata.auth.v1.Auth.GetAccessToken:input_type -> tigrisdata.auth.v1.GetAccessTokenRequest + 4, // 4: tigrisdata.auth.v1.Auth.CreateInvitations:input_type -> tigrisdata.auth.v1.CreateInvitationsRequest + 6, // 5: tigrisdata.auth.v1.Auth.DeleteInvitations:input_type -> tigrisdata.auth.v1.DeleteInvitationsRequest + 9, // 6: tigrisdata.auth.v1.Auth.ListInvitations:input_type -> tigrisdata.auth.v1.ListInvitationsRequest + 11, // 7: tigrisdata.auth.v1.Auth.VerifyInvitation:input_type -> tigrisdata.auth.v1.VerifyInvitationRequest + 2, // 8: tigrisdata.auth.v1.Auth.GetAccessToken:output_type -> tigrisdata.auth.v1.GetAccessTokenResponse + 5, // 9: tigrisdata.auth.v1.Auth.CreateInvitations:output_type -> tigrisdata.auth.v1.CreateInvitationsResponse + 7, // 10: tigrisdata.auth.v1.Auth.DeleteInvitations:output_type -> tigrisdata.auth.v1.DeleteInvitationsResponse + 10, // 11: tigrisdata.auth.v1.Auth.ListInvitations:output_type -> tigrisdata.auth.v1.ListInvitationsResponse + 12, // 12: tigrisdata.auth.v1.Auth.VerifyInvitation:output_type -> tigrisdata.auth.v1.VerifyInvitationResponse + 8, // [8:13] is the sub-list for method output_type + 3, // [3:8] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_server_v1_auth_proto_init() } @@ -336,14 +1025,136 @@ func file_server_v1_auth_proto_init() { return nil } } + file_server_v1_auth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InvitationInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateInvitationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateInvitationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteInvitationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteInvitationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Invitation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListInvitationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListInvitationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyInvitationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_v1_auth_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyInvitationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } + file_server_v1_auth_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_server_v1_auth_proto_msgTypes[8].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_v1_auth_proto_rawDesc, NumEnums: 1, - NumMessages: 2, + NumMessages: 12, NumExtensions: 0, NumServices: 1, }, diff --git a/api/server/v1/auth.pb.gw.go b/api/server/v1/auth.pb.gw.go index 4c4661e..7888aee 100644 --- a/api/server/v1/auth.pb.gw.go +++ b/api/server/v1/auth.pb.gw.go @@ -65,6 +65,144 @@ func local_request_Auth_GetAccessToken_0(ctx context.Context, marshaler runtime. } +func request_Auth_CreateInvitations_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateInvitationsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CreateInvitations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Auth_CreateInvitations_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateInvitationsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CreateInvitations(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Auth_DeleteInvitations_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteInvitationsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteInvitations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Auth_DeleteInvitations_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteInvitationsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteInvitations(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Auth_ListInvitations_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Auth_ListInvitations_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListInvitationsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Auth_ListInvitations_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListInvitations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Auth_ListInvitations_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListInvitationsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Auth_ListInvitations_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListInvitations(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Auth_VerifyInvitation_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq VerifyInvitationRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.VerifyInvitation(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Auth_VerifyInvitation_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq VerifyInvitationRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.VerifyInvitation(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterAuthHandlerServer registers the http handlers for service Auth to "mux". // UnaryRPC :call AuthServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -96,13 +234,113 @@ func RegisterAuthHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve }) + mux.Handle("POST", pattern_Auth_CreateInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/CreateInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/create")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Auth_CreateInvitations_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_CreateInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_Auth_DeleteInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/DeleteInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/delete")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Auth_DeleteInvitations_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_DeleteInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Auth_ListInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/ListInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/list")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Auth_ListInvitations_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_ListInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Auth_VerifyInvitation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/VerifyInvitation", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/verify")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Auth_VerifyInvitation_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_VerifyInvitation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } // RegisterAuthHandlerFromEndpoint is same as RegisterAuthHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAuthHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } @@ -159,13 +397,117 @@ func RegisterAuthHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien }) + mux.Handle("POST", pattern_Auth_CreateInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/CreateInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/create")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Auth_CreateInvitations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_CreateInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_Auth_DeleteInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/DeleteInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/delete")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Auth_DeleteInvitations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_DeleteInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Auth_ListInvitations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/ListInvitations", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/list")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Auth_ListInvitations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_ListInvitations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Auth_VerifyInvitation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/tigrisdata.auth.v1.Auth/VerifyInvitation", runtime.WithHTTPPathPattern("/v1/auth/namespace/invitations/verify")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Auth_VerifyInvitation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Auth_VerifyInvitation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( pattern_Auth_GetAccessToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "auth", "token"}, "")) + + pattern_Auth_CreateInvitations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "auth", "namespace", "invitations", "create"}, "")) + + pattern_Auth_DeleteInvitations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "auth", "namespace", "invitations", "delete"}, "")) + + pattern_Auth_ListInvitations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "auth", "namespace", "invitations", "list"}, "")) + + pattern_Auth_VerifyInvitation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "auth", "namespace", "invitations", "verify"}, "")) ) var ( forward_Auth_GetAccessToken_0 = runtime.ForwardResponseMessage + + forward_Auth_CreateInvitations_0 = runtime.ForwardResponseMessage + + forward_Auth_DeleteInvitations_0 = runtime.ForwardResponseMessage + + forward_Auth_ListInvitations_0 = runtime.ForwardResponseMessage + + forward_Auth_VerifyInvitation_0 = runtime.ForwardResponseMessage ) diff --git a/api/server/v1/auth_grpc.pb.go b/api/server/v1/auth_grpc.pb.go index 52bc991..5995b95 100644 --- a/api/server/v1/auth_grpc.pb.go +++ b/api/server/v1/auth_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/auth.proto package api @@ -32,18 +18,24 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Auth_GetAccessToken_FullMethodName = "/tigrisdata.auth.v1.Auth/GetAccessToken" -) - // AuthClient is the client API for Auth service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AuthClient interface { - // Endpoint for receiving access token from Tigris Server. The endpoint requires Grant Type(`grant_type`) which has - // two possible values "REFRESH_TOKEN" or "CLIENT_CREDENTIALS" based on which either Refresh token(`refresh_token`) - // needs to be set or client credentials(`client_id`, `client_secret`). + // Endpoint for receiving access token from Tigris Server. The endpoint + // requires Grant Type(`grant_type`) which has two possible values + // "REFRESH_TOKEN" or "CLIENT_CREDENTIALS" based on which either + // Refresh token(`refresh_token`) needs to be set or client + // credentials(`client_id`, `client_secret`). GetAccessToken(ctx context.Context, in *GetAccessTokenRequest, opts ...grpc.CallOption) (*GetAccessTokenResponse, error) + // Creates invitations to the namespace + CreateInvitations(ctx context.Context, in *CreateInvitationsRequest, opts ...grpc.CallOption) (*CreateInvitationsResponse, error) + // Deletes invitations to the namespace + DeleteInvitations(ctx context.Context, in *DeleteInvitationsRequest, opts ...grpc.CallOption) (*DeleteInvitationsResponse, error) + // Lists all the invitations to the namespace + ListInvitations(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*ListInvitationsResponse, error) + // Verify invitation + VerifyInvitation(ctx context.Context, in *VerifyInvitationRequest, opts ...grpc.CallOption) (*VerifyInvitationResponse, error) } type authClient struct { @@ -56,7 +48,43 @@ func NewAuthClient(cc grpc.ClientConnInterface) AuthClient { func (c *authClient) GetAccessToken(ctx context.Context, in *GetAccessTokenRequest, opts ...grpc.CallOption) (*GetAccessTokenResponse, error) { out := new(GetAccessTokenResponse) - err := c.cc.Invoke(ctx, Auth_GetAccessToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.auth.v1.Auth/GetAccessToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) CreateInvitations(ctx context.Context, in *CreateInvitationsRequest, opts ...grpc.CallOption) (*CreateInvitationsResponse, error) { + out := new(CreateInvitationsResponse) + err := c.cc.Invoke(ctx, "/tigrisdata.auth.v1.Auth/CreateInvitations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) DeleteInvitations(ctx context.Context, in *DeleteInvitationsRequest, opts ...grpc.CallOption) (*DeleteInvitationsResponse, error) { + out := new(DeleteInvitationsResponse) + err := c.cc.Invoke(ctx, "/tigrisdata.auth.v1.Auth/DeleteInvitations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) ListInvitations(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*ListInvitationsResponse, error) { + out := new(ListInvitationsResponse) + err := c.cc.Invoke(ctx, "/tigrisdata.auth.v1.Auth/ListInvitations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authClient) VerifyInvitation(ctx context.Context, in *VerifyInvitationRequest, opts ...grpc.CallOption) (*VerifyInvitationResponse, error) { + out := new(VerifyInvitationResponse) + err := c.cc.Invoke(ctx, "/tigrisdata.auth.v1.Auth/VerifyInvitation", in, out, opts...) if err != nil { return nil, err } @@ -67,10 +95,20 @@ func (c *authClient) GetAccessToken(ctx context.Context, in *GetAccessTokenReque // All implementations should embed UnimplementedAuthServer // for forward compatibility type AuthServer interface { - // Endpoint for receiving access token from Tigris Server. The endpoint requires Grant Type(`grant_type`) which has - // two possible values "REFRESH_TOKEN" or "CLIENT_CREDENTIALS" based on which either Refresh token(`refresh_token`) - // needs to be set or client credentials(`client_id`, `client_secret`). + // Endpoint for receiving access token from Tigris Server. The endpoint + // requires Grant Type(`grant_type`) which has two possible values + // "REFRESH_TOKEN" or "CLIENT_CREDENTIALS" based on which either + // Refresh token(`refresh_token`) needs to be set or client + // credentials(`client_id`, `client_secret`). GetAccessToken(context.Context, *GetAccessTokenRequest) (*GetAccessTokenResponse, error) + // Creates invitations to the namespace + CreateInvitations(context.Context, *CreateInvitationsRequest) (*CreateInvitationsResponse, error) + // Deletes invitations to the namespace + DeleteInvitations(context.Context, *DeleteInvitationsRequest) (*DeleteInvitationsResponse, error) + // Lists all the invitations to the namespace + ListInvitations(context.Context, *ListInvitationsRequest) (*ListInvitationsResponse, error) + // Verify invitation + VerifyInvitation(context.Context, *VerifyInvitationRequest) (*VerifyInvitationResponse, error) } // UnimplementedAuthServer should be embedded to have forward compatible implementations. @@ -80,6 +118,18 @@ type UnimplementedAuthServer struct { func (UnimplementedAuthServer) GetAccessToken(context.Context, *GetAccessTokenRequest) (*GetAccessTokenResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAccessToken not implemented") } +func (UnimplementedAuthServer) CreateInvitations(context.Context, *CreateInvitationsRequest) (*CreateInvitationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateInvitations not implemented") +} +func (UnimplementedAuthServer) DeleteInvitations(context.Context, *DeleteInvitationsRequest) (*DeleteInvitationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteInvitations not implemented") +} +func (UnimplementedAuthServer) ListInvitations(context.Context, *ListInvitationsRequest) (*ListInvitationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListInvitations not implemented") +} +func (UnimplementedAuthServer) VerifyInvitation(context.Context, *VerifyInvitationRequest) (*VerifyInvitationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method VerifyInvitation not implemented") +} // UnsafeAuthServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AuthServer will @@ -102,7 +152,7 @@ func _Auth_GetAccessToken_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Auth_GetAccessToken_FullMethodName, + FullMethod: "/tigrisdata.auth.v1.Auth/GetAccessToken", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AuthServer).GetAccessToken(ctx, req.(*GetAccessTokenRequest)) @@ -110,6 +160,78 @@ func _Auth_GetAccessToken_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Auth_CreateInvitations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateInvitationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).CreateInvitations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tigrisdata.auth.v1.Auth/CreateInvitations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).CreateInvitations(ctx, req.(*CreateInvitationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_DeleteInvitations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteInvitationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).DeleteInvitations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tigrisdata.auth.v1.Auth/DeleteInvitations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).DeleteInvitations(ctx, req.(*DeleteInvitationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_ListInvitations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListInvitationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).ListInvitations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tigrisdata.auth.v1.Auth/ListInvitations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).ListInvitations(ctx, req.(*ListInvitationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Auth_VerifyInvitation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VerifyInvitationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServer).VerifyInvitation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tigrisdata.auth.v1.Auth/VerifyInvitation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServer).VerifyInvitation(ctx, req.(*VerifyInvitationRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Auth_ServiceDesc is the grpc.ServiceDesc for Auth service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -121,6 +243,22 @@ var Auth_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAccessToken", Handler: _Auth_GetAccessToken_Handler, }, + { + MethodName: "CreateInvitations", + Handler: _Auth_CreateInvitations_Handler, + }, + { + MethodName: "DeleteInvitations", + Handler: _Auth_DeleteInvitations_Handler, + }, + { + MethodName: "ListInvitations", + Handler: _Auth_ListInvitations_Handler, + }, + { + MethodName: "VerifyInvitation", + Handler: _Auth_VerifyInvitation_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "server/v1/auth.proto", diff --git a/api/server/v1/cache.pb.go b/api/server/v1/cache.pb.go index e56c558..7cb90a7 100644 --- a/api/server/v1/cache.pb.go +++ b/api/server/v1/cache.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/cache.proto package api @@ -1279,92 +1279,92 @@ var file_server_v1_cache_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, - 0xba, 0x47, 0x1a, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, + 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1a, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x12, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x12, 0xbf, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x60, 0xba, 0x47, 0x33, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, - 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, - 0x76, 0x65, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, - 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x6e, 0x73, 0x65, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0xba, + 0x47, 0x33, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x73, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0xba, 0x47, 0x1a, 0x0a, 0x05, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x12, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xa9, 0x01, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0xba, 0x47, 0x1a, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x11, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0xba, 0x47, 0x23, 0x0a, 0x05, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x12, 0x1a, 0x53, 0x65, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x47, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, + 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x73, 0x65, 0x74, + 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x23, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1a, 0x53, + 0x65, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x12, 0x22, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, - 0xba, 0x47, 0x4c, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x43, 0x53, 0x65, 0x74, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, - 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x65, 0x74, 0x12, 0xa5, 0x01, 0x0a, 0x03, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, + 0x79, 0x7d, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x4c, 0x0a, + 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x43, 0x53, 0x65, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x20, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x20, 0x69, 0x66, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0xba, 0x47, 0x22, 0x0a, 0x05, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x12, 0x19, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, - 0x67, 0x65, 0x74, 0x12, 0xad, 0x01, 0x0a, 0x03, 0x44, 0x65, 0x6c, 0x12, 0x1f, 0x2e, 0x74, 0x69, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x67, 0x65, 0x74, 0xba, 0x47, + 0x22, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x19, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x03, 0x44, 0x65, 0x6c, 0x12, 0x1f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, - 0xba, 0x47, 0x24, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1b, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x66, 0x72, 0x6f, - 0x6d, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, - 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, + 0x79, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x24, 0x0a, + 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x5d, 0xba, 0x47, 0x29, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, + 0x65, 0x22, 0x5d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x6b, 0x65, 0x79, 0x73, 0xba, 0x47, 0x29, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, + 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x30, 0x01, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, diff --git a/api/server/v1/cache.pb.gw.go b/api/server/v1/cache.pb.gw.go index 5e37354..de4437d 100644 --- a/api/server/v1/cache.pb.gw.go +++ b/api/server/v1/cache.pb.gw.go @@ -676,7 +676,7 @@ func local_request_Cache_Del_0(ctx context.Context, marshaler runtime.Marshaler, } var ( - filter_Cache_Keys_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "name": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_Cache_Keys_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "name": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} ) func request_Cache_Keys_0(ctx context.Context, marshaler runtime.Marshaler, client CacheClient, req *http.Request, pathParams map[string]string) (Cache_KeysClient, runtime.ServerMetadata, error) { @@ -924,7 +924,7 @@ func RegisterCacheHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterCacheHandlerFromEndpoint is same as RegisterCacheHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterCacheHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/cache_grpc.pb.go b/api/server/v1/cache_grpc.pb.go index f96c46b..6b8ee50 100644 --- a/api/server/v1/cache_grpc.pb.go +++ b/api/server/v1/cache_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/cache.proto package api @@ -32,17 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Cache_CreateCache_FullMethodName = "/tigrisdata.cache.v1.Cache/CreateCache" - Cache_ListCaches_FullMethodName = "/tigrisdata.cache.v1.Cache/ListCaches" - Cache_DeleteCache_FullMethodName = "/tigrisdata.cache.v1.Cache/DeleteCache" - Cache_Set_FullMethodName = "/tigrisdata.cache.v1.Cache/Set" - Cache_GetSet_FullMethodName = "/tigrisdata.cache.v1.Cache/GetSet" - Cache_Get_FullMethodName = "/tigrisdata.cache.v1.Cache/Get" - Cache_Del_FullMethodName = "/tigrisdata.cache.v1.Cache/Del" - Cache_Keys_FullMethodName = "/tigrisdata.cache.v1.Cache/Keys" -) - // CacheClient is the client API for Cache service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -67,7 +42,7 @@ func NewCacheClient(cc grpc.ClientConnInterface) CacheClient { func (c *cacheClient) CreateCache(ctx context.Context, in *CreateCacheRequest, opts ...grpc.CallOption) (*CreateCacheResponse, error) { out := new(CreateCacheResponse) - err := c.cc.Invoke(ctx, Cache_CreateCache_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/CreateCache", in, out, opts...) if err != nil { return nil, err } @@ -76,7 +51,7 @@ func (c *cacheClient) CreateCache(ctx context.Context, in *CreateCacheRequest, o func (c *cacheClient) ListCaches(ctx context.Context, in *ListCachesRequest, opts ...grpc.CallOption) (*ListCachesResponse, error) { out := new(ListCachesResponse) - err := c.cc.Invoke(ctx, Cache_ListCaches_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/ListCaches", in, out, opts...) if err != nil { return nil, err } @@ -85,7 +60,7 @@ func (c *cacheClient) ListCaches(ctx context.Context, in *ListCachesRequest, opt func (c *cacheClient) DeleteCache(ctx context.Context, in *DeleteCacheRequest, opts ...grpc.CallOption) (*DeleteCacheResponse, error) { out := new(DeleteCacheResponse) - err := c.cc.Invoke(ctx, Cache_DeleteCache_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/DeleteCache", in, out, opts...) if err != nil { return nil, err } @@ -94,7 +69,7 @@ func (c *cacheClient) DeleteCache(ctx context.Context, in *DeleteCacheRequest, o func (c *cacheClient) Set(ctx context.Context, in *SetRequest, opts ...grpc.CallOption) (*SetResponse, error) { out := new(SetResponse) - err := c.cc.Invoke(ctx, Cache_Set_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/Set", in, out, opts...) if err != nil { return nil, err } @@ -103,7 +78,7 @@ func (c *cacheClient) Set(ctx context.Context, in *SetRequest, opts ...grpc.Call func (c *cacheClient) GetSet(ctx context.Context, in *GetSetRequest, opts ...grpc.CallOption) (*GetSetResponse, error) { out := new(GetSetResponse) - err := c.cc.Invoke(ctx, Cache_GetSet_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/GetSet", in, out, opts...) if err != nil { return nil, err } @@ -112,7 +87,7 @@ func (c *cacheClient) GetSet(ctx context.Context, in *GetSetRequest, opts ...grp func (c *cacheClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) { out := new(GetResponse) - err := c.cc.Invoke(ctx, Cache_Get_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/Get", in, out, opts...) if err != nil { return nil, err } @@ -121,7 +96,7 @@ func (c *cacheClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.Call func (c *cacheClient) Del(ctx context.Context, in *DelRequest, opts ...grpc.CallOption) (*DelResponse, error) { out := new(DelResponse) - err := c.cc.Invoke(ctx, Cache_Del_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.cache.v1.Cache/Del", in, out, opts...) if err != nil { return nil, err } @@ -129,7 +104,7 @@ func (c *cacheClient) Del(ctx context.Context, in *DelRequest, opts ...grpc.Call } func (c *cacheClient) Keys(ctx context.Context, in *KeysRequest, opts ...grpc.CallOption) (Cache_KeysClient, error) { - stream, err := c.cc.NewStream(ctx, &Cache_ServiceDesc.Streams[0], Cache_Keys_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Cache_ServiceDesc.Streams[0], "/tigrisdata.cache.v1.Cache/Keys", opts...) if err != nil { return nil, err } @@ -224,7 +199,7 @@ func _Cache_CreateCache_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_CreateCache_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/CreateCache", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).CreateCache(ctx, req.(*CreateCacheRequest)) @@ -242,7 +217,7 @@ func _Cache_ListCaches_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_ListCaches_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/ListCaches", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).ListCaches(ctx, req.(*ListCachesRequest)) @@ -260,7 +235,7 @@ func _Cache_DeleteCache_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_DeleteCache_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/DeleteCache", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).DeleteCache(ctx, req.(*DeleteCacheRequest)) @@ -278,7 +253,7 @@ func _Cache_Set_Handler(srv interface{}, ctx context.Context, dec func(interface } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_Set_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/Set", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).Set(ctx, req.(*SetRequest)) @@ -296,7 +271,7 @@ func _Cache_GetSet_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_GetSet_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/GetSet", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).GetSet(ctx, req.(*GetSetRequest)) @@ -314,7 +289,7 @@ func _Cache_Get_Handler(srv interface{}, ctx context.Context, dec func(interface } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_Get_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/Get", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).Get(ctx, req.(*GetRequest)) @@ -332,7 +307,7 @@ func _Cache_Del_Handler(srv interface{}, ctx context.Context, dec func(interface } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Cache_Del_FullMethodName, + FullMethod: "/tigrisdata.cache.v1.Cache/Del", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(CacheServer).Del(ctx, req.(*DelRequest)) diff --git a/api/server/v1/health.pb.go b/api/server/v1/health.pb.go index 1c80909..8bf3841 100644 --- a/api/server/v1/health.pb.go +++ b/api/server/v1/health.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/health.proto package api @@ -137,10 +137,10 @@ var file_server_v1_health_proto_rawDesc = []byte{ 0x61, 0x6c, 0x74, 0x68, 0x41, 0x50, 0x49, 0x12, 0x65, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x11, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x14, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0xba, 0x47, 0x1d, 0x0a, - 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0c, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x42, 0x41, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0xba, 0x47, + 0x1d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, diff --git a/api/server/v1/health.pb.gw.go b/api/server/v1/health.pb.gw.go index 5787da2..9ff65a6 100644 --- a/api/server/v1/health.pb.gw.go +++ b/api/server/v1/health.pb.gw.go @@ -86,7 +86,7 @@ func RegisterHealthAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterHealthAPIHandlerFromEndpoint is same as RegisterHealthAPIHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterHealthAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/health_grpc.pb.go b/api/server/v1/health_grpc.pb.go index e7de29e..62ba681 100644 --- a/api/server/v1/health_grpc.pb.go +++ b/api/server/v1/health_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/health.proto package api @@ -32,10 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - HealthAPI_Health_FullMethodName = "/HealthAPI/Health" -) - // HealthAPIClient is the client API for HealthAPI service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -54,7 +36,7 @@ func NewHealthAPIClient(cc grpc.ClientConnInterface) HealthAPIClient { func (c *healthAPIClient) Health(ctx context.Context, in *HealthCheckInput, opts ...grpc.CallOption) (*HealthCheckResponse, error) { out := new(HealthCheckResponse) - err := c.cc.Invoke(ctx, HealthAPI_Health_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/HealthAPI/Health", in, out, opts...) if err != nil { return nil, err } @@ -98,7 +80,7 @@ func _HealthAPI_Health_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: HealthAPI_Health_FullMethodName, + FullMethod: "/HealthAPI/Health", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(HealthAPIServer).Health(ctx, req.(*HealthCheckInput)) diff --git a/api/server/v1/management.pb.go b/api/server/v1/management.pb.go index 96d4c7a..2cb803d 100644 --- a/api/server/v1/management.pb.go +++ b/api/server/v1/management.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/management.proto package api @@ -1478,12 +1478,12 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0xba, 0x47, 0x21, 0x0a, 0x0a, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0xe7, 0x01, 0x0a, 0x0e, 0x4c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x25, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x21, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, + 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0xe7, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, @@ -1491,27 +1491,27 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x72, 0xba, 0x47, 0x22, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x5a, 0x1b, 0x12, - 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, + 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xba, + 0x47, 0x22, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x12, 0xce, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0xba, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0xba, 0x47, 0x23, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x55, 0x73, @@ -1519,13 +1519,13 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x74, 0x1a, 0x34, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xba, 0x47, 0x23, 0x0a, 0x0a, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, - 0x73, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 0xda, 0x01, 0x0a, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x22, + 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x69, 0x6e, 0x73, + 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x23, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xda, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, @@ -1533,13 +1533,13 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0xba, 0x47, 0x25, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x67, 0x65, 0x74, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x55, 0x70, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x22, 0x2f, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x67, 0x65, 0x74, 0x3a, 0x01, + 0x2a, 0xba, 0x47, 0x25, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x17, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x73, 0x65, 0x72, + 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, @@ -1547,13 +1547,13 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xba, 0x47, 0x23, - 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, + 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x23, 0x0a, 0x0a, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xfc, 0x01, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, @@ -1563,13 +1563,13 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x6c, 0xba, 0x47, 0x28, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x1a, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, + 0x65, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x65, 0x72, + 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x28, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xf2, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, @@ -1578,14 +1578,14 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x36, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0xba, 0x47, 0x2a, 0x0a, 0x0a, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x3a, 0x01, 0x2a, 0x22, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, - 0x2f, 0x67, 0x65, 0x74, 0x12, 0xfc, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, + 0x2f, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x2a, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0xfc, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, @@ -1594,14 +1594,14 @@ var file_server_v1_management_proto_rawDesc = []byte{ 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0xba, 0x47, 0x28, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x36, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x7d, 0x2f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x28, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, diff --git a/api/server/v1/management.pb.gw.go b/api/server/v1/management.pb.gw.go index bec237f..15e0316 100644 --- a/api/server/v1/management.pb.gw.go +++ b/api/server/v1/management.pb.gw.go @@ -66,7 +66,7 @@ func local_request_Management_CreateNamespace_0(ctx context.Context, marshaler r } var ( - filter_Management_ListNamespaces_0 = &utilities.DoubleArray{Encoding: map[string]int{"namespace_id": 0, "namespaceId": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} + filter_Management_ListNamespaces_0 = &utilities.DoubleArray{Encoding: map[string]int{"namespace_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) func request_Management_ListNamespaces_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -893,7 +893,7 @@ func RegisterManagementHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterManagementHandlerFromEndpoint is same as RegisterManagementHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterManagementHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/management_grpc.pb.go b/api/server/v1/management_grpc.pb.go index 26ecd1a..232c42a 100644 --- a/api/server/v1/management_grpc.pb.go +++ b/api/server/v1/management_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/management.proto package api @@ -32,18 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Management_CreateNamespace_FullMethodName = "/tigrisdata.management.v1.Management/CreateNamespace" - Management_ListNamespaces_FullMethodName = "/tigrisdata.management.v1.Management/ListNamespaces" - Management_DeleteNamespace_FullMethodName = "/tigrisdata.management.v1.Management/DeleteNamespace" - Management_InsertUserMetadata_FullMethodName = "/tigrisdata.management.v1.Management/InsertUserMetadata" - Management_GetUserMetadata_FullMethodName = "/tigrisdata.management.v1.Management/GetUserMetadata" - Management_UpdateUserMetadata_FullMethodName = "/tigrisdata.management.v1.Management/UpdateUserMetadata" - Management_InsertNamespaceMetadata_FullMethodName = "/tigrisdata.management.v1.Management/InsertNamespaceMetadata" - Management_GetNamespaceMetadata_FullMethodName = "/tigrisdata.management.v1.Management/GetNamespaceMetadata" - Management_UpdateNamespaceMetadata_FullMethodName = "/tigrisdata.management.v1.Management/UpdateNamespaceMetadata" -) - // ManagementClient is the client API for Management service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -78,7 +52,7 @@ func NewManagementClient(cc grpc.ClientConnInterface) ManagementClient { func (c *managementClient) CreateNamespace(ctx context.Context, in *CreateNamespaceRequest, opts ...grpc.CallOption) (*CreateNamespaceResponse, error) { out := new(CreateNamespaceResponse) - err := c.cc.Invoke(ctx, Management_CreateNamespace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/CreateNamespace", in, out, opts...) if err != nil { return nil, err } @@ -87,7 +61,7 @@ func (c *managementClient) CreateNamespace(ctx context.Context, in *CreateNamesp func (c *managementClient) ListNamespaces(ctx context.Context, in *ListNamespacesRequest, opts ...grpc.CallOption) (*ListNamespacesResponse, error) { out := new(ListNamespacesResponse) - err := c.cc.Invoke(ctx, Management_ListNamespaces_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/ListNamespaces", in, out, opts...) if err != nil { return nil, err } @@ -96,7 +70,7 @@ func (c *managementClient) ListNamespaces(ctx context.Context, in *ListNamespace func (c *managementClient) DeleteNamespace(ctx context.Context, in *DeleteNamespaceRequest, opts ...grpc.CallOption) (*DeleteNamespaceResponse, error) { out := new(DeleteNamespaceResponse) - err := c.cc.Invoke(ctx, Management_DeleteNamespace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/DeleteNamespace", in, out, opts...) if err != nil { return nil, err } @@ -105,7 +79,7 @@ func (c *managementClient) DeleteNamespace(ctx context.Context, in *DeleteNamesp func (c *managementClient) InsertUserMetadata(ctx context.Context, in *InsertUserMetadataRequest, opts ...grpc.CallOption) (*InsertUserMetadataResponse, error) { out := new(InsertUserMetadataResponse) - err := c.cc.Invoke(ctx, Management_InsertUserMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/InsertUserMetadata", in, out, opts...) if err != nil { return nil, err } @@ -114,7 +88,7 @@ func (c *managementClient) InsertUserMetadata(ctx context.Context, in *InsertUse func (c *managementClient) GetUserMetadata(ctx context.Context, in *GetUserMetadataRequest, opts ...grpc.CallOption) (*GetUserMetadataResponse, error) { out := new(GetUserMetadataResponse) - err := c.cc.Invoke(ctx, Management_GetUserMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/GetUserMetadata", in, out, opts...) if err != nil { return nil, err } @@ -123,7 +97,7 @@ func (c *managementClient) GetUserMetadata(ctx context.Context, in *GetUserMetad func (c *managementClient) UpdateUserMetadata(ctx context.Context, in *UpdateUserMetadataRequest, opts ...grpc.CallOption) (*UpdateUserMetadataResponse, error) { out := new(UpdateUserMetadataResponse) - err := c.cc.Invoke(ctx, Management_UpdateUserMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/UpdateUserMetadata", in, out, opts...) if err != nil { return nil, err } @@ -132,7 +106,7 @@ func (c *managementClient) UpdateUserMetadata(ctx context.Context, in *UpdateUse func (c *managementClient) InsertNamespaceMetadata(ctx context.Context, in *InsertNamespaceMetadataRequest, opts ...grpc.CallOption) (*InsertNamespaceMetadataResponse, error) { out := new(InsertNamespaceMetadataResponse) - err := c.cc.Invoke(ctx, Management_InsertNamespaceMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/InsertNamespaceMetadata", in, out, opts...) if err != nil { return nil, err } @@ -141,7 +115,7 @@ func (c *managementClient) InsertNamespaceMetadata(ctx context.Context, in *Inse func (c *managementClient) GetNamespaceMetadata(ctx context.Context, in *GetNamespaceMetadataRequest, opts ...grpc.CallOption) (*GetNamespaceMetadataResponse, error) { out := new(GetNamespaceMetadataResponse) - err := c.cc.Invoke(ctx, Management_GetNamespaceMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/GetNamespaceMetadata", in, out, opts...) if err != nil { return nil, err } @@ -150,7 +124,7 @@ func (c *managementClient) GetNamespaceMetadata(ctx context.Context, in *GetName func (c *managementClient) UpdateNamespaceMetadata(ctx context.Context, in *UpdateNamespaceMetadataRequest, opts ...grpc.CallOption) (*UpdateNamespaceMetadataResponse, error) { out := new(UpdateNamespaceMetadataResponse) - err := c.cc.Invoke(ctx, Management_UpdateNamespaceMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.management.v1.Management/UpdateNamespaceMetadata", in, out, opts...) if err != nil { return nil, err } @@ -234,7 +208,7 @@ func _Management_CreateNamespace_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_CreateNamespace_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/CreateNamespace", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).CreateNamespace(ctx, req.(*CreateNamespaceRequest)) @@ -252,7 +226,7 @@ func _Management_ListNamespaces_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_ListNamespaces_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/ListNamespaces", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).ListNamespaces(ctx, req.(*ListNamespacesRequest)) @@ -270,7 +244,7 @@ func _Management_DeleteNamespace_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_DeleteNamespace_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/DeleteNamespace", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).DeleteNamespace(ctx, req.(*DeleteNamespaceRequest)) @@ -288,7 +262,7 @@ func _Management_InsertUserMetadata_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_InsertUserMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/InsertUserMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).InsertUserMetadata(ctx, req.(*InsertUserMetadataRequest)) @@ -306,7 +280,7 @@ func _Management_GetUserMetadata_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_GetUserMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/GetUserMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).GetUserMetadata(ctx, req.(*GetUserMetadataRequest)) @@ -324,7 +298,7 @@ func _Management_UpdateUserMetadata_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_UpdateUserMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/UpdateUserMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).UpdateUserMetadata(ctx, req.(*UpdateUserMetadataRequest)) @@ -342,7 +316,7 @@ func _Management_InsertNamespaceMetadata_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_InsertNamespaceMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/InsertNamespaceMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).InsertNamespaceMetadata(ctx, req.(*InsertNamespaceMetadataRequest)) @@ -360,7 +334,7 @@ func _Management_GetNamespaceMetadata_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_GetNamespaceMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/GetNamespaceMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).GetNamespaceMetadata(ctx, req.(*GetNamespaceMetadataRequest)) @@ -378,7 +352,7 @@ func _Management_UpdateNamespaceMetadata_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Management_UpdateNamespaceMetadata_FullMethodName, + FullMethod: "/tigrisdata.management.v1.Management/UpdateNamespaceMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ManagementServer).UpdateNamespaceMetadata(ctx, req.(*UpdateNamespaceMetadataRequest)) diff --git a/api/server/v1/observability.pb.go b/api/server/v1/observability.pb.go index c9b25fb..ceaeeaf 100644 --- a/api/server/v1/observability.pb.go +++ b/api/server/v1/observability.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/observability.proto package api @@ -1507,13 +1507,13 @@ var file_server_v1_observability_proto_rawDesc = []byte{ 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0xba, 0x47, 0x2c, 0x0a, 0x0d, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x51, - 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x73, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, - 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, + 0xba, 0x47, 0x2c, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x69, 0x6d, 0x65, + 0x20, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, @@ -1521,38 +1521,38 @@ var file_server_v1_observability_proto_rawDesc = []byte{ 0x1a, 0x30, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x63, 0xba, 0x47, 0x37, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x26, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x20, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, - 0x2f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x74, + 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x71, 0x75, + 0x6f, 0x74, 0x61, 0x2f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x37, + 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x26, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x71, 0x75, 0x6f, 0x74, 0x61, + 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0xba, 0x47, 0x36, 0x0a, 0x0d, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x25, 0x51, 0x75, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x20, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x71, - 0x75, 0x6f, 0x74, 0x61, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x07, 0x47, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, + 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x01, + 0x2a, 0xba, 0x47, 0x36, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x25, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x71, + 0x75, 0x6f, 0x74, 0x61, 0x20, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0xb4, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4e, 0xba, 0x47, 0x2d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x69, 0x6e, 0x66, - 0x6f, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, + 0x6f, 0xba, 0x47, 0x2d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x1c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, diff --git a/api/server/v1/observability.pb.gw.go b/api/server/v1/observability.pb.gw.go index b9886ef..fa0f168 100644 --- a/api/server/v1/observability.pb.gw.go +++ b/api/server/v1/observability.pb.gw.go @@ -263,7 +263,7 @@ func RegisterObservabilityHandlerServer(ctx context.Context, mux *runtime.ServeM // RegisterObservabilityHandlerFromEndpoint is same as RegisterObservabilityHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterObservabilityHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/observability_grpc.pb.go b/api/server/v1/observability_grpc.pb.go index 41b0ae6..9ea61cc 100644 --- a/api/server/v1/observability_grpc.pb.go +++ b/api/server/v1/observability_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/observability.proto package api @@ -32,13 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Observability_QueryTimeSeriesMetrics_FullMethodName = "/tigrisdata.observability.v1.Observability/QueryTimeSeriesMetrics" - Observability_QuotaLimits_FullMethodName = "/tigrisdata.observability.v1.Observability/QuotaLimits" - Observability_QuotaUsage_FullMethodName = "/tigrisdata.observability.v1.Observability/QuotaUsage" - Observability_GetInfo_FullMethodName = "/tigrisdata.observability.v1.Observability/GetInfo" -) - // ObservabilityClient is the client API for Observability service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -63,7 +42,7 @@ func NewObservabilityClient(cc grpc.ClientConnInterface) ObservabilityClient { func (c *observabilityClient) QueryTimeSeriesMetrics(ctx context.Context, in *QueryTimeSeriesMetricsRequest, opts ...grpc.CallOption) (*QueryTimeSeriesMetricsResponse, error) { out := new(QueryTimeSeriesMetricsResponse) - err := c.cc.Invoke(ctx, Observability_QueryTimeSeriesMetrics_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.observability.v1.Observability/QueryTimeSeriesMetrics", in, out, opts...) if err != nil { return nil, err } @@ -72,7 +51,7 @@ func (c *observabilityClient) QueryTimeSeriesMetrics(ctx context.Context, in *Qu func (c *observabilityClient) QuotaLimits(ctx context.Context, in *QuotaLimitsRequest, opts ...grpc.CallOption) (*QuotaLimitsResponse, error) { out := new(QuotaLimitsResponse) - err := c.cc.Invoke(ctx, Observability_QuotaLimits_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.observability.v1.Observability/QuotaLimits", in, out, opts...) if err != nil { return nil, err } @@ -81,7 +60,7 @@ func (c *observabilityClient) QuotaLimits(ctx context.Context, in *QuotaLimitsRe func (c *observabilityClient) QuotaUsage(ctx context.Context, in *QuotaUsageRequest, opts ...grpc.CallOption) (*QuotaUsageResponse, error) { out := new(QuotaUsageResponse) - err := c.cc.Invoke(ctx, Observability_QuotaUsage_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.observability.v1.Observability/QuotaUsage", in, out, opts...) if err != nil { return nil, err } @@ -90,7 +69,7 @@ func (c *observabilityClient) QuotaUsage(ctx context.Context, in *QuotaUsageRequ func (c *observabilityClient) GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error) { out := new(GetInfoResponse) - err := c.cc.Invoke(ctx, Observability_GetInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.observability.v1.Observability/GetInfo", in, out, opts...) if err != nil { return nil, err } @@ -149,7 +128,7 @@ func _Observability_QueryTimeSeriesMetrics_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Observability_QueryTimeSeriesMetrics_FullMethodName, + FullMethod: "/tigrisdata.observability.v1.Observability/QueryTimeSeriesMetrics", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).QueryTimeSeriesMetrics(ctx, req.(*QueryTimeSeriesMetricsRequest)) @@ -167,7 +146,7 @@ func _Observability_QuotaLimits_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Observability_QuotaLimits_FullMethodName, + FullMethod: "/tigrisdata.observability.v1.Observability/QuotaLimits", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).QuotaLimits(ctx, req.(*QuotaLimitsRequest)) @@ -185,7 +164,7 @@ func _Observability_QuotaUsage_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Observability_QuotaUsage_FullMethodName, + FullMethod: "/tigrisdata.observability.v1.Observability/QuotaUsage", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).QuotaUsage(ctx, req.(*QuotaUsageRequest)) @@ -203,7 +182,7 @@ func _Observability_GetInfo_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Observability_GetInfo_FullMethodName, + FullMethod: "/tigrisdata.observability.v1.Observability/GetInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ObservabilityServer).GetInfo(ctx, req.(*GetInfoRequest)) diff --git a/api/server/v1/realtime.pb.go b/api/server/v1/realtime.pb.go index 2b452b5..bbd6b1e 100644 --- a/api/server/v1/realtime.pb.go +++ b/api/server/v1/realtime.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/realtime.proto package api @@ -2014,27 +2014,27 @@ var file_server_v1_realtime_proto_rawDesc = []byte{ 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0xba, 0x47, - 0x26, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x7d, 0x2f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0xd3, 0x01, 0x0a, 0x0c, 0x47, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, + 0x65, 0xba, 0x47, 0x26, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, + 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0xd3, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x54, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x54, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x54, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0xba, 0x47, 0x2b, 0x0a, 0x08, 0x52, 0x65, 0x61, - 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x7d, 0xba, 0x47, 0x2b, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x1f, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0xda, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x54, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, @@ -2042,41 +2042,41 @@ var file_server_v1_realtime_proto_rawDesc = []byte{ 0x1a, 0x2d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x54, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x6c, 0xba, 0x47, 0x39, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2d, + 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0xba, 0x47, 0x39, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, - 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0xdd, 0x01, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0xdd, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0xba, 0x47, 0x2a, 0x0a, 0x08, - 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x30, 0x01, 0x12, 0xd5, 0x01, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3d, 0x12, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0xba, 0x47, + 0x2a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x47, 0x65, 0x74, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x30, 0x01, 0x12, 0xd5, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0xba, - 0x47, 0x2d, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x70, 0x75, - 0x73, 0x68, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x61, - 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, + 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x2d, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x21, 0x70, 0x75, 0x73, 0x68, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, @@ -2084,15 +2084,15 @@ var file_server_v1_realtime_proto_rawDesc = []byte{ 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x84, - 0x01, 0xba, 0x47, 0x39, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2d, - 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x6c, - 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xba, 0x47, 0x39, 0x0a, 0x08, 0x52, 0x65, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, diff --git a/api/server/v1/realtime.pb.gw.go b/api/server/v1/realtime.pb.gw.go index 8c36eb8..cb9b72e 100644 --- a/api/server/v1/realtime.pb.gw.go +++ b/api/server/v1/realtime.pb.gw.go @@ -228,7 +228,7 @@ func local_request_Realtime_GetRTChannels_0(ctx context.Context, marshaler runti } var ( - filter_Realtime_ReadMessages_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "channel": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_Realtime_ReadMessages_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "channel": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} ) func request_Realtime_ReadMessages_0(ctx context.Context, marshaler runtime.Marshaler, client RealtimeClient, req *http.Request, pathParams map[string]string) (Realtime_ReadMessagesClient, runtime.ServerMetadata, error) { @@ -371,7 +371,7 @@ func local_request_Realtime_Messages_0(ctx context.Context, marshaler runtime.Ma } var ( - filter_Realtime_ListSubscriptions_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "channel": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_Realtime_ListSubscriptions_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "channel": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} ) func request_Realtime_ListSubscriptions_0(ctx context.Context, marshaler runtime.Marshaler, client RealtimeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -604,7 +604,7 @@ func RegisterRealtimeHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterRealtimeHandlerFromEndpoint is same as RegisterRealtimeHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterRealtimeHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/realtime_grpc.pb.go b/api/server/v1/realtime_grpc.pb.go index a66e6b3..5741612 100644 --- a/api/server/v1/realtime_grpc.pb.go +++ b/api/server/v1/realtime_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/realtime.proto package api @@ -32,15 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Realtime_Presence_FullMethodName = "/tigrisdata.realtime.v1.Realtime/Presence" - Realtime_GetRTChannel_FullMethodName = "/tigrisdata.realtime.v1.Realtime/GetRTChannel" - Realtime_GetRTChannels_FullMethodName = "/tigrisdata.realtime.v1.Realtime/GetRTChannels" - Realtime_ReadMessages_FullMethodName = "/tigrisdata.realtime.v1.Realtime/ReadMessages" - Realtime_Messages_FullMethodName = "/tigrisdata.realtime.v1.Realtime/Messages" - Realtime_ListSubscriptions_FullMethodName = "/tigrisdata.realtime.v1.Realtime/ListSubscriptions" -) - // RealtimeClient is the client API for Realtime service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -63,7 +40,7 @@ func NewRealtimeClient(cc grpc.ClientConnInterface) RealtimeClient { func (c *realtimeClient) Presence(ctx context.Context, in *PresenceRequest, opts ...grpc.CallOption) (*PresenceResponse, error) { out := new(PresenceResponse) - err := c.cc.Invoke(ctx, Realtime_Presence_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.realtime.v1.Realtime/Presence", in, out, opts...) if err != nil { return nil, err } @@ -72,7 +49,7 @@ func (c *realtimeClient) Presence(ctx context.Context, in *PresenceRequest, opts func (c *realtimeClient) GetRTChannel(ctx context.Context, in *GetRTChannelRequest, opts ...grpc.CallOption) (*GetRTChannelResponse, error) { out := new(GetRTChannelResponse) - err := c.cc.Invoke(ctx, Realtime_GetRTChannel_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.realtime.v1.Realtime/GetRTChannel", in, out, opts...) if err != nil { return nil, err } @@ -81,7 +58,7 @@ func (c *realtimeClient) GetRTChannel(ctx context.Context, in *GetRTChannelReque func (c *realtimeClient) GetRTChannels(ctx context.Context, in *GetRTChannelsRequest, opts ...grpc.CallOption) (*GetRTChannelsResponse, error) { out := new(GetRTChannelsResponse) - err := c.cc.Invoke(ctx, Realtime_GetRTChannels_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.realtime.v1.Realtime/GetRTChannels", in, out, opts...) if err != nil { return nil, err } @@ -89,7 +66,7 @@ func (c *realtimeClient) GetRTChannels(ctx context.Context, in *GetRTChannelsReq } func (c *realtimeClient) ReadMessages(ctx context.Context, in *ReadMessagesRequest, opts ...grpc.CallOption) (Realtime_ReadMessagesClient, error) { - stream, err := c.cc.NewStream(ctx, &Realtime_ServiceDesc.Streams[0], Realtime_ReadMessages_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Realtime_ServiceDesc.Streams[0], "/tigrisdata.realtime.v1.Realtime/ReadMessages", opts...) if err != nil { return nil, err } @@ -122,7 +99,7 @@ func (x *realtimeReadMessagesClient) Recv() (*ReadMessagesResponse, error) { func (c *realtimeClient) Messages(ctx context.Context, in *MessagesRequest, opts ...grpc.CallOption) (*MessagesResponse, error) { out := new(MessagesResponse) - err := c.cc.Invoke(ctx, Realtime_Messages_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.realtime.v1.Realtime/Messages", in, out, opts...) if err != nil { return nil, err } @@ -131,7 +108,7 @@ func (c *realtimeClient) Messages(ctx context.Context, in *MessagesRequest, opts func (c *realtimeClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionRequest, opts ...grpc.CallOption) (*ListSubscriptionResponse, error) { out := new(ListSubscriptionResponse) - err := c.cc.Invoke(ctx, Realtime_ListSubscriptions_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.realtime.v1.Realtime/ListSubscriptions", in, out, opts...) if err != nil { return nil, err } @@ -194,7 +171,7 @@ func _Realtime_Presence_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Realtime_Presence_FullMethodName, + FullMethod: "/tigrisdata.realtime.v1.Realtime/Presence", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RealtimeServer).Presence(ctx, req.(*PresenceRequest)) @@ -212,7 +189,7 @@ func _Realtime_GetRTChannel_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Realtime_GetRTChannel_FullMethodName, + FullMethod: "/tigrisdata.realtime.v1.Realtime/GetRTChannel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RealtimeServer).GetRTChannel(ctx, req.(*GetRTChannelRequest)) @@ -230,7 +207,7 @@ func _Realtime_GetRTChannels_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Realtime_GetRTChannels_FullMethodName, + FullMethod: "/tigrisdata.realtime.v1.Realtime/GetRTChannels", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RealtimeServer).GetRTChannels(ctx, req.(*GetRTChannelsRequest)) @@ -269,7 +246,7 @@ func _Realtime_Messages_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Realtime_Messages_FullMethodName, + FullMethod: "/tigrisdata.realtime.v1.Realtime/Messages", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RealtimeServer).Messages(ctx, req.(*MessagesRequest)) @@ -287,7 +264,7 @@ func _Realtime_ListSubscriptions_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Realtime_ListSubscriptions_FullMethodName, + FullMethod: "/tigrisdata.realtime.v1.Realtime/ListSubscriptions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(RealtimeServer).ListSubscriptions(ctx, req.(*ListSubscriptionRequest)) diff --git a/api/server/v1/search.pb.go b/api/server/v1/search.pb.go index 16eab1b..d8bc37e 100644 --- a/api/server/v1/search.pb.go +++ b/api/server/v1/search.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.9 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: server/v1/search.proto package api @@ -1961,87 +1961,87 @@ var file_server_v1_search_proto_rawDesc = []byte{ 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xba, 0x47, 0x29, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x12, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x1a, 0x2c, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x08, 0x47, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x1a, 0x2c, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0xba, 0x47, + 0x29, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0xc0, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xba, 0x47, 0x2e, 0x0a, 0x06, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, - 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbc, 0x01, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0xba, 0x47, 0x2e, 0x0a, + 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, + 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0xbc, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x58, 0xba, 0x47, 0x1e, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x2a, 0x2c, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb1, 0x01, 0x0a, + 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2c, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1e, 0x0a, 0x06, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0xb1, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4d, 0xba, 0x47, 0x1d, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x65, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, + 0xba, 0x47, 0x1d, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0xca, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0xba, - 0x47, 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, 0x47, 0x65, 0x74, 0x20, - 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcd, 0x01, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xba, 0x47, + 0x2c, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, 0x47, 0x65, 0x74, 0x20, 0x61, + 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcd, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x27, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x6c, 0xba, 0x47, 0x22, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x18, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, - 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xcd, 0x01, + 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x22, 0x0a, 0x06, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x12, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xcd, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x68, 0xba, 0x47, 0x23, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x12, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xf6, 0x01, + 0x6e, 0x73, 0x65, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x23, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x12, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xf6, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x34, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, @@ -2050,67 +2050,67 @@ var file_server_v1_search_proto_rawDesc = []byte{ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, - 0xba, 0x47, 0x31, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x27, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x1a, 0x37, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x1a, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, + 0x01, 0x2a, 0xba, 0x47, 0x31, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x27, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x6e, + 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0xd0, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0xba, 0x47, - 0x26, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, - 0x32, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3c, 0x32, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, + 0xba, 0x47, 0x26, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, + 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0xcb, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x66, 0xba, 0x47, 0x21, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x17, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x62, - 0x79, 0x20, 0x69, 0x64, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x2a, 0x37, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x21, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x20, 0x62, 0x79, 0x20, 0x69, 0x64, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x76, 0xba, 0x47, 0x23, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, + 0x73, 0x65, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x45, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, + 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x23, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x20, 0x62, 0x79, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, - 0x3a, 0x01, 0x2a, 0x2a, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x53, + 0x73, 0x20, 0x62, 0x79, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0xc8, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x28, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0xba, 0x47, 0x1b, 0x0a, - 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, - 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, - 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x30, 0x01, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, + 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x7d, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x3a, 0x01, 0x2a, 0xba, 0x47, 0x1b, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x30, 0x01, 0x42, 0x41, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x64, 0x62, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x67, 0x72, 0x69, 0x73, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x74, 0x69, diff --git a/api/server/v1/search.pb.gw.go b/api/server/v1/search.pb.gw.go index 60a686f..b39c2c9 100644 --- a/api/server/v1/search.pb.gw.go +++ b/api/server/v1/search.pb.gw.go @@ -280,7 +280,7 @@ func local_request_Search_DeleteIndex_0(ctx context.Context, marshaler runtime.M } var ( - filter_Search_ListIndexes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} + filter_Search_ListIndexes_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) func request_Search_ListIndexes_0(ctx context.Context, marshaler runtime.Marshaler, client SearchClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -350,7 +350,7 @@ func local_request_Search_ListIndexes_0(ctx context.Context, marshaler runtime.M } var ( - filter_Search_Get_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "index": 1}, Base: []int{1, 2, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 2, 2, 3, 3}} + filter_Search_Get_0 = &utilities.DoubleArray{Encoding: map[string]int{"project": 0, "index": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} ) func request_Search_Get_0(ctx context.Context, marshaler runtime.Marshaler, client SearchClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -1333,7 +1333,7 @@ func RegisterSearchHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser // RegisterSearchHandlerFromEndpoint is same as RegisterSearchHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterSearchHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.Dial(endpoint, opts...) if err != nil { return err } diff --git a/api/server/v1/search_grpc.pb.go b/api/server/v1/search_grpc.pb.go index 1a49393..27363dc 100644 --- a/api/server/v1/search_grpc.pb.go +++ b/api/server/v1/search_grpc.pb.go @@ -1,21 +1,7 @@ -// Copyright 2022-2023 Tigris Data, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 // source: server/v1/search.proto package api @@ -32,21 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Search_CreateOrUpdateIndex_FullMethodName = "/tigrisdata.search.v1.Search/CreateOrUpdateIndex" - Search_GetIndex_FullMethodName = "/tigrisdata.search.v1.Search/GetIndex" - Search_DeleteIndex_FullMethodName = "/tigrisdata.search.v1.Search/DeleteIndex" - Search_ListIndexes_FullMethodName = "/tigrisdata.search.v1.Search/ListIndexes" - Search_Get_FullMethodName = "/tigrisdata.search.v1.Search/Get" - Search_CreateById_FullMethodName = "/tigrisdata.search.v1.Search/CreateById" - Search_Create_FullMethodName = "/tigrisdata.search.v1.Search/Create" - Search_CreateOrReplace_FullMethodName = "/tigrisdata.search.v1.Search/CreateOrReplace" - Search_Update_FullMethodName = "/tigrisdata.search.v1.Search/Update" - Search_Delete_FullMethodName = "/tigrisdata.search.v1.Search/Delete" - Search_DeleteByQuery_FullMethodName = "/tigrisdata.search.v1.Search/DeleteByQuery" - Search_Search_FullMethodName = "/tigrisdata.search.v1.Search/Search" -) - // SearchClient is the client API for Search service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -104,7 +75,7 @@ func NewSearchClient(cc grpc.ClientConnInterface) SearchClient { func (c *searchClient) CreateOrUpdateIndex(ctx context.Context, in *CreateOrUpdateIndexRequest, opts ...grpc.CallOption) (*CreateOrUpdateIndexResponse, error) { out := new(CreateOrUpdateIndexResponse) - err := c.cc.Invoke(ctx, Search_CreateOrUpdateIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/CreateOrUpdateIndex", in, out, opts...) if err != nil { return nil, err } @@ -113,7 +84,7 @@ func (c *searchClient) CreateOrUpdateIndex(ctx context.Context, in *CreateOrUpda func (c *searchClient) GetIndex(ctx context.Context, in *GetIndexRequest, opts ...grpc.CallOption) (*GetIndexResponse, error) { out := new(GetIndexResponse) - err := c.cc.Invoke(ctx, Search_GetIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/GetIndex", in, out, opts...) if err != nil { return nil, err } @@ -122,7 +93,7 @@ func (c *searchClient) GetIndex(ctx context.Context, in *GetIndexRequest, opts . func (c *searchClient) DeleteIndex(ctx context.Context, in *DeleteIndexRequest, opts ...grpc.CallOption) (*DeleteIndexResponse, error) { out := new(DeleteIndexResponse) - err := c.cc.Invoke(ctx, Search_DeleteIndex_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/DeleteIndex", in, out, opts...) if err != nil { return nil, err } @@ -131,7 +102,7 @@ func (c *searchClient) DeleteIndex(ctx context.Context, in *DeleteIndexRequest, func (c *searchClient) ListIndexes(ctx context.Context, in *ListIndexesRequest, opts ...grpc.CallOption) (*ListIndexesResponse, error) { out := new(ListIndexesResponse) - err := c.cc.Invoke(ctx, Search_ListIndexes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/ListIndexes", in, out, opts...) if err != nil { return nil, err } @@ -140,7 +111,7 @@ func (c *searchClient) ListIndexes(ctx context.Context, in *ListIndexesRequest, func (c *searchClient) Get(ctx context.Context, in *GetDocumentRequest, opts ...grpc.CallOption) (*GetDocumentResponse, error) { out := new(GetDocumentResponse) - err := c.cc.Invoke(ctx, Search_Get_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/Get", in, out, opts...) if err != nil { return nil, err } @@ -149,7 +120,7 @@ func (c *searchClient) Get(ctx context.Context, in *GetDocumentRequest, opts ... func (c *searchClient) CreateById(ctx context.Context, in *CreateByIdRequest, opts ...grpc.CallOption) (*CreateByIdResponse, error) { out := new(CreateByIdResponse) - err := c.cc.Invoke(ctx, Search_CreateById_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/CreateById", in, out, opts...) if err != nil { return nil, err } @@ -158,7 +129,7 @@ func (c *searchClient) CreateById(ctx context.Context, in *CreateByIdRequest, op func (c *searchClient) Create(ctx context.Context, in *CreateDocumentRequest, opts ...grpc.CallOption) (*CreateDocumentResponse, error) { out := new(CreateDocumentResponse) - err := c.cc.Invoke(ctx, Search_Create_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/Create", in, out, opts...) if err != nil { return nil, err } @@ -167,7 +138,7 @@ func (c *searchClient) Create(ctx context.Context, in *CreateDocumentRequest, op func (c *searchClient) CreateOrReplace(ctx context.Context, in *CreateOrReplaceDocumentRequest, opts ...grpc.CallOption) (*CreateOrReplaceDocumentResponse, error) { out := new(CreateOrReplaceDocumentResponse) - err := c.cc.Invoke(ctx, Search_CreateOrReplace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/CreateOrReplace", in, out, opts...) if err != nil { return nil, err } @@ -176,7 +147,7 @@ func (c *searchClient) CreateOrReplace(ctx context.Context, in *CreateOrReplaceD func (c *searchClient) Update(ctx context.Context, in *UpdateDocumentRequest, opts ...grpc.CallOption) (*UpdateDocumentResponse, error) { out := new(UpdateDocumentResponse) - err := c.cc.Invoke(ctx, Search_Update_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/Update", in, out, opts...) if err != nil { return nil, err } @@ -185,7 +156,7 @@ func (c *searchClient) Update(ctx context.Context, in *UpdateDocumentRequest, op func (c *searchClient) Delete(ctx context.Context, in *DeleteDocumentRequest, opts ...grpc.CallOption) (*DeleteDocumentResponse, error) { out := new(DeleteDocumentResponse) - err := c.cc.Invoke(ctx, Search_Delete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/Delete", in, out, opts...) if err != nil { return nil, err } @@ -194,7 +165,7 @@ func (c *searchClient) Delete(ctx context.Context, in *DeleteDocumentRequest, op func (c *searchClient) DeleteByQuery(ctx context.Context, in *DeleteByQueryRequest, opts ...grpc.CallOption) (*DeleteByQueryResponse, error) { out := new(DeleteByQueryResponse) - err := c.cc.Invoke(ctx, Search_DeleteByQuery_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/tigrisdata.search.v1.Search/DeleteByQuery", in, out, opts...) if err != nil { return nil, err } @@ -202,7 +173,7 @@ func (c *searchClient) DeleteByQuery(ctx context.Context, in *DeleteByQueryReque } func (c *searchClient) Search(ctx context.Context, in *SearchIndexRequest, opts ...grpc.CallOption) (Search_SearchClient, error) { - stream, err := c.cc.NewStream(ctx, &Search_ServiceDesc.Streams[0], Search_Search_FullMethodName, opts...) + stream, err := c.cc.NewStream(ctx, &Search_ServiceDesc.Streams[0], "/tigrisdata.search.v1.Search/Search", opts...) if err != nil { return nil, err } @@ -342,7 +313,7 @@ func _Search_CreateOrUpdateIndex_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_CreateOrUpdateIndex_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/CreateOrUpdateIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).CreateOrUpdateIndex(ctx, req.(*CreateOrUpdateIndexRequest)) @@ -360,7 +331,7 @@ func _Search_GetIndex_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_GetIndex_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/GetIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).GetIndex(ctx, req.(*GetIndexRequest)) @@ -378,7 +349,7 @@ func _Search_DeleteIndex_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_DeleteIndex_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/DeleteIndex", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).DeleteIndex(ctx, req.(*DeleteIndexRequest)) @@ -396,7 +367,7 @@ func _Search_ListIndexes_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_ListIndexes_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/ListIndexes", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).ListIndexes(ctx, req.(*ListIndexesRequest)) @@ -414,7 +385,7 @@ func _Search_Get_Handler(srv interface{}, ctx context.Context, dec func(interfac } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_Get_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/Get", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).Get(ctx, req.(*GetDocumentRequest)) @@ -432,7 +403,7 @@ func _Search_CreateById_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_CreateById_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/CreateById", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).CreateById(ctx, req.(*CreateByIdRequest)) @@ -450,7 +421,7 @@ func _Search_Create_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_Create_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/Create", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).Create(ctx, req.(*CreateDocumentRequest)) @@ -468,7 +439,7 @@ func _Search_CreateOrReplace_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_CreateOrReplace_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/CreateOrReplace", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).CreateOrReplace(ctx, req.(*CreateOrReplaceDocumentRequest)) @@ -486,7 +457,7 @@ func _Search_Update_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_Update_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/Update", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).Update(ctx, req.(*UpdateDocumentRequest)) @@ -504,7 +475,7 @@ func _Search_Delete_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_Delete_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/Delete", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).Delete(ctx, req.(*DeleteDocumentRequest)) @@ -522,7 +493,7 @@ func _Search_DeleteByQuery_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Search_DeleteByQuery_FullMethodName, + FullMethod: "/tigrisdata.search.v1.Search/DeleteByQuery", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(SearchServer).DeleteByQuery(ctx, req.(*DeleteByQueryRequest)) diff --git a/driver/driver.go b/driver/driver.go index b0a4de2..c57d6bf 100644 --- a/driver/driver.go +++ b/driver/driver.go @@ -94,6 +94,10 @@ type Database interface { Read(ctx context.Context, collection string, filter Filter, fields Projection, options ...*ReadOptions) (Iterator, error) + // Explain the query planner for a specified filter. + Explain(ctx context.Context, collection string, filter Filter, fields Projection, + options ...*ReadOptions) (*ExplainResponse, error) + // Search for documents in the collection matching specified query Search(ctx context.Context, collection string, request *SearchRequest) (SearchResultIterator, error) @@ -255,6 +259,17 @@ func (c *driverCRUD) Read(ctx context.Context, collection string, filter Filter, return c.readWithOptions(ctx, collection, filter, fields, opts.(*ReadOptions)) } +func (c *driverCRUD) Explain(ctx context.Context, collection string, filter Filter, fields Projection, + options ...*ReadOptions, +) (*ExplainResponse, error) { + opts, err := validateOptionsParam(options, &ReadOptions{}) + if err != nil { + return nil, err + } + + return c.explainWithOptions(ctx, collection, filter, fields, opts.(*ReadOptions)) +} + func (c *driverCRUD) Search(ctx context.Context, collection string, request *SearchRequest) ( SearchResultIterator, error, ) { diff --git a/driver/grpc.go b/driver/grpc.go index 4828bee..3505899 100644 --- a/driver/grpc.go +++ b/driver/grpc.go @@ -415,6 +415,22 @@ func (c *grpcCRUD) readWithOptions(ctx context.Context, collection string, filte return &readIterator{streamReader: &grpcStreamReader{stream: resp, cancel: cancel}}, nil } +func (c *grpcCRUD) explainWithOptions(ctx context.Context, collection string, filter Filter, fields Projection, options *ReadOptions) (*ExplainResponse, error) { + r, err := c.api.Explain(ctx, &api.ReadRequest{ + Project: c.db, + Branch: c.branch, + Collection: collection, + Filter: filter, + Fields: fields, + Options: (*api.ReadRequestOptions)(options), + }) + if err != nil { + return nil, GRPCError(err) + } + + return (*ExplainResponse)(r), nil +} + func (c *grpcCRUD) createBranch(ctx context.Context, name string) (*CreateBranchResponse, error) { r, err := c.api.CreateBranch(ctx, &api.CreateBranchRequest{ Project: c.db, diff --git a/driver/http.go b/driver/http.go index c4d7412..b7ab807 100644 --- a/driver/http.go +++ b/driver/http.go @@ -688,6 +688,28 @@ func (c *httpCRUD) readWithOptions(ctx context.Context, collection string, filte return e, nil } +func (c *httpCRUD) explainWithOptions(ctx context.Context, collection string, filter Filter, fields Projection, options *ReadOptions) (*ExplainResponse, error) { + ctx = setHTTPTxCtx(ctx, c.txCtx, c.cookies) + + resp, err := c.api.TigrisExplain(ctx, c.db, collection, apiHTTP.TigrisReadJSONRequestBody{ + Branch: &c.branch, + Filter: json.RawMessage(filter), + Fields: json.RawMessage(fields), + Options: c.convertReadOptions(options), + }) + + if err = HTTPError(err, resp); err != nil { + return nil, err + } + + var r ExplainResponse + if err := respDecode(resp.Body, &r); err != nil { + return nil, err + } + + return &r, nil +} + func (c *httpCRUD) createBranch(ctx context.Context, name string) (*CreateBranchResponse, error) { resp, err := c.api.TigrisCreateBranch(ctx, c.db, name, apiHTTP.TigrisCreateBranchJSONRequestBody{}) diff --git a/driver/internal.go b/driver/internal.go index 5543976..01d22bd 100644 --- a/driver/internal.go +++ b/driver/internal.go @@ -53,6 +53,8 @@ type CRUDWithOptions interface { *ReplaceResponse, error) readWithOptions(ctx context.Context, collection string, filter Filter, fields Projection, options *ReadOptions) ( Iterator, error) + explainWithOptions(ctx context.Context, collection string, filter Filter, fields Projection, options *ReadOptions) ( + *ExplainResponse, error) search(ctx context.Context, collection string, req *SearchRequest) (SearchResultIterator, error) updateWithOptions(ctx context.Context, collection string, filter Filter, fields Update, options *UpdateOptions) ( *UpdateResponse, error) diff --git a/driver/types.go b/driver/types.go index d636dc6..85e934d 100644 --- a/driver/types.go +++ b/driver/types.go @@ -96,6 +96,7 @@ type ( ReplaceResponse api.ReplaceResponse UpdateResponse api.UpdateResponse DeleteResponse api.DeleteResponse + ExplainResponse api.ExplainResponse ) type ( diff --git a/mock/api/grpc.go b/mock/api/grpc.go index 86157f9..588de85 100644 --- a/mock/api/grpc.go +++ b/mock/api/grpc.go @@ -50,6 +50,21 @@ func (mr *MockTigrisServerMockRecorder) BeginTransaction(arg0, arg1 interface{}) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeginTransaction", reflect.TypeOf((*MockTigrisServer)(nil).BeginTransaction), arg0, arg1) } +// BuildCollectionIndex mocks base method. +func (m *MockTigrisServer) BuildCollectionIndex(arg0 context.Context, arg1 *api.BuildCollectionIndexRequest) (*api.BuildCollectionIndexResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BuildCollectionIndex", arg0, arg1) + ret0, _ := ret[0].(*api.BuildCollectionIndexResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BuildCollectionIndex indicates an expected call of BuildCollectionIndex. +func (mr *MockTigrisServerMockRecorder) BuildCollectionIndex(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuildCollectionIndex", reflect.TypeOf((*MockTigrisServer)(nil).BuildCollectionIndex), arg0, arg1) +} + // CommitTransaction mocks base method. func (m *MockTigrisServer) CommitTransaction(arg0 context.Context, arg1 *api.CommitTransactionRequest) (*api.CommitTransactionResponse, error) { m.ctrl.T.Helper() @@ -461,6 +476,36 @@ func (m *MockAuthServer) EXPECT() *MockAuthServerMockRecorder { return m.recorder } +// CreateInvitations mocks base method. +func (m *MockAuthServer) CreateInvitations(arg0 context.Context, arg1 *api.CreateInvitationsRequest) (*api.CreateInvitationsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateInvitations", arg0, arg1) + ret0, _ := ret[0].(*api.CreateInvitationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateInvitations indicates an expected call of CreateInvitations. +func (mr *MockAuthServerMockRecorder) CreateInvitations(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateInvitations", reflect.TypeOf((*MockAuthServer)(nil).CreateInvitations), arg0, arg1) +} + +// DeleteInvitations mocks base method. +func (m *MockAuthServer) DeleteInvitations(arg0 context.Context, arg1 *api.DeleteInvitationsRequest) (*api.DeleteInvitationsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteInvitations", arg0, arg1) + ret0, _ := ret[0].(*api.DeleteInvitationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteInvitations indicates an expected call of DeleteInvitations. +func (mr *MockAuthServerMockRecorder) DeleteInvitations(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteInvitations", reflect.TypeOf((*MockAuthServer)(nil).DeleteInvitations), arg0, arg1) +} + // GetAccessToken mocks base method. func (m *MockAuthServer) GetAccessToken(arg0 context.Context, arg1 *api.GetAccessTokenRequest) (*api.GetAccessTokenResponse, error) { m.ctrl.T.Helper() @@ -476,6 +521,36 @@ func (mr *MockAuthServerMockRecorder) GetAccessToken(arg0, arg1 interface{}) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccessToken", reflect.TypeOf((*MockAuthServer)(nil).GetAccessToken), arg0, arg1) } +// ListInvitations mocks base method. +func (m *MockAuthServer) ListInvitations(arg0 context.Context, arg1 *api.ListInvitationsRequest) (*api.ListInvitationsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ListInvitations", arg0, arg1) + ret0, _ := ret[0].(*api.ListInvitationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListInvitations indicates an expected call of ListInvitations. +func (mr *MockAuthServerMockRecorder) ListInvitations(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListInvitations", reflect.TypeOf((*MockAuthServer)(nil).ListInvitations), arg0, arg1) +} + +// VerifyInvitation mocks base method. +func (m *MockAuthServer) VerifyInvitation(arg0 context.Context, arg1 *api.VerifyInvitationRequest) (*api.VerifyInvitationResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "VerifyInvitation", arg0, arg1) + ret0, _ := ret[0].(*api.VerifyInvitationResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// VerifyInvitation indicates an expected call of VerifyInvitation. +func (mr *MockAuthServerMockRecorder) VerifyInvitation(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyInvitation", reflect.TypeOf((*MockAuthServer)(nil).VerifyInvitation), arg0, arg1) +} + // MockManagementServer is a mock of ManagementServer interface. type MockManagementServer struct { ctrl *gomock.Controller diff --git a/mock/driver.go b/mock/driver.go index 9cd9b49..e94e53b 100644 --- a/mock/driver.go +++ b/mock/driver.go @@ -441,6 +441,26 @@ func (mr *MockTxMockRecorder) DropCollection(arg0, arg1 interface{}, arg2 ...int return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DropCollection", reflect.TypeOf((*MockTx)(nil).DropCollection), varargs...) } +// Explain mocks base method. +func (m *MockTx) Explain(arg0 context.Context, arg1 string, arg2 driver.Filter, arg3 driver.Projection, arg4 ...*driver.ReadOptions) (*driver.ExplainResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1, arg2, arg3} + for _, a := range arg4 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Explain", varargs...) + ret0, _ := ret[0].(*driver.ExplainResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Explain indicates an expected call of Explain. +func (mr *MockTxMockRecorder) Explain(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Explain", reflect.TypeOf((*MockTx)(nil).Explain), varargs...) +} + // Insert mocks base method. func (m *MockTx) Insert(arg0 context.Context, arg1 string, arg2 []driver.Document, arg3 ...*driver.InsertOptions) (*driver.InsertResponse, error) { m.ctrl.T.Helper() @@ -740,6 +760,26 @@ func (mr *MockDatabaseMockRecorder) DropCollection(arg0, arg1 interface{}, arg2 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DropCollection", reflect.TypeOf((*MockDatabase)(nil).DropCollection), varargs...) } +// Explain mocks base method. +func (m *MockDatabase) Explain(arg0 context.Context, arg1 string, arg2 driver.Filter, arg3 driver.Projection, arg4 ...*driver.ReadOptions) (*driver.ExplainResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1, arg2, arg3} + for _, a := range arg4 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Explain", varargs...) + ret0, _ := ret[0].(*driver.ExplainResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Explain indicates an expected call of Explain. +func (mr *MockDatabaseMockRecorder) Explain(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Explain", reflect.TypeOf((*MockDatabase)(nil).Explain), varargs...) +} + // Insert mocks base method. func (m *MockDatabase) Insert(arg0 context.Context, arg1 string, arg2 []driver.Document, arg3 ...*driver.InsertOptions) (*driver.InsertResponse, error) { m.ctrl.T.Helper() diff --git a/tigris/collection.go b/tigris/collection.go index 29188a6..caf2e8a 100644 --- a/tigris/collection.go +++ b/tigris/collection.go @@ -193,6 +193,22 @@ func (c *Collection[T]) Read(ctx context.Context, filter filter.Filter, fields . return &Iterator[T]{Iterator: it}, nil } +// Read returns documents which satisfies the filter. +// Only field from the give fields are populated in the documents. By default, all fields are populated. +func (c *Collection[T]) Explain(ctx context.Context, filter filter.Filter, fields ...*fields.Read) (*driver.ExplainResponse, error) { + p, err := getFields(fields...) + if err != nil { + return nil, err + } + + f, err := filter.Build() + if err != nil { + return nil, err + } + + return getDB(ctx, c.db).Explain(ctx, c.name, f, p) +} + // ReadWithOptions returns specific fields of the documents according to the filter. // It allows further configure returned documents by providing options: // diff --git a/tigris/collection_test.go b/tigris/collection_test.go index ec22770..07fea55 100644 --- a/tigris/collection_test.go +++ b/tigris/collection_test.go @@ -240,6 +240,11 @@ func TestCollectionBasic(t *testing.T) { require.NoError(t, err) require.Equal(t, d1, pd) + mdb.EXPECT().Explain(ctx, "coll_1", driver.Filter(`{"Key1":{"$eq":"aaa"}}`), driver.Projection(nil)).Return(&driver.ExplainResponse{}, nil) + explain, err := c.Explain(ctx, filter.Eq("Key1", "aaa")) + require.NoError(t, err) + require.Equal(t, &driver.ExplainResponse{}, explain) + mdb.EXPECT().DropCollection(ctx, "coll_1") err = c.Drop(ctx)