From 251246c42987e8b8de114e6c870533962eecae41 Mon Sep 17 00:00:00 2001 From: Andrey Vasnetsov Date: Mon, 1 Jul 2024 21:59:38 +0200 Subject: [PATCH] upd to v1.10.0 (#45) --- proto/collections.proto | 39 +- proto/points.proto | 130 +- proto/points_service.proto | 8 + qdrant/collections.pb.go | 2858 ++++---- qdrant/collections_service.pb.go | 2 +- qdrant/collections_service_grpc.pb.go | 2 +- qdrant/json_with_int.pb.go | 2 +- qdrant/points.pb.go | 8638 +++++++++++++++---------- qdrant/points_service.pb.go | 96 +- qdrant/points_service_grpc.pb.go | 78 +- qdrant/qdrant.pb.go | 2 +- qdrant/qdrant_grpc.pb.go | 2 +- qdrant/snapshots_service.pb.go | 2 +- qdrant/snapshots_service_grpc.pb.go | 2 +- 14 files changed, 7138 insertions(+), 4723 deletions(-) diff --git a/proto/collections.proto b/proto/collections.proto index f3242fb..c959760 100644 --- a/proto/collections.proto +++ b/proto/collections.proto @@ -5,6 +5,7 @@ enum Datatype { Default = 0; Float32 = 1; Uint8 = 2; + Float16 = 3; } message VectorParams { @@ -14,6 +15,7 @@ message VectorParams { optional QuantizationConfig quantization_config = 4; // Configuration of vector quantization config. If omitted - the collection configuration will be used optional bool on_disk = 5; // If true - serve vectors from disk. If set to false, the vectors will be loaded in RAM. optional Datatype datatype = 6; // Data type of the vectors + optional MultiVectorConfig multivector_config = 7; // Configuration for multi-vector search } message VectorParamsDiff { @@ -44,14 +46,29 @@ message VectorsConfigDiff { } } +enum Modifier { + None = 0; + Idf = 1; // Apply Inverse Document Frequency +} + message SparseVectorParams { optional SparseIndexConfig index = 1; // Configuration of sparse index + optional Modifier modifier = 2; // If set - apply modifier to the vector values } message SparseVectorConfig { map map = 1; } +enum MultiVectorComparator { + MaxSim = 0; +} + +message MultiVectorConfig { + MultiVectorComparator comparator = 1; // Comparator for multi-vector search +} + + message GetCollectionInfoRequest { string collection_name = 1; // Name of the collection } @@ -174,6 +191,10 @@ message SparseIndexConfig { Store inverted index on disk. If set to false, the index will be stored in RAM. */ optional bool on_disk = 2; + /* + Datatype used to store weights in the index. + */ + optional Datatype datatype = 3; } message WalConfigDiff { @@ -457,6 +478,7 @@ enum ReplicaState { Listener = 4; // A shard which receives data, but is not used for search; Useful for backup shards PartialSnapshot = 5; // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard Recovery = 6; // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true + Resharding = 7; // Points are being migrated to this shard as part of resharding } message ShardKey { @@ -482,13 +504,14 @@ message RemoteShardInfo { message ShardTransferInfo { uint32 shard_id = 1; // Local shard id + optional uint32 to_shard_id = 5; uint64 from = 2; uint64 to = 3; bool sync = 4; // If `true` transfer is a synchronization of a replicas; If `false` transfer is a moving of a shard from one peer to another } message CollectionClusterInfoResponse { - uint64 peer_id = 1; // ID of this peer + uint64 peer_id = 1; // ID of this peer uint64 shard_count = 2; // Total number of shards repeated LocalShardInfo local_shards = 3; // Local shards repeated RemoteShardInfo remote_shards = 4; // Remote shards @@ -497,6 +520,15 @@ message CollectionClusterInfoResponse { message MoveShard { uint32 shard_id = 1; // Local shard id + optional uint32 to_shard_id = 5; + uint64 from_peer_id = 2; + uint64 to_peer_id = 3; + optional ShardTransferMethod method = 4; +} + +message ReplicateShard { + uint32 shard_id = 1; // Local shard id + optional uint32 to_shard_id = 5; uint64 from_peer_id = 2; uint64 to_peer_id = 3; optional ShardTransferMethod method = 4; @@ -504,12 +536,14 @@ message MoveShard { message AbortShardTransfer { uint32 shard_id = 1; // Local shard id + optional uint32 to_shard_id = 4; uint64 from_peer_id = 2; uint64 to_peer_id = 3; } message RestartTransfer { uint32 shard_id = 1; // Local shard id + optional uint32 to_shard_id = 5; uint64 from_peer_id = 2; uint64 to_peer_id = 3; ShardTransferMethod method = 4; @@ -519,6 +553,7 @@ enum ShardTransferMethod { StreamRecords = 0; // Stream shard records in batches Snapshot = 1; // Snapshot the shard and recover it on the target peer WalDelta = 2; // Resolve WAL delta between peers and transfer the difference + ReshardingStreamRecords = 3; // Stream shard records in batches for resharding } message Replica { @@ -541,7 +576,7 @@ message UpdateCollectionClusterSetupRequest { string collection_name = 1; // Name of the collection oneof operation { MoveShard move_shard = 2; - MoveShard replicate_shard = 3; + ReplicateShard replicate_shard = 3; AbortShardTransfer abort_transfer = 4; Replica drop_replica = 5; CreateShardKey create_shard_key = 7; diff --git a/proto/points.proto b/proto/points.proto index 657336e..f82bf33 100644 --- a/proto/points.proto +++ b/proto/points.proto @@ -45,14 +45,40 @@ message SparseIndices { repeated uint32 data = 1; } +// Legacy vector format, which determines the vector type by the configuration of its fields. message Vector { + repeated float data = 1; // Vector data (flatten for multi vectors) + optional SparseIndices indices = 2; // Sparse indices for sparse vectors + optional uint32 vectors_count = 3; // Number of vectors per multi vector +} + +message DenseVector { repeated float data = 1; - optional SparseIndices indices = 2; +} + +message SparseVector { + repeated float values = 1; + repeated uint32 indices = 2; +} + +message MultiDenseVector { + repeated DenseVector vectors = 1; +} + +// Vector type to be used in queries. Ids will be substituted with their corresponding vectors from the collection. +message VectorInput { + oneof variant { + PointId id = 1; + DenseVector dense = 2; + SparseVector sparse = 3; + MultiDenseVector multi_dense = 4; + } } // --------------------------------------------- // ----------------- ShardKeySelector ---------- // --------------------------------------------- + message ShardKeySelector { repeated ShardKey shard_keys = 1; // List of shard keys which should be used in the request } @@ -334,7 +360,7 @@ message ScrollPoints { optional OrderBy order_by = 10; // Order the records by a payload field } -// How to use positive and negative vectors to find the results, default is `AverageVector`: +// How to use positive and negative vectors to find the results, default is `AverageVector`. enum RecommendStrategy { // Average positive and negative vectors and create a single query with the formula // `query = avg_pos + avg_pos - avg_neg`. Then performs normal search. @@ -449,13 +475,84 @@ message DiscoverBatchPoints { } message CountPoints { - string collection_name = 1; // name of the collection + string collection_name = 1; // Name of the collection Filter filter = 2; // Filter conditions - return only those points that satisfy the specified conditions optional bool exact = 3; // If `true` - return exact count, if `false` - return approximate count optional ReadConsistency read_consistency = 4; // Options for specifying read consistency guarantees optional ShardKeySelector shard_key_selector = 5; // Specify in which shards to look for the points, if not specified - look in all shards } +message RecommendInput { + repeated VectorInput positive = 1; // Look for vectors closest to the vectors from these points + repeated VectorInput negative = 2; // Try to avoid vectors like the vector from these points + optional RecommendStrategy strategy = 3; // How to use the provided vectors to find the results +} + +message ContextInputPair { + VectorInput positive = 1; // A positive vector + VectorInput negative = 2; // Repel from this vector +} + +message DiscoverInput { + VectorInput target = 1; // Use this as the primary search objective + ContextInput context = 2; // Search space will be constrained by these pairs of vectors +} + +message ContextInput { + repeated ContextInputPair pairs = 1; // Search space will be constrained by these pairs of vectors +} + +enum Fusion { + RRF = 0; // Reciprocal Rank Fusion +} + +message Query { + oneof variant { + VectorInput nearest = 1; // Find the nearest neighbors to this vector. + RecommendInput recommend = 2; // Use multiple positive and negative vectors to find the results. + DiscoverInput discover = 3; // Search for nearest points, but constrain the search space with context + ContextInput context = 4; // Return points that live in positive areas. + OrderBy order_by = 5; // Order the points by a payload field. + Fusion fusion = 6; // Fuse the results of multiple prefetches. + } +} + +message PrefetchQuery { + repeated PrefetchQuery prefetch = 1; // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + optional Query query = 2; // Query to perform. If missing, returns points ordered by their IDs. + optional string using = 3; // Define which vector to use for querying. If missing, the default vector is is used. + optional Filter filter = 4; // Filter conditions - return only those points that satisfy the specified conditions. + optional SearchParams params = 5; // Search params for when there is no prefetch. + optional float score_threshold = 6; // Return points with scores better than this threshold. + optional uint64 limit = 7; // Max number of points. Default is 10 + optional LookupLocation lookup_from = 8; // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector +} + +message QueryPoints { + string collection_name = 1; // Name of the collection + repeated PrefetchQuery prefetch = 2; // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + optional Query query = 3; // Query to perform. If missing, returns points ordered by their IDs. + optional string using = 4; // Define which vector to use for querying. If missing, the default vector is used. + optional Filter filter = 5; // Filter conditions - return only those points that satisfy the specified conditions. + optional SearchParams params = 6; // Search params for when there is no prefetch. + optional float score_threshold = 7; // Return points with scores better than this threshold. + optional uint64 limit = 8; // Max number of points. Default is 10. + optional uint64 offset = 9; // Offset of the result. Skip this many points. Default is 0. + optional WithVectorsSelector with_vectors = 10; // Options for specifying which vectors to include into the response. + optional WithPayloadSelector with_payload = 11; // Options for specifying which payload to include or not. + optional ReadConsistency read_consistency = 12; // Options for specifying read consistency guarantees. + optional ShardKeySelector shard_key_selector = 13; // Specify in which shards to look for the points, if not specified - look in all shards. + optional LookupLocation lookup_from = 14; // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector + optional uint64 timeout = 15; // If set, overrides global timeout setting for this request. Unit is seconds. +} + +message QueryBatchPoints { + string collection_name = 1; + repeated QueryPoints query_points = 2; + optional ReadConsistency read_consistency = 3; // Options for specifying read consistency guarantees + optional uint64 timeout = 4; // If set, overrides global timeout setting for this request. Unit is seconds. +} + message PointsUpdateOperation { message PointStructList { repeated PointStruct points = 1; @@ -467,6 +564,12 @@ message PointsUpdateOperation { optional ShardKeySelector shard_key_selector = 3; // Option for custom sharding to specify used shard keys optional string key = 4; // Option for indicate property of payload } + message OverwritePayload { + map payload = 1; + optional PointsSelector points_selector = 2; // Affected points + optional ShardKeySelector shard_key_selector = 3; // Option for custom sharding to specify used shard keys + optional string key = 4; // Option for indicate property of payload + } message DeletePayload { repeated string keys = 1; optional PointsSelector points_selector = 2; // Affected points @@ -494,7 +597,7 @@ message PointsUpdateOperation { PointStructList upsert = 1; PointsSelector delete_deprecated = 2 [deprecated=true]; SetPayload set_payload = 3; - SetPayload overwrite_payload = 4; + OverwritePayload overwrite_payload = 4; DeletePayload delete_payload = 5; PointsSelector clear_payload_deprecated = 6 [deprecated=true]; UpdateVectors update_vectors = 7; @@ -532,6 +635,13 @@ enum UpdateStatus { ClockRejected = 3; // Internal: update is rejected due to an outdated clock } +message OrderValue { + oneof variant { + int64 int = 1; + double float = 2; + } +} + message ScoredPoint { PointId id = 1; // Point id map payload = 2; // Payload @@ -540,6 +650,7 @@ message ScoredPoint { uint64 version = 5; // Last update operation applied to this point optional Vectors vectors = 6; // Vectors to search optional ShardKey shard_key = 7; // Shard key + optional OrderValue order_value = 8; // Order by value } message GroupId { @@ -568,6 +679,16 @@ message SearchResponse { double time = 2; // Time spent to process } +message QueryResponse { + repeated ScoredPoint result = 1; + double time = 2; // Time spent to process +} + +message QueryBatchResponse { + repeated BatchResult result = 1; + double time = 2; // Time spent to process +} + message BatchResult { repeated ScoredPoint result = 1; } @@ -603,6 +724,7 @@ message RetrievedPoint { reserved 3; // deprecated "vector" field optional Vectors vectors = 4; optional ShardKey shard_key = 5; // Shard key + optional OrderValue order_value = 6; // Order-by value } message GetResponse { diff --git a/proto/points_service.proto b/proto/points_service.proto index 4e49670..7a8aaf8 100644 --- a/proto/points_service.proto +++ b/proto/points_service.proto @@ -108,4 +108,12 @@ service Points { Perform multiple update operations in one request */ rpc UpdateBatch (UpdateBatchPoints) returns (UpdateBatchResponse) {} + /* + Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + */ + rpc Query (QueryPoints) returns (QueryResponse) {} + /* + Universally query points in a batch fashion. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + */ + rpc QueryBatch (QueryBatchPoints) returns (QueryBatchResponse) {} } diff --git a/qdrant/collections.pb.go b/qdrant/collections.pb.go index 79f7c5e..defe357 100644 --- a/qdrant/collections.pb.go +++ b/qdrant/collections.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: collections.proto package go_client @@ -26,6 +26,7 @@ const ( Datatype_Default Datatype = 0 Datatype_Float32 Datatype = 1 Datatype_Uint8 Datatype = 2 + Datatype_Float16 Datatype = 3 ) // Enum value maps for Datatype. @@ -34,11 +35,13 @@ var ( 0: "Default", 1: "Float32", 2: "Uint8", + 3: "Float16", } Datatype_value = map[string]int32{ "Default": 0, "Float32": 1, "Uint8": 2, + "Float16": 3, } ) @@ -69,6 +72,95 @@ func (Datatype) EnumDescriptor() ([]byte, []int) { return file_collections_proto_rawDescGZIP(), []int{0} } +type Modifier int32 + +const ( + Modifier_None Modifier = 0 + Modifier_Idf Modifier = 1 // Apply Inverse Document Frequency +) + +// Enum value maps for Modifier. +var ( + Modifier_name = map[int32]string{ + 0: "None", + 1: "Idf", + } + Modifier_value = map[string]int32{ + "None": 0, + "Idf": 1, + } +) + +func (x Modifier) Enum() *Modifier { + p := new(Modifier) + *p = x + return p +} + +func (x Modifier) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Modifier) Descriptor() protoreflect.EnumDescriptor { + return file_collections_proto_enumTypes[1].Descriptor() +} + +func (Modifier) Type() protoreflect.EnumType { + return &file_collections_proto_enumTypes[1] +} + +func (x Modifier) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Modifier.Descriptor instead. +func (Modifier) EnumDescriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{1} +} + +type MultiVectorComparator int32 + +const ( + MultiVectorComparator_MaxSim MultiVectorComparator = 0 +) + +// Enum value maps for MultiVectorComparator. +var ( + MultiVectorComparator_name = map[int32]string{ + 0: "MaxSim", + } + MultiVectorComparator_value = map[string]int32{ + "MaxSim": 0, + } +) + +func (x MultiVectorComparator) Enum() *MultiVectorComparator { + p := new(MultiVectorComparator) + *p = x + return p +} + +func (x MultiVectorComparator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MultiVectorComparator) Descriptor() protoreflect.EnumDescriptor { + return file_collections_proto_enumTypes[2].Descriptor() +} + +func (MultiVectorComparator) Type() protoreflect.EnumType { + return &file_collections_proto_enumTypes[2] +} + +func (x MultiVectorComparator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MultiVectorComparator.Descriptor instead. +func (MultiVectorComparator) EnumDescriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{2} +} + type Distance int32 const ( @@ -108,11 +200,11 @@ func (x Distance) String() string { } func (Distance) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[1].Descriptor() + return file_collections_proto_enumTypes[3].Descriptor() } func (Distance) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[1] + return &file_collections_proto_enumTypes[3] } func (x Distance) Number() protoreflect.EnumNumber { @@ -121,7 +213,7 @@ func (x Distance) Number() protoreflect.EnumNumber { // Deprecated: Use Distance.Descriptor instead. func (Distance) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{1} + return file_collections_proto_rawDescGZIP(), []int{3} } type CollectionStatus int32 @@ -163,11 +255,11 @@ func (x CollectionStatus) String() string { } func (CollectionStatus) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[2].Descriptor() + return file_collections_proto_enumTypes[4].Descriptor() } func (CollectionStatus) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[2] + return &file_collections_proto_enumTypes[4] } func (x CollectionStatus) Number() protoreflect.EnumNumber { @@ -176,7 +268,7 @@ func (x CollectionStatus) Number() protoreflect.EnumNumber { // Deprecated: Use CollectionStatus.Descriptor instead. func (CollectionStatus) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{2} + return file_collections_proto_rawDescGZIP(), []int{4} } type PayloadSchemaType int32 @@ -227,11 +319,11 @@ func (x PayloadSchemaType) String() string { } func (PayloadSchemaType) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[3].Descriptor() + return file_collections_proto_enumTypes[5].Descriptor() } func (PayloadSchemaType) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[3] + return &file_collections_proto_enumTypes[5] } func (x PayloadSchemaType) Number() protoreflect.EnumNumber { @@ -240,7 +332,7 @@ func (x PayloadSchemaType) Number() protoreflect.EnumNumber { // Deprecated: Use PayloadSchemaType.Descriptor instead. func (PayloadSchemaType) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{3} + return file_collections_proto_rawDescGZIP(), []int{5} } type QuantizationType int32 @@ -273,11 +365,11 @@ func (x QuantizationType) String() string { } func (QuantizationType) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[4].Descriptor() + return file_collections_proto_enumTypes[6].Descriptor() } func (QuantizationType) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[4] + return &file_collections_proto_enumTypes[6] } func (x QuantizationType) Number() protoreflect.EnumNumber { @@ -286,7 +378,7 @@ func (x QuantizationType) Number() protoreflect.EnumNumber { // Deprecated: Use QuantizationType.Descriptor instead. func (QuantizationType) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{4} + return file_collections_proto_rawDescGZIP(), []int{6} } type CompressionRatio int32 @@ -328,11 +420,11 @@ func (x CompressionRatio) String() string { } func (CompressionRatio) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[5].Descriptor() + return file_collections_proto_enumTypes[7].Descriptor() } func (CompressionRatio) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[5] + return &file_collections_proto_enumTypes[7] } func (x CompressionRatio) Number() protoreflect.EnumNumber { @@ -341,7 +433,7 @@ func (x CompressionRatio) Number() protoreflect.EnumNumber { // Deprecated: Use CompressionRatio.Descriptor instead. func (CompressionRatio) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{5} + return file_collections_proto_rawDescGZIP(), []int{7} } type ShardingMethod int32 @@ -374,11 +466,11 @@ func (x ShardingMethod) String() string { } func (ShardingMethod) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[6].Descriptor() + return file_collections_proto_enumTypes[8].Descriptor() } func (ShardingMethod) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[6] + return &file_collections_proto_enumTypes[8] } func (x ShardingMethod) Number() protoreflect.EnumNumber { @@ -387,7 +479,7 @@ func (x ShardingMethod) Number() protoreflect.EnumNumber { // Deprecated: Use ShardingMethod.Descriptor instead. func (ShardingMethod) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{6} + return file_collections_proto_rawDescGZIP(), []int{8} } type TokenizerType int32 @@ -429,11 +521,11 @@ func (x TokenizerType) String() string { } func (TokenizerType) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[7].Descriptor() + return file_collections_proto_enumTypes[9].Descriptor() } func (TokenizerType) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[7] + return &file_collections_proto_enumTypes[9] } func (x TokenizerType) Number() protoreflect.EnumNumber { @@ -442,7 +534,7 @@ func (x TokenizerType) Number() protoreflect.EnumNumber { // Deprecated: Use TokenizerType.Descriptor instead. func (TokenizerType) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{7} + return file_collections_proto_rawDescGZIP(), []int{9} } type ReplicaState int32 @@ -455,6 +547,7 @@ const ( ReplicaState_Listener ReplicaState = 4 // A shard which receives data, but is not used for search; Useful for backup shards ReplicaState_PartialSnapshot ReplicaState = 5 // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard ReplicaState_Recovery ReplicaState = 6 // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true + ReplicaState_Resharding ReplicaState = 7 // Points are being migrated to this shard as part of resharding ) // Enum value maps for ReplicaState. @@ -467,6 +560,7 @@ var ( 4: "Listener", 5: "PartialSnapshot", 6: "Recovery", + 7: "Resharding", } ReplicaState_value = map[string]int32{ "Active": 0, @@ -476,6 +570,7 @@ var ( "Listener": 4, "PartialSnapshot": 5, "Recovery": 6, + "Resharding": 7, } ) @@ -490,11 +585,11 @@ func (x ReplicaState) String() string { } func (ReplicaState) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[8].Descriptor() + return file_collections_proto_enumTypes[10].Descriptor() } func (ReplicaState) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[8] + return &file_collections_proto_enumTypes[10] } func (x ReplicaState) Number() protoreflect.EnumNumber { @@ -503,15 +598,16 @@ func (x ReplicaState) Number() protoreflect.EnumNumber { // Deprecated: Use ReplicaState.Descriptor instead. func (ReplicaState) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{8} + return file_collections_proto_rawDescGZIP(), []int{10} } type ShardTransferMethod int32 const ( - ShardTransferMethod_StreamRecords ShardTransferMethod = 0 // Stream shard records in batches - ShardTransferMethod_Snapshot ShardTransferMethod = 1 // Snapshot the shard and recover it on the target peer - ShardTransferMethod_WalDelta ShardTransferMethod = 2 // Resolve WAL delta between peers and transfer the difference + ShardTransferMethod_StreamRecords ShardTransferMethod = 0 // Stream shard records in batches + ShardTransferMethod_Snapshot ShardTransferMethod = 1 // Snapshot the shard and recover it on the target peer + ShardTransferMethod_WalDelta ShardTransferMethod = 2 // Resolve WAL delta between peers and transfer the difference + ShardTransferMethod_ReshardingStreamRecords ShardTransferMethod = 3 // Stream shard records in batches for resharding ) // Enum value maps for ShardTransferMethod. @@ -520,11 +616,13 @@ var ( 0: "StreamRecords", 1: "Snapshot", 2: "WalDelta", + 3: "ReshardingStreamRecords", } ShardTransferMethod_value = map[string]int32{ - "StreamRecords": 0, - "Snapshot": 1, - "WalDelta": 2, + "StreamRecords": 0, + "Snapshot": 1, + "WalDelta": 2, + "ReshardingStreamRecords": 3, } ) @@ -539,11 +637,11 @@ func (x ShardTransferMethod) String() string { } func (ShardTransferMethod) Descriptor() protoreflect.EnumDescriptor { - return file_collections_proto_enumTypes[9].Descriptor() + return file_collections_proto_enumTypes[11].Descriptor() } func (ShardTransferMethod) Type() protoreflect.EnumType { - return &file_collections_proto_enumTypes[9] + return &file_collections_proto_enumTypes[11] } func (x ShardTransferMethod) Number() protoreflect.EnumNumber { @@ -552,7 +650,7 @@ func (x ShardTransferMethod) Number() protoreflect.EnumNumber { // Deprecated: Use ShardTransferMethod.Descriptor instead. func (ShardTransferMethod) EnumDescriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{9} + return file_collections_proto_rawDescGZIP(), []int{11} } type VectorParams struct { @@ -566,6 +664,7 @@ type VectorParams struct { QuantizationConfig *QuantizationConfig `protobuf:"bytes,4,opt,name=quantization_config,json=quantizationConfig,proto3,oneof" json:"quantization_config,omitempty"` // Configuration of vector quantization config. If omitted - the collection configuration will be used OnDisk *bool `protobuf:"varint,5,opt,name=on_disk,json=onDisk,proto3,oneof" json:"on_disk,omitempty"` // If true - serve vectors from disk. If set to false, the vectors will be loaded in RAM. Datatype *Datatype `protobuf:"varint,6,opt,name=datatype,proto3,enum=qdrant.Datatype,oneof" json:"datatype,omitempty"` // Data type of the vectors + MultivectorConfig *MultiVectorConfig `protobuf:"bytes,7,opt,name=multivector_config,json=multivectorConfig,proto3,oneof" json:"multivector_config,omitempty"` // Configuration for multi-vector search } func (x *VectorParams) Reset() { @@ -642,6 +741,13 @@ func (x *VectorParams) GetDatatype() Datatype { return Datatype_Default } +func (x *VectorParams) GetMultivectorConfig() *MultiVectorConfig { + if x != nil { + return x.MultivectorConfig + } + return nil +} + type VectorParamsDiff struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -966,7 +1072,8 @@ type SparseVectorParams struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Index *SparseIndexConfig `protobuf:"bytes,1,opt,name=index,proto3,oneof" json:"index,omitempty"` // Configuration of sparse index + Index *SparseIndexConfig `protobuf:"bytes,1,opt,name=index,proto3,oneof" json:"index,omitempty"` // Configuration of sparse index + Modifier *Modifier `protobuf:"varint,2,opt,name=modifier,proto3,enum=qdrant.Modifier,oneof" json:"modifier,omitempty"` // If set - apply modifier to the vector values } func (x *SparseVectorParams) Reset() { @@ -1008,6 +1115,13 @@ func (x *SparseVectorParams) GetIndex() *SparseIndexConfig { return nil } +func (x *SparseVectorParams) GetModifier() Modifier { + if x != nil && x.Modifier != nil { + return *x.Modifier + } + return Modifier_None +} + type SparseVectorConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1055,6 +1169,53 @@ func (x *SparseVectorConfig) GetMap() map[string]*SparseVectorParams { return nil } +type MultiVectorConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Comparator MultiVectorComparator `protobuf:"varint,1,opt,name=comparator,proto3,enum=qdrant.MultiVectorComparator" json:"comparator,omitempty"` // Comparator for multi-vector search +} + +func (x *MultiVectorConfig) Reset() { + *x = MultiVectorConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_collections_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiVectorConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiVectorConfig) ProtoMessage() {} + +func (x *MultiVectorConfig) ProtoReflect() protoreflect.Message { + mi := &file_collections_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 MultiVectorConfig.ProtoReflect.Descriptor instead. +func (*MultiVectorConfig) Descriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{8} +} + +func (x *MultiVectorConfig) GetComparator() MultiVectorComparator { + if x != nil { + return x.Comparator + } + return MultiVectorComparator_MaxSim +} + type GetCollectionInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1066,7 +1227,7 @@ type GetCollectionInfoRequest struct { func (x *GetCollectionInfoRequest) Reset() { *x = GetCollectionInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[8] + mi := &file_collections_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1079,7 +1240,7 @@ func (x *GetCollectionInfoRequest) String() string { func (*GetCollectionInfoRequest) ProtoMessage() {} func (x *GetCollectionInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[8] + mi := &file_collections_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1092,7 +1253,7 @@ func (x *GetCollectionInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCollectionInfoRequest.ProtoReflect.Descriptor instead. func (*GetCollectionInfoRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{8} + return file_collections_proto_rawDescGZIP(), []int{9} } func (x *GetCollectionInfoRequest) GetCollectionName() string { @@ -1113,7 +1274,7 @@ type CollectionExistsRequest struct { func (x *CollectionExistsRequest) Reset() { *x = CollectionExistsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[9] + mi := &file_collections_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1126,7 +1287,7 @@ func (x *CollectionExistsRequest) String() string { func (*CollectionExistsRequest) ProtoMessage() {} func (x *CollectionExistsRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[9] + mi := &file_collections_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1139,7 +1300,7 @@ func (x *CollectionExistsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionExistsRequest.ProtoReflect.Descriptor instead. func (*CollectionExistsRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{9} + return file_collections_proto_rawDescGZIP(), []int{10} } func (x *CollectionExistsRequest) GetCollectionName() string { @@ -1160,7 +1321,7 @@ type CollectionExists struct { func (x *CollectionExists) Reset() { *x = CollectionExists{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[10] + mi := &file_collections_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1173,7 +1334,7 @@ func (x *CollectionExists) String() string { func (*CollectionExists) ProtoMessage() {} func (x *CollectionExists) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[10] + mi := &file_collections_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1186,7 +1347,7 @@ func (x *CollectionExists) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionExists.ProtoReflect.Descriptor instead. func (*CollectionExists) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{10} + return file_collections_proto_rawDescGZIP(), []int{11} } func (x *CollectionExists) GetExists() bool { @@ -1208,7 +1369,7 @@ type CollectionExistsResponse struct { func (x *CollectionExistsResponse) Reset() { *x = CollectionExistsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[11] + mi := &file_collections_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1221,7 +1382,7 @@ func (x *CollectionExistsResponse) String() string { func (*CollectionExistsResponse) ProtoMessage() {} func (x *CollectionExistsResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[11] + mi := &file_collections_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1234,7 +1395,7 @@ func (x *CollectionExistsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionExistsResponse.ProtoReflect.Descriptor instead. func (*CollectionExistsResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{11} + return file_collections_proto_rawDescGZIP(), []int{12} } func (x *CollectionExistsResponse) GetResult() *CollectionExists { @@ -1260,7 +1421,7 @@ type ListCollectionsRequest struct { func (x *ListCollectionsRequest) Reset() { *x = ListCollectionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[12] + mi := &file_collections_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1273,7 +1434,7 @@ func (x *ListCollectionsRequest) String() string { func (*ListCollectionsRequest) ProtoMessage() {} func (x *ListCollectionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[12] + mi := &file_collections_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1286,7 +1447,7 @@ func (x *ListCollectionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCollectionsRequest.ProtoReflect.Descriptor instead. func (*ListCollectionsRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{12} + return file_collections_proto_rawDescGZIP(), []int{13} } type CollectionDescription struct { @@ -1300,7 +1461,7 @@ type CollectionDescription struct { func (x *CollectionDescription) Reset() { *x = CollectionDescription{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[13] + mi := &file_collections_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1313,7 +1474,7 @@ func (x *CollectionDescription) String() string { func (*CollectionDescription) ProtoMessage() {} func (x *CollectionDescription) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[13] + mi := &file_collections_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1326,7 +1487,7 @@ func (x *CollectionDescription) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionDescription.ProtoReflect.Descriptor instead. func (*CollectionDescription) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{13} + return file_collections_proto_rawDescGZIP(), []int{14} } func (x *CollectionDescription) GetName() string { @@ -1348,7 +1509,7 @@ type GetCollectionInfoResponse struct { func (x *GetCollectionInfoResponse) Reset() { *x = GetCollectionInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[14] + mi := &file_collections_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1361,7 +1522,7 @@ func (x *GetCollectionInfoResponse) String() string { func (*GetCollectionInfoResponse) ProtoMessage() {} func (x *GetCollectionInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[14] + mi := &file_collections_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1374,7 +1535,7 @@ func (x *GetCollectionInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCollectionInfoResponse.ProtoReflect.Descriptor instead. func (*GetCollectionInfoResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{14} + return file_collections_proto_rawDescGZIP(), []int{15} } func (x *GetCollectionInfoResponse) GetResult() *CollectionInfo { @@ -1403,7 +1564,7 @@ type ListCollectionsResponse struct { func (x *ListCollectionsResponse) Reset() { *x = ListCollectionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[15] + mi := &file_collections_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1416,7 +1577,7 @@ func (x *ListCollectionsResponse) String() string { func (*ListCollectionsResponse) ProtoMessage() {} func (x *ListCollectionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[15] + mi := &file_collections_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1429,7 +1590,7 @@ func (x *ListCollectionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCollectionsResponse.ProtoReflect.Descriptor instead. func (*ListCollectionsResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{15} + return file_collections_proto_rawDescGZIP(), []int{16} } func (x *ListCollectionsResponse) GetCollections() []*CollectionDescription { @@ -1458,7 +1619,7 @@ type OptimizerStatus struct { func (x *OptimizerStatus) Reset() { *x = OptimizerStatus{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[16] + mi := &file_collections_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1471,7 +1632,7 @@ func (x *OptimizerStatus) String() string { func (*OptimizerStatus) ProtoMessage() {} func (x *OptimizerStatus) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[16] + mi := &file_collections_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1645,7 @@ func (x *OptimizerStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use OptimizerStatus.ProtoReflect.Descriptor instead. func (*OptimizerStatus) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{16} + return file_collections_proto_rawDescGZIP(), []int{17} } func (x *OptimizerStatus) GetOk() bool { @@ -1529,7 +1690,7 @@ type HnswConfigDiff struct { func (x *HnswConfigDiff) Reset() { *x = HnswConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[17] + mi := &file_collections_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1542,7 +1703,7 @@ func (x *HnswConfigDiff) String() string { func (*HnswConfigDiff) ProtoMessage() {} func (x *HnswConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[17] + mi := &file_collections_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1555,7 +1716,7 @@ func (x *HnswConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use HnswConfigDiff.ProtoReflect.Descriptor instead. func (*HnswConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{17} + return file_collections_proto_rawDescGZIP(), []int{18} } func (x *HnswConfigDiff) GetM() uint64 { @@ -1610,12 +1771,14 @@ type SparseIndexConfig struct { FullScanThreshold *uint64 `protobuf:"varint,1,opt,name=full_scan_threshold,json=fullScanThreshold,proto3,oneof" json:"full_scan_threshold,omitempty"` // Store inverted index on disk. If set to false, the index will be stored in RAM. OnDisk *bool `protobuf:"varint,2,opt,name=on_disk,json=onDisk,proto3,oneof" json:"on_disk,omitempty"` + // Datatype used to store weights in the index. + Datatype *Datatype `protobuf:"varint,3,opt,name=datatype,proto3,enum=qdrant.Datatype,oneof" json:"datatype,omitempty"` } func (x *SparseIndexConfig) Reset() { *x = SparseIndexConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[18] + mi := &file_collections_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1628,7 +1791,7 @@ func (x *SparseIndexConfig) String() string { func (*SparseIndexConfig) ProtoMessage() {} func (x *SparseIndexConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[18] + mi := &file_collections_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1641,7 +1804,7 @@ func (x *SparseIndexConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SparseIndexConfig.ProtoReflect.Descriptor instead. func (*SparseIndexConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{18} + return file_collections_proto_rawDescGZIP(), []int{19} } func (x *SparseIndexConfig) GetFullScanThreshold() uint64 { @@ -1658,6 +1821,13 @@ func (x *SparseIndexConfig) GetOnDisk() bool { return false } +func (x *SparseIndexConfig) GetDatatype() Datatype { + if x != nil && x.Datatype != nil { + return *x.Datatype + } + return Datatype_Default +} + type WalConfigDiff struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1670,7 +1840,7 @@ type WalConfigDiff struct { func (x *WalConfigDiff) Reset() { *x = WalConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[19] + mi := &file_collections_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1683,7 +1853,7 @@ func (x *WalConfigDiff) String() string { func (*WalConfigDiff) ProtoMessage() {} func (x *WalConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[19] + mi := &file_collections_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1696,7 +1866,7 @@ func (x *WalConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use WalConfigDiff.ProtoReflect.Descriptor instead. func (*WalConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{19} + return file_collections_proto_rawDescGZIP(), []int{20} } func (x *WalConfigDiff) GetWalCapacityMb() uint64 { @@ -1769,7 +1939,7 @@ type OptimizersConfigDiff struct { func (x *OptimizersConfigDiff) Reset() { *x = OptimizersConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[20] + mi := &file_collections_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1782,7 +1952,7 @@ func (x *OptimizersConfigDiff) String() string { func (*OptimizersConfigDiff) ProtoMessage() {} func (x *OptimizersConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[20] + mi := &file_collections_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1795,7 +1965,7 @@ func (x *OptimizersConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use OptimizersConfigDiff.ProtoReflect.Descriptor instead. func (*OptimizersConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{20} + return file_collections_proto_rawDescGZIP(), []int{21} } func (x *OptimizersConfigDiff) GetDeletedThreshold() float64 { @@ -1867,7 +2037,7 @@ type ScalarQuantization struct { func (x *ScalarQuantization) Reset() { *x = ScalarQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[21] + mi := &file_collections_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1880,7 +2050,7 @@ func (x *ScalarQuantization) String() string { func (*ScalarQuantization) ProtoMessage() {} func (x *ScalarQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[21] + mi := &file_collections_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1893,7 +2063,7 @@ func (x *ScalarQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use ScalarQuantization.ProtoReflect.Descriptor instead. func (*ScalarQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{21} + return file_collections_proto_rawDescGZIP(), []int{22} } func (x *ScalarQuantization) GetType() QuantizationType { @@ -1929,7 +2099,7 @@ type ProductQuantization struct { func (x *ProductQuantization) Reset() { *x = ProductQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[22] + mi := &file_collections_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1942,7 +2112,7 @@ func (x *ProductQuantization) String() string { func (*ProductQuantization) ProtoMessage() {} func (x *ProductQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[22] + mi := &file_collections_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1955,7 +2125,7 @@ func (x *ProductQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use ProductQuantization.ProtoReflect.Descriptor instead. func (*ProductQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{22} + return file_collections_proto_rawDescGZIP(), []int{23} } func (x *ProductQuantization) GetCompression() CompressionRatio { @@ -1983,7 +2153,7 @@ type BinaryQuantization struct { func (x *BinaryQuantization) Reset() { *x = BinaryQuantization{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[23] + mi := &file_collections_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1996,7 +2166,7 @@ func (x *BinaryQuantization) String() string { func (*BinaryQuantization) ProtoMessage() {} func (x *BinaryQuantization) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[23] + mi := &file_collections_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2009,7 +2179,7 @@ func (x *BinaryQuantization) ProtoReflect() protoreflect.Message { // Deprecated: Use BinaryQuantization.ProtoReflect.Descriptor instead. func (*BinaryQuantization) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{23} + return file_collections_proto_rawDescGZIP(), []int{24} } func (x *BinaryQuantization) GetAlwaysRam() bool { @@ -2035,7 +2205,7 @@ type QuantizationConfig struct { func (x *QuantizationConfig) Reset() { *x = QuantizationConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[24] + mi := &file_collections_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2048,7 +2218,7 @@ func (x *QuantizationConfig) String() string { func (*QuantizationConfig) ProtoMessage() {} func (x *QuantizationConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[24] + mi := &file_collections_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2061,7 +2231,7 @@ func (x *QuantizationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use QuantizationConfig.ProtoReflect.Descriptor instead. func (*QuantizationConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{24} + return file_collections_proto_rawDescGZIP(), []int{25} } func (m *QuantizationConfig) GetQuantization() isQuantizationConfig_Quantization { @@ -2123,7 +2293,7 @@ type Disabled struct { func (x *Disabled) Reset() { *x = Disabled{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[25] + mi := &file_collections_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2136,7 +2306,7 @@ func (x *Disabled) String() string { func (*Disabled) ProtoMessage() {} func (x *Disabled) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[25] + mi := &file_collections_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2149,7 +2319,7 @@ func (x *Disabled) ProtoReflect() protoreflect.Message { // Deprecated: Use Disabled.ProtoReflect.Descriptor instead. func (*Disabled) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{25} + return file_collections_proto_rawDescGZIP(), []int{26} } type QuantizationConfigDiff struct { @@ -2169,7 +2339,7 @@ type QuantizationConfigDiff struct { func (x *QuantizationConfigDiff) Reset() { *x = QuantizationConfigDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[26] + mi := &file_collections_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2182,7 +2352,7 @@ func (x *QuantizationConfigDiff) String() string { func (*QuantizationConfigDiff) ProtoMessage() {} func (x *QuantizationConfigDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[26] + mi := &file_collections_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2195,7 +2365,7 @@ func (x *QuantizationConfigDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use QuantizationConfigDiff.ProtoReflect.Descriptor instead. func (*QuantizationConfigDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{26} + return file_collections_proto_rawDescGZIP(), []int{27} } func (m *QuantizationConfigDiff) GetQuantization() isQuantizationConfigDiff_Quantization { @@ -2285,7 +2455,7 @@ type CreateCollection struct { func (x *CreateCollection) Reset() { *x = CreateCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[27] + mi := &file_collections_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2298,7 +2468,7 @@ func (x *CreateCollection) String() string { func (*CreateCollection) ProtoMessage() {} func (x *CreateCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[27] + mi := &file_collections_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2311,7 +2481,7 @@ func (x *CreateCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCollection.ProtoReflect.Descriptor instead. func (*CreateCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{27} + return file_collections_proto_rawDescGZIP(), []int{28} } func (x *CreateCollection) GetCollectionName() string { @@ -2430,7 +2600,7 @@ type UpdateCollection struct { func (x *UpdateCollection) Reset() { *x = UpdateCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[28] + mi := &file_collections_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2443,7 +2613,7 @@ func (x *UpdateCollection) String() string { func (*UpdateCollection) ProtoMessage() {} func (x *UpdateCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[28] + mi := &file_collections_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2456,7 +2626,7 @@ func (x *UpdateCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateCollection.ProtoReflect.Descriptor instead. func (*UpdateCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{28} + return file_collections_proto_rawDescGZIP(), []int{29} } func (x *UpdateCollection) GetCollectionName() string { @@ -2527,7 +2697,7 @@ type DeleteCollection struct { func (x *DeleteCollection) Reset() { *x = DeleteCollection{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[29] + mi := &file_collections_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2540,7 +2710,7 @@ func (x *DeleteCollection) String() string { func (*DeleteCollection) ProtoMessage() {} func (x *DeleteCollection) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[29] + mi := &file_collections_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2553,7 +2723,7 @@ func (x *DeleteCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCollection.ProtoReflect.Descriptor instead. func (*DeleteCollection) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{29} + return file_collections_proto_rawDescGZIP(), []int{30} } func (x *DeleteCollection) GetCollectionName() string { @@ -2582,7 +2752,7 @@ type CollectionOperationResponse struct { func (x *CollectionOperationResponse) Reset() { *x = CollectionOperationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[30] + mi := &file_collections_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2595,7 +2765,7 @@ func (x *CollectionOperationResponse) String() string { func (*CollectionOperationResponse) ProtoMessage() {} func (x *CollectionOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[30] + mi := &file_collections_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,7 +2778,7 @@ func (x *CollectionOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionOperationResponse.ProtoReflect.Descriptor instead. func (*CollectionOperationResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{30} + return file_collections_proto_rawDescGZIP(), []int{31} } func (x *CollectionOperationResponse) GetResult() bool { @@ -2643,7 +2813,7 @@ type CollectionParams struct { func (x *CollectionParams) Reset() { *x = CollectionParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[31] + mi := &file_collections_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2656,7 +2826,7 @@ func (x *CollectionParams) String() string { func (*CollectionParams) ProtoMessage() {} func (x *CollectionParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[31] + mi := &file_collections_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2669,7 +2839,7 @@ func (x *CollectionParams) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionParams.ProtoReflect.Descriptor instead. func (*CollectionParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{31} + return file_collections_proto_rawDescGZIP(), []int{32} } func (x *CollectionParams) GetShardNumber() uint32 { @@ -2742,7 +2912,7 @@ type CollectionParamsDiff struct { func (x *CollectionParamsDiff) Reset() { *x = CollectionParamsDiff{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[32] + mi := &file_collections_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2755,7 +2925,7 @@ func (x *CollectionParamsDiff) String() string { func (*CollectionParamsDiff) ProtoMessage() {} func (x *CollectionParamsDiff) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[32] + mi := &file_collections_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2768,7 +2938,7 @@ func (x *CollectionParamsDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionParamsDiff.ProtoReflect.Descriptor instead. func (*CollectionParamsDiff) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{32} + return file_collections_proto_rawDescGZIP(), []int{33} } func (x *CollectionParamsDiff) GetReplicationFactor() uint32 { @@ -2814,7 +2984,7 @@ type CollectionConfig struct { func (x *CollectionConfig) Reset() { *x = CollectionConfig{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[33] + mi := &file_collections_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +2997,7 @@ func (x *CollectionConfig) String() string { func (*CollectionConfig) ProtoMessage() {} func (x *CollectionConfig) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[33] + mi := &file_collections_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,7 +3010,7 @@ func (x *CollectionConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionConfig.ProtoReflect.Descriptor instead. func (*CollectionConfig) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{33} + return file_collections_proto_rawDescGZIP(), []int{34} } func (x *CollectionConfig) GetParams() *CollectionParams { @@ -2892,7 +3062,7 @@ type TextIndexParams struct { func (x *TextIndexParams) Reset() { *x = TextIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[34] + mi := &file_collections_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2905,7 +3075,7 @@ func (x *TextIndexParams) String() string { func (*TextIndexParams) ProtoMessage() {} func (x *TextIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[34] + mi := &file_collections_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2918,7 +3088,7 @@ func (x *TextIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use TextIndexParams.ProtoReflect.Descriptor instead. func (*TextIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{34} + return file_collections_proto_rawDescGZIP(), []int{35} } func (x *TextIndexParams) GetTokenizer() TokenizerType { @@ -2961,7 +3131,7 @@ type IntegerIndexParams struct { func (x *IntegerIndexParams) Reset() { *x = IntegerIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[35] + mi := &file_collections_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2974,7 +3144,7 @@ func (x *IntegerIndexParams) String() string { func (*IntegerIndexParams) ProtoMessage() {} func (x *IntegerIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[35] + mi := &file_collections_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2987,7 +3157,7 @@ func (x *IntegerIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use IntegerIndexParams.ProtoReflect.Descriptor instead. func (*IntegerIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{35} + return file_collections_proto_rawDescGZIP(), []int{36} } func (x *IntegerIndexParams) GetLookup() bool { @@ -3019,7 +3189,7 @@ type PayloadIndexParams struct { func (x *PayloadIndexParams) Reset() { *x = PayloadIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[36] + mi := &file_collections_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3032,7 +3202,7 @@ func (x *PayloadIndexParams) String() string { func (*PayloadIndexParams) ProtoMessage() {} func (x *PayloadIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[36] + mi := &file_collections_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3045,7 +3215,7 @@ func (x *PayloadIndexParams) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadIndexParams.ProtoReflect.Descriptor instead. func (*PayloadIndexParams) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{36} + return file_collections_proto_rawDescGZIP(), []int{37} } func (m *PayloadIndexParams) GetIndexParams() isPayloadIndexParams_IndexParams { @@ -3098,7 +3268,7 @@ type PayloadSchemaInfo struct { func (x *PayloadSchemaInfo) Reset() { *x = PayloadSchemaInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[37] + mi := &file_collections_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3111,7 +3281,7 @@ func (x *PayloadSchemaInfo) String() string { func (*PayloadSchemaInfo) ProtoMessage() {} func (x *PayloadSchemaInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[37] + mi := &file_collections_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3124,7 +3294,7 @@ func (x *PayloadSchemaInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadSchemaInfo.ProtoReflect.Descriptor instead. func (*PayloadSchemaInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{37} + return file_collections_proto_rawDescGZIP(), []int{38} } func (x *PayloadSchemaInfo) GetDataType() PayloadSchemaType { @@ -3166,7 +3336,7 @@ type CollectionInfo struct { func (x *CollectionInfo) Reset() { *x = CollectionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[38] + mi := &file_collections_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3179,7 +3349,7 @@ func (x *CollectionInfo) String() string { func (*CollectionInfo) ProtoMessage() {} func (x *CollectionInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[38] + mi := &file_collections_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3192,7 +3362,7 @@ func (x *CollectionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionInfo.ProtoReflect.Descriptor instead. func (*CollectionInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{38} + return file_collections_proto_rawDescGZIP(), []int{39} } func (x *CollectionInfo) GetStatus() CollectionStatus { @@ -3263,7 +3433,7 @@ type ChangeAliases struct { func (x *ChangeAliases) Reset() { *x = ChangeAliases{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[39] + mi := &file_collections_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3276,7 +3446,7 @@ func (x *ChangeAliases) String() string { func (*ChangeAliases) ProtoMessage() {} func (x *ChangeAliases) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[39] + mi := &file_collections_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3289,7 +3459,7 @@ func (x *ChangeAliases) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeAliases.ProtoReflect.Descriptor instead. func (*ChangeAliases) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{39} + return file_collections_proto_rawDescGZIP(), []int{40} } func (x *ChangeAliases) GetActions() []*AliasOperations { @@ -3322,7 +3492,7 @@ type AliasOperations struct { func (x *AliasOperations) Reset() { *x = AliasOperations{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[40] + mi := &file_collections_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3335,7 +3505,7 @@ func (x *AliasOperations) String() string { func (*AliasOperations) ProtoMessage() {} func (x *AliasOperations) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[40] + mi := &file_collections_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3348,7 +3518,7 @@ func (x *AliasOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use AliasOperations.ProtoReflect.Descriptor instead. func (*AliasOperations) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{40} + return file_collections_proto_rawDescGZIP(), []int{41} } func (m *AliasOperations) GetAction() isAliasOperations_Action { @@ -3413,7 +3583,7 @@ type CreateAlias struct { func (x *CreateAlias) Reset() { *x = CreateAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[41] + mi := &file_collections_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3596,7 @@ func (x *CreateAlias) String() string { func (*CreateAlias) ProtoMessage() {} func (x *CreateAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[41] + mi := &file_collections_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3609,7 @@ func (x *CreateAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAlias.ProtoReflect.Descriptor instead. func (*CreateAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{41} + return file_collections_proto_rawDescGZIP(), []int{42} } func (x *CreateAlias) GetCollectionName() string { @@ -3468,7 +3638,7 @@ type RenameAlias struct { func (x *RenameAlias) Reset() { *x = RenameAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[42] + mi := &file_collections_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3481,7 +3651,7 @@ func (x *RenameAlias) String() string { func (*RenameAlias) ProtoMessage() {} func (x *RenameAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[42] + mi := &file_collections_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3494,7 +3664,7 @@ func (x *RenameAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameAlias.ProtoReflect.Descriptor instead. func (*RenameAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{42} + return file_collections_proto_rawDescGZIP(), []int{43} } func (x *RenameAlias) GetOldAliasName() string { @@ -3522,7 +3692,7 @@ type DeleteAlias struct { func (x *DeleteAlias) Reset() { *x = DeleteAlias{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[43] + mi := &file_collections_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3535,7 +3705,7 @@ func (x *DeleteAlias) String() string { func (*DeleteAlias) ProtoMessage() {} func (x *DeleteAlias) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[43] + mi := &file_collections_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3548,7 +3718,7 @@ func (x *DeleteAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAlias.ProtoReflect.Descriptor instead. func (*DeleteAlias) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{43} + return file_collections_proto_rawDescGZIP(), []int{44} } func (x *DeleteAlias) GetAliasName() string { @@ -3567,7 +3737,7 @@ type ListAliasesRequest struct { func (x *ListAliasesRequest) Reset() { *x = ListAliasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[44] + mi := &file_collections_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3580,7 +3750,7 @@ func (x *ListAliasesRequest) String() string { func (*ListAliasesRequest) ProtoMessage() {} func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[44] + mi := &file_collections_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3593,7 +3763,7 @@ func (x *ListAliasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAliasesRequest.ProtoReflect.Descriptor instead. func (*ListAliasesRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{44} + return file_collections_proto_rawDescGZIP(), []int{45} } type ListCollectionAliasesRequest struct { @@ -3607,7 +3777,7 @@ type ListCollectionAliasesRequest struct { func (x *ListCollectionAliasesRequest) Reset() { *x = ListCollectionAliasesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[45] + mi := &file_collections_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3620,7 +3790,7 @@ func (x *ListCollectionAliasesRequest) String() string { func (*ListCollectionAliasesRequest) ProtoMessage() {} func (x *ListCollectionAliasesRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[45] + mi := &file_collections_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3633,7 +3803,7 @@ func (x *ListCollectionAliasesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCollectionAliasesRequest.ProtoReflect.Descriptor instead. func (*ListCollectionAliasesRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{45} + return file_collections_proto_rawDescGZIP(), []int{46} } func (x *ListCollectionAliasesRequest) GetCollectionName() string { @@ -3655,7 +3825,7 @@ type AliasDescription struct { func (x *AliasDescription) Reset() { *x = AliasDescription{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[46] + mi := &file_collections_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3668,7 +3838,7 @@ func (x *AliasDescription) String() string { func (*AliasDescription) ProtoMessage() {} func (x *AliasDescription) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[46] + mi := &file_collections_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3681,7 +3851,7 @@ func (x *AliasDescription) ProtoReflect() protoreflect.Message { // Deprecated: Use AliasDescription.ProtoReflect.Descriptor instead. func (*AliasDescription) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{46} + return file_collections_proto_rawDescGZIP(), []int{47} } func (x *AliasDescription) GetAliasName() string { @@ -3710,7 +3880,7 @@ type ListAliasesResponse struct { func (x *ListAliasesResponse) Reset() { *x = ListAliasesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[47] + mi := &file_collections_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3723,7 +3893,7 @@ func (x *ListAliasesResponse) String() string { func (*ListAliasesResponse) ProtoMessage() {} func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[47] + mi := &file_collections_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3736,7 +3906,7 @@ func (x *ListAliasesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAliasesResponse.ProtoReflect.Descriptor instead. func (*ListAliasesResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{47} + return file_collections_proto_rawDescGZIP(), []int{48} } func (x *ListAliasesResponse) GetAliases() []*AliasDescription { @@ -3764,7 +3934,7 @@ type CollectionClusterInfoRequest struct { func (x *CollectionClusterInfoRequest) Reset() { *x = CollectionClusterInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[48] + mi := &file_collections_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3777,7 +3947,7 @@ func (x *CollectionClusterInfoRequest) String() string { func (*CollectionClusterInfoRequest) ProtoMessage() {} func (x *CollectionClusterInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[48] + mi := &file_collections_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3790,7 +3960,7 @@ func (x *CollectionClusterInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionClusterInfoRequest.ProtoReflect.Descriptor instead. func (*CollectionClusterInfoRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{48} + return file_collections_proto_rawDescGZIP(), []int{49} } func (x *CollectionClusterInfoRequest) GetCollectionName() string { @@ -3815,7 +3985,7 @@ type ShardKey struct { func (x *ShardKey) Reset() { *x = ShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[49] + mi := &file_collections_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3828,7 +3998,7 @@ func (x *ShardKey) String() string { func (*ShardKey) ProtoMessage() {} func (x *ShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[49] + mi := &file_collections_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3841,7 +4011,7 @@ func (x *ShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardKey.ProtoReflect.Descriptor instead. func (*ShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{49} + return file_collections_proto_rawDescGZIP(), []int{50} } func (m *ShardKey) GetKey() isShardKey_Key { @@ -3895,7 +4065,7 @@ type LocalShardInfo struct { func (x *LocalShardInfo) Reset() { *x = LocalShardInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[50] + mi := &file_collections_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3908,7 +4078,7 @@ func (x *LocalShardInfo) String() string { func (*LocalShardInfo) ProtoMessage() {} func (x *LocalShardInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[50] + mi := &file_collections_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3921,7 +4091,7 @@ func (x *LocalShardInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalShardInfo.ProtoReflect.Descriptor instead. func (*LocalShardInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{50} + return file_collections_proto_rawDescGZIP(), []int{51} } func (x *LocalShardInfo) GetShardId() uint32 { @@ -3966,7 +4136,7 @@ type RemoteShardInfo struct { func (x *RemoteShardInfo) Reset() { *x = RemoteShardInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[51] + mi := &file_collections_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3979,7 +4149,7 @@ func (x *RemoteShardInfo) String() string { func (*RemoteShardInfo) ProtoMessage() {} func (x *RemoteShardInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[51] + mi := &file_collections_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3992,7 +4162,7 @@ func (x *RemoteShardInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoteShardInfo.ProtoReflect.Descriptor instead. func (*RemoteShardInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{51} + return file_collections_proto_rawDescGZIP(), []int{52} } func (x *RemoteShardInfo) GetShardId() uint32 { @@ -4028,16 +4198,17 @@ type ShardTransferInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id - From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` - To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` - Sync bool `protobuf:"varint,4,opt,name=sync,proto3" json:"sync,omitempty"` // If `true` transfer is a synchronization of a replicas; If `false` transfer is a moving of a shard from one peer to another + ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id + ToShardId *uint32 `protobuf:"varint,5,opt,name=to_shard_id,json=toShardId,proto3,oneof" json:"to_shard_id,omitempty"` + From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` + To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` + Sync bool `protobuf:"varint,4,opt,name=sync,proto3" json:"sync,omitempty"` // If `true` transfer is a synchronization of a replicas; If `false` transfer is a moving of a shard from one peer to another } func (x *ShardTransferInfo) Reset() { *x = ShardTransferInfo{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[52] + mi := &file_collections_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4050,7 +4221,7 @@ func (x *ShardTransferInfo) String() string { func (*ShardTransferInfo) ProtoMessage() {} func (x *ShardTransferInfo) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[52] + mi := &file_collections_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4063,7 +4234,7 @@ func (x *ShardTransferInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardTransferInfo.ProtoReflect.Descriptor instead. func (*ShardTransferInfo) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{52} + return file_collections_proto_rawDescGZIP(), []int{53} } func (x *ShardTransferInfo) GetShardId() uint32 { @@ -4073,6 +4244,13 @@ func (x *ShardTransferInfo) GetShardId() uint32 { return 0 } +func (x *ShardTransferInfo) GetToShardId() uint32 { + if x != nil && x.ToShardId != nil { + return *x.ToShardId + } + return 0 +} + func (x *ShardTransferInfo) GetFrom() uint64 { if x != nil { return x.From @@ -4109,7 +4287,7 @@ type CollectionClusterInfoResponse struct { func (x *CollectionClusterInfoResponse) Reset() { *x = CollectionClusterInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[53] + mi := &file_collections_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4122,7 +4300,7 @@ func (x *CollectionClusterInfoResponse) String() string { func (*CollectionClusterInfoResponse) ProtoMessage() {} func (x *CollectionClusterInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[53] + mi := &file_collections_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4135,7 +4313,7 @@ func (x *CollectionClusterInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectionClusterInfoResponse.ProtoReflect.Descriptor instead. func (*CollectionClusterInfoResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{53} + return file_collections_proto_rawDescGZIP(), []int{54} } func (x *CollectionClusterInfoResponse) GetPeerId() uint64 { @@ -4179,6 +4357,7 @@ type MoveShard struct { unknownFields protoimpl.UnknownFields ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id + ToShardId *uint32 `protobuf:"varint,5,opt,name=to_shard_id,json=toShardId,proto3,oneof" json:"to_shard_id,omitempty"` FromPeerId uint64 `protobuf:"varint,2,opt,name=from_peer_id,json=fromPeerId,proto3" json:"from_peer_id,omitempty"` ToPeerId uint64 `protobuf:"varint,3,opt,name=to_peer_id,json=toPeerId,proto3" json:"to_peer_id,omitempty"` Method *ShardTransferMethod `protobuf:"varint,4,opt,name=method,proto3,enum=qdrant.ShardTransferMethod,oneof" json:"method,omitempty"` @@ -4187,7 +4366,7 @@ type MoveShard struct { func (x *MoveShard) Reset() { *x = MoveShard{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[54] + mi := &file_collections_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4200,7 +4379,7 @@ func (x *MoveShard) String() string { func (*MoveShard) ProtoMessage() {} func (x *MoveShard) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[54] + mi := &file_collections_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4213,7 +4392,7 @@ func (x *MoveShard) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveShard.ProtoReflect.Descriptor instead. func (*MoveShard) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{54} + return file_collections_proto_rawDescGZIP(), []int{55} } func (x *MoveShard) GetShardId() uint32 { @@ -4223,6 +4402,13 @@ func (x *MoveShard) GetShardId() uint32 { return 0 } +func (x *MoveShard) GetToShardId() uint32 { + if x != nil && x.ToShardId != nil { + return *x.ToShardId + } + return 0 +} + func (x *MoveShard) GetFromPeerId() uint64 { if x != nil { return x.FromPeerId @@ -4244,20 +4430,100 @@ func (x *MoveShard) GetMethod() ShardTransferMethod { return ShardTransferMethod_StreamRecords } +type ReplicateShard struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id + ToShardId *uint32 `protobuf:"varint,5,opt,name=to_shard_id,json=toShardId,proto3,oneof" json:"to_shard_id,omitempty"` + FromPeerId uint64 `protobuf:"varint,2,opt,name=from_peer_id,json=fromPeerId,proto3" json:"from_peer_id,omitempty"` + ToPeerId uint64 `protobuf:"varint,3,opt,name=to_peer_id,json=toPeerId,proto3" json:"to_peer_id,omitempty"` + Method *ShardTransferMethod `protobuf:"varint,4,opt,name=method,proto3,enum=qdrant.ShardTransferMethod,oneof" json:"method,omitempty"` +} + +func (x *ReplicateShard) Reset() { + *x = ReplicateShard{} + if protoimpl.UnsafeEnabled { + mi := &file_collections_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReplicateShard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplicateShard) ProtoMessage() {} + +func (x *ReplicateShard) ProtoReflect() protoreflect.Message { + mi := &file_collections_proto_msgTypes[56] + 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 ReplicateShard.ProtoReflect.Descriptor instead. +func (*ReplicateShard) Descriptor() ([]byte, []int) { + return file_collections_proto_rawDescGZIP(), []int{56} +} + +func (x *ReplicateShard) GetShardId() uint32 { + if x != nil { + return x.ShardId + } + return 0 +} + +func (x *ReplicateShard) GetToShardId() uint32 { + if x != nil && x.ToShardId != nil { + return *x.ToShardId + } + return 0 +} + +func (x *ReplicateShard) GetFromPeerId() uint64 { + if x != nil { + return x.FromPeerId + } + return 0 +} + +func (x *ReplicateShard) GetToPeerId() uint64 { + if x != nil { + return x.ToPeerId + } + return 0 +} + +func (x *ReplicateShard) GetMethod() ShardTransferMethod { + if x != nil && x.Method != nil { + return *x.Method + } + return ShardTransferMethod_StreamRecords +} + type AbortShardTransfer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id - FromPeerId uint64 `protobuf:"varint,2,opt,name=from_peer_id,json=fromPeerId,proto3" json:"from_peer_id,omitempty"` - ToPeerId uint64 `protobuf:"varint,3,opt,name=to_peer_id,json=toPeerId,proto3" json:"to_peer_id,omitempty"` + ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id + ToShardId *uint32 `protobuf:"varint,4,opt,name=to_shard_id,json=toShardId,proto3,oneof" json:"to_shard_id,omitempty"` + FromPeerId uint64 `protobuf:"varint,2,opt,name=from_peer_id,json=fromPeerId,proto3" json:"from_peer_id,omitempty"` + ToPeerId uint64 `protobuf:"varint,3,opt,name=to_peer_id,json=toPeerId,proto3" json:"to_peer_id,omitempty"` } func (x *AbortShardTransfer) Reset() { *x = AbortShardTransfer{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[55] + mi := &file_collections_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4270,7 +4536,7 @@ func (x *AbortShardTransfer) String() string { func (*AbortShardTransfer) ProtoMessage() {} func (x *AbortShardTransfer) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[55] + mi := &file_collections_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4283,7 +4549,7 @@ func (x *AbortShardTransfer) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortShardTransfer.ProtoReflect.Descriptor instead. func (*AbortShardTransfer) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{55} + return file_collections_proto_rawDescGZIP(), []int{57} } func (x *AbortShardTransfer) GetShardId() uint32 { @@ -4293,6 +4559,13 @@ func (x *AbortShardTransfer) GetShardId() uint32 { return 0 } +func (x *AbortShardTransfer) GetToShardId() uint32 { + if x != nil && x.ToShardId != nil { + return *x.ToShardId + } + return 0 +} + func (x *AbortShardTransfer) GetFromPeerId() uint64 { if x != nil { return x.FromPeerId @@ -4313,6 +4586,7 @@ type RestartTransfer struct { unknownFields protoimpl.UnknownFields ShardId uint32 `protobuf:"varint,1,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` // Local shard id + ToShardId *uint32 `protobuf:"varint,5,opt,name=to_shard_id,json=toShardId,proto3,oneof" json:"to_shard_id,omitempty"` FromPeerId uint64 `protobuf:"varint,2,opt,name=from_peer_id,json=fromPeerId,proto3" json:"from_peer_id,omitempty"` ToPeerId uint64 `protobuf:"varint,3,opt,name=to_peer_id,json=toPeerId,proto3" json:"to_peer_id,omitempty"` Method ShardTransferMethod `protobuf:"varint,4,opt,name=method,proto3,enum=qdrant.ShardTransferMethod" json:"method,omitempty"` @@ -4321,7 +4595,7 @@ type RestartTransfer struct { func (x *RestartTransfer) Reset() { *x = RestartTransfer{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[56] + mi := &file_collections_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4334,7 +4608,7 @@ func (x *RestartTransfer) String() string { func (*RestartTransfer) ProtoMessage() {} func (x *RestartTransfer) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[56] + mi := &file_collections_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4347,7 +4621,7 @@ func (x *RestartTransfer) ProtoReflect() protoreflect.Message { // Deprecated: Use RestartTransfer.ProtoReflect.Descriptor instead. func (*RestartTransfer) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{56} + return file_collections_proto_rawDescGZIP(), []int{58} } func (x *RestartTransfer) GetShardId() uint32 { @@ -4357,6 +4631,13 @@ func (x *RestartTransfer) GetShardId() uint32 { return 0 } +func (x *RestartTransfer) GetToShardId() uint32 { + if x != nil && x.ToShardId != nil { + return *x.ToShardId + } + return 0 +} + func (x *RestartTransfer) GetFromPeerId() uint64 { if x != nil { return x.FromPeerId @@ -4390,7 +4671,7 @@ type Replica struct { func (x *Replica) Reset() { *x = Replica{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[57] + mi := &file_collections_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4403,7 +4684,7 @@ func (x *Replica) String() string { func (*Replica) ProtoMessage() {} func (x *Replica) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[57] + mi := &file_collections_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4416,7 +4697,7 @@ func (x *Replica) ProtoReflect() protoreflect.Message { // Deprecated: Use Replica.ProtoReflect.Descriptor instead. func (*Replica) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{57} + return file_collections_proto_rawDescGZIP(), []int{59} } func (x *Replica) GetShardId() uint32 { @@ -4447,7 +4728,7 @@ type CreateShardKey struct { func (x *CreateShardKey) Reset() { *x = CreateShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[58] + mi := &file_collections_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4460,7 +4741,7 @@ func (x *CreateShardKey) String() string { func (*CreateShardKey) ProtoMessage() {} func (x *CreateShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[58] + mi := &file_collections_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4473,7 +4754,7 @@ func (x *CreateShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKey.ProtoReflect.Descriptor instead. func (*CreateShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{58} + return file_collections_proto_rawDescGZIP(), []int{60} } func (x *CreateShardKey) GetShardKey() *ShardKey { @@ -4515,7 +4796,7 @@ type DeleteShardKey struct { func (x *DeleteShardKey) Reset() { *x = DeleteShardKey{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[59] + mi := &file_collections_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4528,7 +4809,7 @@ func (x *DeleteShardKey) String() string { func (*DeleteShardKey) ProtoMessage() {} func (x *DeleteShardKey) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[59] + mi := &file_collections_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4541,7 +4822,7 @@ func (x *DeleteShardKey) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKey.ProtoReflect.Descriptor instead. func (*DeleteShardKey) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{59} + return file_collections_proto_rawDescGZIP(), []int{61} } func (x *DeleteShardKey) GetShardKey() *ShardKey { @@ -4573,7 +4854,7 @@ type UpdateCollectionClusterSetupRequest struct { func (x *UpdateCollectionClusterSetupRequest) Reset() { *x = UpdateCollectionClusterSetupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[60] + mi := &file_collections_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4586,7 +4867,7 @@ func (x *UpdateCollectionClusterSetupRequest) String() string { func (*UpdateCollectionClusterSetupRequest) ProtoMessage() {} func (x *UpdateCollectionClusterSetupRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[60] + mi := &file_collections_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4599,7 +4880,7 @@ func (x *UpdateCollectionClusterSetupRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use UpdateCollectionClusterSetupRequest.ProtoReflect.Descriptor instead. func (*UpdateCollectionClusterSetupRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{60} + return file_collections_proto_rawDescGZIP(), []int{62} } func (x *UpdateCollectionClusterSetupRequest) GetCollectionName() string { @@ -4623,7 +4904,7 @@ func (x *UpdateCollectionClusterSetupRequest) GetMoveShard() *MoveShard { return nil } -func (x *UpdateCollectionClusterSetupRequest) GetReplicateShard() *MoveShard { +func (x *UpdateCollectionClusterSetupRequest) GetReplicateShard() *ReplicateShard { if x, ok := x.GetOperation().(*UpdateCollectionClusterSetupRequest_ReplicateShard); ok { return x.ReplicateShard } @@ -4681,7 +4962,7 @@ type UpdateCollectionClusterSetupRequest_MoveShard struct { } type UpdateCollectionClusterSetupRequest_ReplicateShard struct { - ReplicateShard *MoveShard `protobuf:"bytes,3,opt,name=replicate_shard,json=replicateShard,proto3,oneof"` + ReplicateShard *ReplicateShard `protobuf:"bytes,3,opt,name=replicate_shard,json=replicateShard,proto3,oneof"` } type UpdateCollectionClusterSetupRequest_AbortTransfer struct { @@ -4736,7 +5017,7 @@ type UpdateCollectionClusterSetupResponse struct { func (x *UpdateCollectionClusterSetupResponse) Reset() { *x = UpdateCollectionClusterSetupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[61] + mi := &file_collections_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4749,7 +5030,7 @@ func (x *UpdateCollectionClusterSetupResponse) String() string { func (*UpdateCollectionClusterSetupResponse) ProtoMessage() {} func (x *UpdateCollectionClusterSetupResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[61] + mi := &file_collections_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4762,7 +5043,7 @@ func (x *UpdateCollectionClusterSetupResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateCollectionClusterSetupResponse.ProtoReflect.Descriptor instead. func (*UpdateCollectionClusterSetupResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{61} + return file_collections_proto_rawDescGZIP(), []int{63} } func (x *UpdateCollectionClusterSetupResponse) GetResult() bool { @@ -4785,7 +5066,7 @@ type CreateShardKeyRequest struct { func (x *CreateShardKeyRequest) Reset() { *x = CreateShardKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[62] + mi := &file_collections_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4798,7 +5079,7 @@ func (x *CreateShardKeyRequest) String() string { func (*CreateShardKeyRequest) ProtoMessage() {} func (x *CreateShardKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[62] + mi := &file_collections_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4811,7 +5092,7 @@ func (x *CreateShardKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKeyRequest.ProtoReflect.Descriptor instead. func (*CreateShardKeyRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{62} + return file_collections_proto_rawDescGZIP(), []int{64} } func (x *CreateShardKeyRequest) GetCollectionName() string { @@ -4848,7 +5129,7 @@ type DeleteShardKeyRequest struct { func (x *DeleteShardKeyRequest) Reset() { *x = DeleteShardKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[63] + mi := &file_collections_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4861,7 +5142,7 @@ func (x *DeleteShardKeyRequest) String() string { func (*DeleteShardKeyRequest) ProtoMessage() {} func (x *DeleteShardKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[63] + mi := &file_collections_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4874,7 +5155,7 @@ func (x *DeleteShardKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteShardKeyRequest) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{63} + return file_collections_proto_rawDescGZIP(), []int{65} } func (x *DeleteShardKeyRequest) GetCollectionName() string { @@ -4909,7 +5190,7 @@ type CreateShardKeyResponse struct { func (x *CreateShardKeyResponse) Reset() { *x = CreateShardKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[64] + mi := &file_collections_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4922,7 +5203,7 @@ func (x *CreateShardKeyResponse) String() string { func (*CreateShardKeyResponse) ProtoMessage() {} func (x *CreateShardKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[64] + mi := &file_collections_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4935,7 +5216,7 @@ func (x *CreateShardKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateShardKeyResponse.ProtoReflect.Descriptor instead. func (*CreateShardKeyResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{64} + return file_collections_proto_rawDescGZIP(), []int{66} } func (x *CreateShardKeyResponse) GetResult() bool { @@ -4956,7 +5237,7 @@ type DeleteShardKeyResponse struct { func (x *DeleteShardKeyResponse) Reset() { *x = DeleteShardKeyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_collections_proto_msgTypes[65] + mi := &file_collections_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4969,7 +5250,7 @@ func (x *DeleteShardKeyResponse) String() string { func (*DeleteShardKeyResponse) ProtoMessage() {} func (x *DeleteShardKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_collections_proto_msgTypes[65] + mi := &file_collections_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4982,7 +5263,7 @@ func (x *DeleteShardKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteShardKeyResponse.ProtoReflect.Descriptor instead. func (*DeleteShardKeyResponse) Descriptor() ([]byte, []int) { - return file_collections_proto_rawDescGZIP(), []int{65} + return file_collections_proto_rawDescGZIP(), []int{67} } func (x *DeleteShardKeyResponse) GetResult() bool { @@ -4996,7 +5277,7 @@ var File_collections_proto protoreflect.FileDescriptor var file_collections_proto_rawDesc = []byte{ 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x22, 0xf2, 0x02, 0x0a, 0x0c, + 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x22, 0xd8, 0x03, 0x0a, 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, @@ -5015,814 +5296,870 @@ var file_collections_proto_rawDesc = []byte{ 0x02, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, - 0x48, 0x03, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, - 0x69, 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xf8, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, - 0x66, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, - 0x48, 0x01, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x6e, - 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x93, 0x01, 0x0a, 0x0f, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x12, - 0x32, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, + 0x48, 0x03, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x4d, 0x0a, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x04, 0x52, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, + 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xf8, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x3c, 0x0a, 0x0b, 0x68, + 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x13, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x01, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, + 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x02, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, + 0x6b, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x4c, 0x0a, 0x08, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x13, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x61, 0x70, 0x12, + 0x36, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, - 0x6d, 0x61, 0x70, 0x1a, 0x4c, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x13, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x61, 0x70, 0x12, 0x36, 0x0a, 0x03, 0x6d, 0x61, 0x70, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, - 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, - 0x70, 0x1a, 0x50, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, - 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, - 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x42, - 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8f, 0x01, 0x0a, 0x11, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, - 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, - 0x66, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x54, 0x0a, 0x12, 0x53, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, - 0x52, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x71, + 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x50, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x8f, 0x01, 0x0a, 0x11, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x48, + 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x4d, 0x61, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x53, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x35, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x43, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x17, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x10, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x60, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x2b, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x5f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x6e, 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, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 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, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd9, 0x02, 0x0a, 0x0e, - 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x11, - 0x0a, 0x01, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x01, 0x6d, 0x88, 0x01, - 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x66, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, - 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, - 0x61, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, - 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x12, - 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, - 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x4d, 0x88, 0x01, 0x01, 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x11, 0x53, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, - 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x11, 0x66, 0x75, - 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x6b, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x00, 0x52, 0x0d, 0x77, 0x61, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x62, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x01, 0x52, 0x10, 0x77, 0x61, 0x6c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x68, - 0x65, 0x61, 0x64, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x77, - 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, - 0x64, 0x22, 0x89, 0x05, 0x0a, 0x14, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, + 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x52, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x11, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x3d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x43, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x17, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x73, 0x22, 0x60, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x30, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x2b, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x6e, 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, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 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, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x37, 0x0a, + 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd9, 0x02, 0x0a, 0x0e, 0x48, 0x6e, 0x73, 0x77, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x11, 0x0a, 0x01, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x01, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, + 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, + 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x02, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x6d, 0x61, 0x78, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x1c, 0x0a, 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x05, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x88, 0x01, 0x01, + 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x66, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x6d, 0x22, 0xca, 0x01, 0x0a, 0x11, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x13, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, + 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, + 0x07, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x08, 0x64, + 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x48, + 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, + 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x9a, 0x01, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, + 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x61, + 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x12, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, + 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x10, 0x77, 0x61, + 0x6c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x68, 0x65, 0x61, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x5f, 0x6d, 0x62, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64, 0x22, 0x89, 0x05, 0x0a, + 0x14, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, + 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x76, 0x61, 0x63, 0x75, 0x75, + 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x15, 0x76, 0x61, 0x63, + 0x75, 0x75, 0x6d, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x6d, 0x61, + 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2e, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0f, 0x6d, 0x65, 0x6d, + 0x6d, 0x61, 0x70, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x32, 0x0a, 0x12, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x11, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x06, 0x52, 0x10, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, - 0x52, 0x15, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x14, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, - 0x52, 0x0f, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x6c, 0x75, 0x73, - 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x10, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, - 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, - 0x16, 0x6d, 0x61, 0x78, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x61, 0x63, 0x75, 0x75, 0x6d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x6d, 0x65, 0x6d, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x6c, - 0x75, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0xa3, 0x01, - 0x0a, 0x12, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, - 0x72, 0x61, 0x6d, 0x22, 0x84, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x63, - 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, - 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, - 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x47, 0x0a, 0x12, 0x42, 0x69, + 0x72, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x65, 0x6d, + 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x1b, 0x0a, 0x19, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x53, 0x63, 0x61, + 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, + 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, + 0x00, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, + 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x01, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, + 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x84, + 0x01, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, + 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0x47, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x61, + 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x22, 0xc9, + 0x01, 0x0a, 0x12, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x72, 0x61, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x52, 0x61, - 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, - 0x72, 0x61, 0x6d, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, - 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, - 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, - 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, - 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x0a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x16, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x08, 0x0a, 0x10, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, - 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x77, 0x61, 0x6c, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, - 0x66, 0x66, 0x48, 0x01, 0x52, 0x09, 0x77, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x02, 0x52, 0x10, 0x6f, - 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6f, 0x6e, - 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x06, 0x52, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, - 0x18, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x08, 0x52, 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, - 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x12, 0x69, 0x6e, - 0x69, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0a, 0x52, 0x12, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x0b, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0c, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, - 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x97, 0x05, 0x0a, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, - 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, - 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, - 0x00, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, - 0x69, 0x66, 0x66, 0x48, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, - 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x03, 0x52, - 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x45, - 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, - 0x66, 0x48, 0x04, 0x52, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, - 0x66, 0x66, 0x48, 0x05, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x06, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, - 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x66, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x04, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, - 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, + 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0a, 0x0a, 0x08, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xfd, 0x01, 0x0a, 0x16, 0x51, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, + 0x66, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, + 0x72, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x12, 0x2e, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x34, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, + 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x08, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, + 0x66, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, + 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x01, 0x52, + 0x09, 0x77, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, + 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, + 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, + 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x06, 0x52, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x07, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x08, 0x52, 0x16, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x46, 0x72, 0x6f, + 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x0a, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x48, 0x0b, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x0c, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x10, 0x72, 0x65, 0x61, 0x64, - 0x46, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, - 0x44, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x48, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, - 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x05, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x6f, - 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x68, + 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x22, 0xca, 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x32, 0x0a, 0x12, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, + 0x03, 0x10, 0x04, 0x22, 0x97, 0x05, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x70, + 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x48, 0x02, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x68, + 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x03, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0e, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x04, 0x52, 0x0d, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x54, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x48, 0x05, 0x52, + 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x06, 0x52, 0x13, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6e, 0x73, + 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x66, 0x0a, + 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x49, 0x0a, 0x1b, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x22, 0xfb, 0x04, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, + 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x41, 0x0a, 0x0e, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x16, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x66, + 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x10, 0x72, 0x65, 0x61, 0x64, 0x46, 0x61, 0x6e, 0x4f, 0x75, + 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x04, 0x52, 0x0e, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x53, 0x0a, 0x15, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x05, 0x52, 0x13, 0x73, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0xca, + 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x44, 0x69, 0x66, 0x66, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6f, 0x6e, + 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x66, 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x10, 0x72, 0x65, 0x61, 0x64, 0x46, 0x61, 0x6e, 0x4f, + 0x75, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x12, 0x3d, 0x0a, 0x18, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x16, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, - 0x2b, 0x0a, 0x0f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x6e, 0x44, 0x69, - 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x10, 0x72, 0x65, 0x61, - 0x64, 0x46, 0x61, 0x6e, 0x4f, 0x75, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x66, 0x61, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0xe6, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x44, 0x69, 0x66, 0x66, 0x52, 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x47, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, - 0x7a, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x44, 0x69, 0x66, 0x66, 0x52, 0x09, 0x77, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x50, 0x0a, 0x13, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, - 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xed, 0x01, 0x0a, 0x0f, 0x54, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x33, 0x0a, - 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, - 0x7a, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, - 0x73, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, - 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, - 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x77, 0x65, - 0x72, 0x63, 0x61, 0x73, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x22, 0x42, 0x0a, 0x12, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xbb, 0x01, - 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x65, 0x78, 0x74, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, + 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x66, 0x61, 0x6e, + 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xe6, 0x02, 0x0a, 0x10, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x30, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x48, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, + 0x0a, 0x68, 0x6e, 0x73, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x10, 0x6f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, + 0x69, 0x66, 0x66, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x57, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x69, 0x66, 0x66, 0x52, + 0x09, 0x77, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x13, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0xed, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x21, 0x0a, + 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x27, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x88, + 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, + 0x65, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x6c, 0x65, 0x6e, 0x22, 0x42, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x12, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x45, 0x0a, 0x11, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x00, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x09, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, + 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x22, 0xe2, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, + 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x0e, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x26, + 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, + 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x13, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, + 0x5b, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xe2, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x10, 0x6f, 0x70, - 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x70, - 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, - 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, - 0x0a, 0x0d, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0d, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x30, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x50, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x13, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x1a, 0x5b, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, - 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x6d, 0x0a, 0x0d, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x0f, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, - 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x0b, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6f, - 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, - 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x10, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x5d, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0x47, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, + 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x6d, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, + 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x38, 0x0a, 0x0c, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x55, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0xbc, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, - 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, - 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x66, 0x0a, 0x11, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, - 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x22, 0x96, - 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x76, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x00, 0x52, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x6f, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x0b, 0x52, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, + 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x5a, 0x0a, 0x10, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x1c, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, + 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xbc, 0x01, 0x0a, + 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, + 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x0f, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, + 0x96, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x64, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x76, + 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, - 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, + 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xe5, 0x01, 0x0a, 0x0e, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x19, + 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x01, 0x52, 0x06, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, - 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x3d, 0x0a, 0x07, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0x3f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x22, 0xc1, 0x04, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, + 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, + 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x0f, 0x52, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x6f, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x50, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, + 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x19, + 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, + 0x49, 0x64, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x32, + 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x22, 0xc6, 0x04, 0x0a, 0x23, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6d, + 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x62, 0x6f, 0x72, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0c, 0x64, 0x72, 0x6f, - 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x48, 0x00, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, - 0x42, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1d, 0x0a, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, - 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x3e, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x72, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, + 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x48, 0x00, + 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x42, 0x0a, + 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, + 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, + 0x79, 0x12, 0x42, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x3e, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x30, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x30, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x30, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x30, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x2f, 0x0a, 0x08, 0x44, 0x61, 0x74, - 0x61, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x10, 0x01, 0x12, - 0x09, 0x0a, 0x05, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x10, 0x02, 0x2a, 0x4f, 0x0a, 0x08, 0x44, 0x69, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, - 0x6f, 0x73, 0x69, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x75, 0x63, 0x6c, 0x69, - 0x64, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x4d, 0x61, 0x6e, 0x68, 0x61, 0x74, 0x74, 0x61, 0x6e, 0x10, 0x04, 0x2a, 0x59, 0x0a, 0x10, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x47, 0x72, 0x65, 0x65, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x59, 0x65, 0x6c, 0x6c, 0x6f, - 0x77, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x65, 0x64, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, - 0x47, 0x72, 0x65, 0x79, 0x10, 0x04, 0x2a, 0x74, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, - 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x65, 0x72, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, - 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, - 0x78, 0x74, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x10, 0x06, 0x12, 0x0c, - 0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x07, 0x2a, 0x35, 0x0a, 0x10, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x74, - 0x38, 0x10, 0x01, 0x2a, 0x3d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x06, 0x0a, 0x02, 0x78, 0x34, 0x10, 0x00, 0x12, - 0x06, 0x0a, 0x02, 0x78, 0x38, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x31, 0x36, 0x10, 0x02, - 0x12, 0x07, 0x0a, 0x03, 0x78, 0x33, 0x32, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x36, 0x34, - 0x10, 0x04, 0x2a, 0x26, 0x0a, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x6f, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x0d, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x64, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x6c, 0x10, 0x04, - 0x2a, 0x74, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x3c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x10, 0x03, 0x2a, 0x1d, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, + 0x64, 0x66, 0x10, 0x01, 0x2a, 0x23, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0a, 0x0a, + 0x06, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x6d, 0x10, 0x00, 0x2a, 0x4f, 0x0a, 0x08, 0x44, 0x69, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6f, + 0x73, 0x69, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x75, 0x63, 0x6c, 0x69, 0x64, + 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4d, + 0x61, 0x6e, 0x68, 0x61, 0x74, 0x74, 0x61, 0x6e, 0x10, 0x04, 0x2a, 0x59, 0x0a, 0x10, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, + 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, + 0x72, 0x65, 0x65, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, + 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x65, 0x64, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, + 0x72, 0x65, 0x79, 0x10, 0x04, 0x2a, 0x74, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, 0x03, + 0x12, 0x07, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x78, + 0x74, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c, 0x10, 0x06, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x07, 0x2a, 0x35, 0x0a, 0x10, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x74, 0x38, + 0x10, 0x01, 0x2a, 0x3d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x06, 0x0a, 0x02, 0x78, 0x34, 0x10, 0x00, 0x12, 0x06, + 0x0a, 0x02, 0x78, 0x38, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x31, 0x36, 0x10, 0x02, 0x12, + 0x07, 0x0a, 0x03, 0x78, 0x33, 0x32, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x78, 0x36, 0x34, 0x10, + 0x04, 0x2a, 0x26, 0x0a, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x2a, 0x54, 0x0a, 0x0d, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x6f, 0x72, 0x64, 0x10, 0x03, 0x12, 0x10, 0x0a, + 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x6c, 0x10, 0x04, 0x2a, + 0x84, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x65, 0x61, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x10, 0x06, 0x2a, 0x44, 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, + 0x76, 0x65, 0x72, 0x79, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x10, 0x07, 0x2a, 0x61, 0x0a, 0x13, 0x53, 0x68, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x10, 0x01, 0x12, 0x0c, - 0x0a, 0x08, 0x57, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x0a, 0x08, 0x57, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, + 0x52, 0x65, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x10, 0x03, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -5837,181 +6174,190 @@ func file_collections_proto_rawDescGZIP() []byte { return file_collections_proto_rawDescData } -var file_collections_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_collections_proto_msgTypes = make([]protoimpl.MessageInfo, 70) +var file_collections_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_collections_proto_msgTypes = make([]protoimpl.MessageInfo, 72) var file_collections_proto_goTypes = []interface{}{ (Datatype)(0), // 0: qdrant.Datatype - (Distance)(0), // 1: qdrant.Distance - (CollectionStatus)(0), // 2: qdrant.CollectionStatus - (PayloadSchemaType)(0), // 3: qdrant.PayloadSchemaType - (QuantizationType)(0), // 4: qdrant.QuantizationType - (CompressionRatio)(0), // 5: qdrant.CompressionRatio - (ShardingMethod)(0), // 6: qdrant.ShardingMethod - (TokenizerType)(0), // 7: qdrant.TokenizerType - (ReplicaState)(0), // 8: qdrant.ReplicaState - (ShardTransferMethod)(0), // 9: qdrant.ShardTransferMethod - (*VectorParams)(nil), // 10: qdrant.VectorParams - (*VectorParamsDiff)(nil), // 11: qdrant.VectorParamsDiff - (*VectorParamsMap)(nil), // 12: qdrant.VectorParamsMap - (*VectorParamsDiffMap)(nil), // 13: qdrant.VectorParamsDiffMap - (*VectorsConfig)(nil), // 14: qdrant.VectorsConfig - (*VectorsConfigDiff)(nil), // 15: qdrant.VectorsConfigDiff - (*SparseVectorParams)(nil), // 16: qdrant.SparseVectorParams - (*SparseVectorConfig)(nil), // 17: qdrant.SparseVectorConfig - (*GetCollectionInfoRequest)(nil), // 18: qdrant.GetCollectionInfoRequest - (*CollectionExistsRequest)(nil), // 19: qdrant.CollectionExistsRequest - (*CollectionExists)(nil), // 20: qdrant.CollectionExists - (*CollectionExistsResponse)(nil), // 21: qdrant.CollectionExistsResponse - (*ListCollectionsRequest)(nil), // 22: qdrant.ListCollectionsRequest - (*CollectionDescription)(nil), // 23: qdrant.CollectionDescription - (*GetCollectionInfoResponse)(nil), // 24: qdrant.GetCollectionInfoResponse - (*ListCollectionsResponse)(nil), // 25: qdrant.ListCollectionsResponse - (*OptimizerStatus)(nil), // 26: qdrant.OptimizerStatus - (*HnswConfigDiff)(nil), // 27: qdrant.HnswConfigDiff - (*SparseIndexConfig)(nil), // 28: qdrant.SparseIndexConfig - (*WalConfigDiff)(nil), // 29: qdrant.WalConfigDiff - (*OptimizersConfigDiff)(nil), // 30: qdrant.OptimizersConfigDiff - (*ScalarQuantization)(nil), // 31: qdrant.ScalarQuantization - (*ProductQuantization)(nil), // 32: qdrant.ProductQuantization - (*BinaryQuantization)(nil), // 33: qdrant.BinaryQuantization - (*QuantizationConfig)(nil), // 34: qdrant.QuantizationConfig - (*Disabled)(nil), // 35: qdrant.Disabled - (*QuantizationConfigDiff)(nil), // 36: qdrant.QuantizationConfigDiff - (*CreateCollection)(nil), // 37: qdrant.CreateCollection - (*UpdateCollection)(nil), // 38: qdrant.UpdateCollection - (*DeleteCollection)(nil), // 39: qdrant.DeleteCollection - (*CollectionOperationResponse)(nil), // 40: qdrant.CollectionOperationResponse - (*CollectionParams)(nil), // 41: qdrant.CollectionParams - (*CollectionParamsDiff)(nil), // 42: qdrant.CollectionParamsDiff - (*CollectionConfig)(nil), // 43: qdrant.CollectionConfig - (*TextIndexParams)(nil), // 44: qdrant.TextIndexParams - (*IntegerIndexParams)(nil), // 45: qdrant.IntegerIndexParams - (*PayloadIndexParams)(nil), // 46: qdrant.PayloadIndexParams - (*PayloadSchemaInfo)(nil), // 47: qdrant.PayloadSchemaInfo - (*CollectionInfo)(nil), // 48: qdrant.CollectionInfo - (*ChangeAliases)(nil), // 49: qdrant.ChangeAliases - (*AliasOperations)(nil), // 50: qdrant.AliasOperations - (*CreateAlias)(nil), // 51: qdrant.CreateAlias - (*RenameAlias)(nil), // 52: qdrant.RenameAlias - (*DeleteAlias)(nil), // 53: qdrant.DeleteAlias - (*ListAliasesRequest)(nil), // 54: qdrant.ListAliasesRequest - (*ListCollectionAliasesRequest)(nil), // 55: qdrant.ListCollectionAliasesRequest - (*AliasDescription)(nil), // 56: qdrant.AliasDescription - (*ListAliasesResponse)(nil), // 57: qdrant.ListAliasesResponse - (*CollectionClusterInfoRequest)(nil), // 58: qdrant.CollectionClusterInfoRequest - (*ShardKey)(nil), // 59: qdrant.ShardKey - (*LocalShardInfo)(nil), // 60: qdrant.LocalShardInfo - (*RemoteShardInfo)(nil), // 61: qdrant.RemoteShardInfo - (*ShardTransferInfo)(nil), // 62: qdrant.ShardTransferInfo - (*CollectionClusterInfoResponse)(nil), // 63: qdrant.CollectionClusterInfoResponse - (*MoveShard)(nil), // 64: qdrant.MoveShard - (*AbortShardTransfer)(nil), // 65: qdrant.AbortShardTransfer - (*RestartTransfer)(nil), // 66: qdrant.RestartTransfer - (*Replica)(nil), // 67: qdrant.Replica - (*CreateShardKey)(nil), // 68: qdrant.CreateShardKey - (*DeleteShardKey)(nil), // 69: qdrant.DeleteShardKey - (*UpdateCollectionClusterSetupRequest)(nil), // 70: qdrant.UpdateCollectionClusterSetupRequest - (*UpdateCollectionClusterSetupResponse)(nil), // 71: qdrant.UpdateCollectionClusterSetupResponse - (*CreateShardKeyRequest)(nil), // 72: qdrant.CreateShardKeyRequest - (*DeleteShardKeyRequest)(nil), // 73: qdrant.DeleteShardKeyRequest - (*CreateShardKeyResponse)(nil), // 74: qdrant.CreateShardKeyResponse - (*DeleteShardKeyResponse)(nil), // 75: qdrant.DeleteShardKeyResponse - nil, // 76: qdrant.VectorParamsMap.MapEntry - nil, // 77: qdrant.VectorParamsDiffMap.MapEntry - nil, // 78: qdrant.SparseVectorConfig.MapEntry - nil, // 79: qdrant.CollectionInfo.PayloadSchemaEntry + (Modifier)(0), // 1: qdrant.Modifier + (MultiVectorComparator)(0), // 2: qdrant.MultiVectorComparator + (Distance)(0), // 3: qdrant.Distance + (CollectionStatus)(0), // 4: qdrant.CollectionStatus + (PayloadSchemaType)(0), // 5: qdrant.PayloadSchemaType + (QuantizationType)(0), // 6: qdrant.QuantizationType + (CompressionRatio)(0), // 7: qdrant.CompressionRatio + (ShardingMethod)(0), // 8: qdrant.ShardingMethod + (TokenizerType)(0), // 9: qdrant.TokenizerType + (ReplicaState)(0), // 10: qdrant.ReplicaState + (ShardTransferMethod)(0), // 11: qdrant.ShardTransferMethod + (*VectorParams)(nil), // 12: qdrant.VectorParams + (*VectorParamsDiff)(nil), // 13: qdrant.VectorParamsDiff + (*VectorParamsMap)(nil), // 14: qdrant.VectorParamsMap + (*VectorParamsDiffMap)(nil), // 15: qdrant.VectorParamsDiffMap + (*VectorsConfig)(nil), // 16: qdrant.VectorsConfig + (*VectorsConfigDiff)(nil), // 17: qdrant.VectorsConfigDiff + (*SparseVectorParams)(nil), // 18: qdrant.SparseVectorParams + (*SparseVectorConfig)(nil), // 19: qdrant.SparseVectorConfig + (*MultiVectorConfig)(nil), // 20: qdrant.MultiVectorConfig + (*GetCollectionInfoRequest)(nil), // 21: qdrant.GetCollectionInfoRequest + (*CollectionExistsRequest)(nil), // 22: qdrant.CollectionExistsRequest + (*CollectionExists)(nil), // 23: qdrant.CollectionExists + (*CollectionExistsResponse)(nil), // 24: qdrant.CollectionExistsResponse + (*ListCollectionsRequest)(nil), // 25: qdrant.ListCollectionsRequest + (*CollectionDescription)(nil), // 26: qdrant.CollectionDescription + (*GetCollectionInfoResponse)(nil), // 27: qdrant.GetCollectionInfoResponse + (*ListCollectionsResponse)(nil), // 28: qdrant.ListCollectionsResponse + (*OptimizerStatus)(nil), // 29: qdrant.OptimizerStatus + (*HnswConfigDiff)(nil), // 30: qdrant.HnswConfigDiff + (*SparseIndexConfig)(nil), // 31: qdrant.SparseIndexConfig + (*WalConfigDiff)(nil), // 32: qdrant.WalConfigDiff + (*OptimizersConfigDiff)(nil), // 33: qdrant.OptimizersConfigDiff + (*ScalarQuantization)(nil), // 34: qdrant.ScalarQuantization + (*ProductQuantization)(nil), // 35: qdrant.ProductQuantization + (*BinaryQuantization)(nil), // 36: qdrant.BinaryQuantization + (*QuantizationConfig)(nil), // 37: qdrant.QuantizationConfig + (*Disabled)(nil), // 38: qdrant.Disabled + (*QuantizationConfigDiff)(nil), // 39: qdrant.QuantizationConfigDiff + (*CreateCollection)(nil), // 40: qdrant.CreateCollection + (*UpdateCollection)(nil), // 41: qdrant.UpdateCollection + (*DeleteCollection)(nil), // 42: qdrant.DeleteCollection + (*CollectionOperationResponse)(nil), // 43: qdrant.CollectionOperationResponse + (*CollectionParams)(nil), // 44: qdrant.CollectionParams + (*CollectionParamsDiff)(nil), // 45: qdrant.CollectionParamsDiff + (*CollectionConfig)(nil), // 46: qdrant.CollectionConfig + (*TextIndexParams)(nil), // 47: qdrant.TextIndexParams + (*IntegerIndexParams)(nil), // 48: qdrant.IntegerIndexParams + (*PayloadIndexParams)(nil), // 49: qdrant.PayloadIndexParams + (*PayloadSchemaInfo)(nil), // 50: qdrant.PayloadSchemaInfo + (*CollectionInfo)(nil), // 51: qdrant.CollectionInfo + (*ChangeAliases)(nil), // 52: qdrant.ChangeAliases + (*AliasOperations)(nil), // 53: qdrant.AliasOperations + (*CreateAlias)(nil), // 54: qdrant.CreateAlias + (*RenameAlias)(nil), // 55: qdrant.RenameAlias + (*DeleteAlias)(nil), // 56: qdrant.DeleteAlias + (*ListAliasesRequest)(nil), // 57: qdrant.ListAliasesRequest + (*ListCollectionAliasesRequest)(nil), // 58: qdrant.ListCollectionAliasesRequest + (*AliasDescription)(nil), // 59: qdrant.AliasDescription + (*ListAliasesResponse)(nil), // 60: qdrant.ListAliasesResponse + (*CollectionClusterInfoRequest)(nil), // 61: qdrant.CollectionClusterInfoRequest + (*ShardKey)(nil), // 62: qdrant.ShardKey + (*LocalShardInfo)(nil), // 63: qdrant.LocalShardInfo + (*RemoteShardInfo)(nil), // 64: qdrant.RemoteShardInfo + (*ShardTransferInfo)(nil), // 65: qdrant.ShardTransferInfo + (*CollectionClusterInfoResponse)(nil), // 66: qdrant.CollectionClusterInfoResponse + (*MoveShard)(nil), // 67: qdrant.MoveShard + (*ReplicateShard)(nil), // 68: qdrant.ReplicateShard + (*AbortShardTransfer)(nil), // 69: qdrant.AbortShardTransfer + (*RestartTransfer)(nil), // 70: qdrant.RestartTransfer + (*Replica)(nil), // 71: qdrant.Replica + (*CreateShardKey)(nil), // 72: qdrant.CreateShardKey + (*DeleteShardKey)(nil), // 73: qdrant.DeleteShardKey + (*UpdateCollectionClusterSetupRequest)(nil), // 74: qdrant.UpdateCollectionClusterSetupRequest + (*UpdateCollectionClusterSetupResponse)(nil), // 75: qdrant.UpdateCollectionClusterSetupResponse + (*CreateShardKeyRequest)(nil), // 76: qdrant.CreateShardKeyRequest + (*DeleteShardKeyRequest)(nil), // 77: qdrant.DeleteShardKeyRequest + (*CreateShardKeyResponse)(nil), // 78: qdrant.CreateShardKeyResponse + (*DeleteShardKeyResponse)(nil), // 79: qdrant.DeleteShardKeyResponse + nil, // 80: qdrant.VectorParamsMap.MapEntry + nil, // 81: qdrant.VectorParamsDiffMap.MapEntry + nil, // 82: qdrant.SparseVectorConfig.MapEntry + nil, // 83: qdrant.CollectionInfo.PayloadSchemaEntry } var file_collections_proto_depIdxs = []int32{ - 1, // 0: qdrant.VectorParams.distance:type_name -> qdrant.Distance - 27, // 1: qdrant.VectorParams.hnsw_config:type_name -> qdrant.HnswConfigDiff - 34, // 2: qdrant.VectorParams.quantization_config:type_name -> qdrant.QuantizationConfig + 3, // 0: qdrant.VectorParams.distance:type_name -> qdrant.Distance + 30, // 1: qdrant.VectorParams.hnsw_config:type_name -> qdrant.HnswConfigDiff + 37, // 2: qdrant.VectorParams.quantization_config:type_name -> qdrant.QuantizationConfig 0, // 3: qdrant.VectorParams.datatype:type_name -> qdrant.Datatype - 27, // 4: qdrant.VectorParamsDiff.hnsw_config:type_name -> qdrant.HnswConfigDiff - 36, // 5: qdrant.VectorParamsDiff.quantization_config:type_name -> qdrant.QuantizationConfigDiff - 76, // 6: qdrant.VectorParamsMap.map:type_name -> qdrant.VectorParamsMap.MapEntry - 77, // 7: qdrant.VectorParamsDiffMap.map:type_name -> qdrant.VectorParamsDiffMap.MapEntry - 10, // 8: qdrant.VectorsConfig.params:type_name -> qdrant.VectorParams - 12, // 9: qdrant.VectorsConfig.params_map:type_name -> qdrant.VectorParamsMap - 11, // 10: qdrant.VectorsConfigDiff.params:type_name -> qdrant.VectorParamsDiff - 13, // 11: qdrant.VectorsConfigDiff.params_map:type_name -> qdrant.VectorParamsDiffMap - 28, // 12: qdrant.SparseVectorParams.index:type_name -> qdrant.SparseIndexConfig - 78, // 13: qdrant.SparseVectorConfig.map:type_name -> qdrant.SparseVectorConfig.MapEntry - 20, // 14: qdrant.CollectionExistsResponse.result:type_name -> qdrant.CollectionExists - 48, // 15: qdrant.GetCollectionInfoResponse.result:type_name -> qdrant.CollectionInfo - 23, // 16: qdrant.ListCollectionsResponse.collections:type_name -> qdrant.CollectionDescription - 4, // 17: qdrant.ScalarQuantization.type:type_name -> qdrant.QuantizationType - 5, // 18: qdrant.ProductQuantization.compression:type_name -> qdrant.CompressionRatio - 31, // 19: qdrant.QuantizationConfig.scalar:type_name -> qdrant.ScalarQuantization - 32, // 20: qdrant.QuantizationConfig.product:type_name -> qdrant.ProductQuantization - 33, // 21: qdrant.QuantizationConfig.binary:type_name -> qdrant.BinaryQuantization - 31, // 22: qdrant.QuantizationConfigDiff.scalar:type_name -> qdrant.ScalarQuantization - 32, // 23: qdrant.QuantizationConfigDiff.product:type_name -> qdrant.ProductQuantization - 35, // 24: qdrant.QuantizationConfigDiff.disabled:type_name -> qdrant.Disabled - 33, // 25: qdrant.QuantizationConfigDiff.binary:type_name -> qdrant.BinaryQuantization - 27, // 26: qdrant.CreateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff - 29, // 27: qdrant.CreateCollection.wal_config:type_name -> qdrant.WalConfigDiff - 30, // 28: qdrant.CreateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff - 14, // 29: qdrant.CreateCollection.vectors_config:type_name -> qdrant.VectorsConfig - 34, // 30: qdrant.CreateCollection.quantization_config:type_name -> qdrant.QuantizationConfig - 6, // 31: qdrant.CreateCollection.sharding_method:type_name -> qdrant.ShardingMethod - 17, // 32: qdrant.CreateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 30, // 33: qdrant.UpdateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff - 42, // 34: qdrant.UpdateCollection.params:type_name -> qdrant.CollectionParamsDiff - 27, // 35: qdrant.UpdateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff - 15, // 36: qdrant.UpdateCollection.vectors_config:type_name -> qdrant.VectorsConfigDiff - 36, // 37: qdrant.UpdateCollection.quantization_config:type_name -> qdrant.QuantizationConfigDiff - 17, // 38: qdrant.UpdateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 14, // 39: qdrant.CollectionParams.vectors_config:type_name -> qdrant.VectorsConfig - 6, // 40: qdrant.CollectionParams.sharding_method:type_name -> qdrant.ShardingMethod - 17, // 41: qdrant.CollectionParams.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig - 41, // 42: qdrant.CollectionConfig.params:type_name -> qdrant.CollectionParams - 27, // 43: qdrant.CollectionConfig.hnsw_config:type_name -> qdrant.HnswConfigDiff - 30, // 44: qdrant.CollectionConfig.optimizer_config:type_name -> qdrant.OptimizersConfigDiff - 29, // 45: qdrant.CollectionConfig.wal_config:type_name -> qdrant.WalConfigDiff - 34, // 46: qdrant.CollectionConfig.quantization_config:type_name -> qdrant.QuantizationConfig - 7, // 47: qdrant.TextIndexParams.tokenizer:type_name -> qdrant.TokenizerType - 44, // 48: qdrant.PayloadIndexParams.text_index_params:type_name -> qdrant.TextIndexParams - 45, // 49: qdrant.PayloadIndexParams.integer_index_params:type_name -> qdrant.IntegerIndexParams - 3, // 50: qdrant.PayloadSchemaInfo.data_type:type_name -> qdrant.PayloadSchemaType - 46, // 51: qdrant.PayloadSchemaInfo.params:type_name -> qdrant.PayloadIndexParams - 2, // 52: qdrant.CollectionInfo.status:type_name -> qdrant.CollectionStatus - 26, // 53: qdrant.CollectionInfo.optimizer_status:type_name -> qdrant.OptimizerStatus - 43, // 54: qdrant.CollectionInfo.config:type_name -> qdrant.CollectionConfig - 79, // 55: qdrant.CollectionInfo.payload_schema:type_name -> qdrant.CollectionInfo.PayloadSchemaEntry - 50, // 56: qdrant.ChangeAliases.actions:type_name -> qdrant.AliasOperations - 51, // 57: qdrant.AliasOperations.create_alias:type_name -> qdrant.CreateAlias - 52, // 58: qdrant.AliasOperations.rename_alias:type_name -> qdrant.RenameAlias - 53, // 59: qdrant.AliasOperations.delete_alias:type_name -> qdrant.DeleteAlias - 56, // 60: qdrant.ListAliasesResponse.aliases:type_name -> qdrant.AliasDescription - 8, // 61: qdrant.LocalShardInfo.state:type_name -> qdrant.ReplicaState - 59, // 62: qdrant.LocalShardInfo.shard_key:type_name -> qdrant.ShardKey - 8, // 63: qdrant.RemoteShardInfo.state:type_name -> qdrant.ReplicaState - 59, // 64: qdrant.RemoteShardInfo.shard_key:type_name -> qdrant.ShardKey - 60, // 65: qdrant.CollectionClusterInfoResponse.local_shards:type_name -> qdrant.LocalShardInfo - 61, // 66: qdrant.CollectionClusterInfoResponse.remote_shards:type_name -> qdrant.RemoteShardInfo - 62, // 67: qdrant.CollectionClusterInfoResponse.shard_transfers:type_name -> qdrant.ShardTransferInfo - 9, // 68: qdrant.MoveShard.method:type_name -> qdrant.ShardTransferMethod - 9, // 69: qdrant.RestartTransfer.method:type_name -> qdrant.ShardTransferMethod - 59, // 70: qdrant.CreateShardKey.shard_key:type_name -> qdrant.ShardKey - 59, // 71: qdrant.DeleteShardKey.shard_key:type_name -> qdrant.ShardKey - 64, // 72: qdrant.UpdateCollectionClusterSetupRequest.move_shard:type_name -> qdrant.MoveShard - 64, // 73: qdrant.UpdateCollectionClusterSetupRequest.replicate_shard:type_name -> qdrant.MoveShard - 65, // 74: qdrant.UpdateCollectionClusterSetupRequest.abort_transfer:type_name -> qdrant.AbortShardTransfer - 67, // 75: qdrant.UpdateCollectionClusterSetupRequest.drop_replica:type_name -> qdrant.Replica - 68, // 76: qdrant.UpdateCollectionClusterSetupRequest.create_shard_key:type_name -> qdrant.CreateShardKey - 69, // 77: qdrant.UpdateCollectionClusterSetupRequest.delete_shard_key:type_name -> qdrant.DeleteShardKey - 66, // 78: qdrant.UpdateCollectionClusterSetupRequest.restart_transfer:type_name -> qdrant.RestartTransfer - 68, // 79: qdrant.CreateShardKeyRequest.request:type_name -> qdrant.CreateShardKey - 69, // 80: qdrant.DeleteShardKeyRequest.request:type_name -> qdrant.DeleteShardKey - 10, // 81: qdrant.VectorParamsMap.MapEntry.value:type_name -> qdrant.VectorParams - 11, // 82: qdrant.VectorParamsDiffMap.MapEntry.value:type_name -> qdrant.VectorParamsDiff - 16, // 83: qdrant.SparseVectorConfig.MapEntry.value:type_name -> qdrant.SparseVectorParams - 47, // 84: qdrant.CollectionInfo.PayloadSchemaEntry.value:type_name -> qdrant.PayloadSchemaInfo - 85, // [85:85] is the sub-list for method output_type - 85, // [85:85] is the sub-list for method input_type - 85, // [85:85] is the sub-list for extension type_name - 85, // [85:85] is the sub-list for extension extendee - 0, // [0:85] is the sub-list for field type_name + 20, // 4: qdrant.VectorParams.multivector_config:type_name -> qdrant.MultiVectorConfig + 30, // 5: qdrant.VectorParamsDiff.hnsw_config:type_name -> qdrant.HnswConfigDiff + 39, // 6: qdrant.VectorParamsDiff.quantization_config:type_name -> qdrant.QuantizationConfigDiff + 80, // 7: qdrant.VectorParamsMap.map:type_name -> qdrant.VectorParamsMap.MapEntry + 81, // 8: qdrant.VectorParamsDiffMap.map:type_name -> qdrant.VectorParamsDiffMap.MapEntry + 12, // 9: qdrant.VectorsConfig.params:type_name -> qdrant.VectorParams + 14, // 10: qdrant.VectorsConfig.params_map:type_name -> qdrant.VectorParamsMap + 13, // 11: qdrant.VectorsConfigDiff.params:type_name -> qdrant.VectorParamsDiff + 15, // 12: qdrant.VectorsConfigDiff.params_map:type_name -> qdrant.VectorParamsDiffMap + 31, // 13: qdrant.SparseVectorParams.index:type_name -> qdrant.SparseIndexConfig + 1, // 14: qdrant.SparseVectorParams.modifier:type_name -> qdrant.Modifier + 82, // 15: qdrant.SparseVectorConfig.map:type_name -> qdrant.SparseVectorConfig.MapEntry + 2, // 16: qdrant.MultiVectorConfig.comparator:type_name -> qdrant.MultiVectorComparator + 23, // 17: qdrant.CollectionExistsResponse.result:type_name -> qdrant.CollectionExists + 51, // 18: qdrant.GetCollectionInfoResponse.result:type_name -> qdrant.CollectionInfo + 26, // 19: qdrant.ListCollectionsResponse.collections:type_name -> qdrant.CollectionDescription + 0, // 20: qdrant.SparseIndexConfig.datatype:type_name -> qdrant.Datatype + 6, // 21: qdrant.ScalarQuantization.type:type_name -> qdrant.QuantizationType + 7, // 22: qdrant.ProductQuantization.compression:type_name -> qdrant.CompressionRatio + 34, // 23: qdrant.QuantizationConfig.scalar:type_name -> qdrant.ScalarQuantization + 35, // 24: qdrant.QuantizationConfig.product:type_name -> qdrant.ProductQuantization + 36, // 25: qdrant.QuantizationConfig.binary:type_name -> qdrant.BinaryQuantization + 34, // 26: qdrant.QuantizationConfigDiff.scalar:type_name -> qdrant.ScalarQuantization + 35, // 27: qdrant.QuantizationConfigDiff.product:type_name -> qdrant.ProductQuantization + 38, // 28: qdrant.QuantizationConfigDiff.disabled:type_name -> qdrant.Disabled + 36, // 29: qdrant.QuantizationConfigDiff.binary:type_name -> qdrant.BinaryQuantization + 30, // 30: qdrant.CreateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff + 32, // 31: qdrant.CreateCollection.wal_config:type_name -> qdrant.WalConfigDiff + 33, // 32: qdrant.CreateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff + 16, // 33: qdrant.CreateCollection.vectors_config:type_name -> qdrant.VectorsConfig + 37, // 34: qdrant.CreateCollection.quantization_config:type_name -> qdrant.QuantizationConfig + 8, // 35: qdrant.CreateCollection.sharding_method:type_name -> qdrant.ShardingMethod + 19, // 36: qdrant.CreateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 33, // 37: qdrant.UpdateCollection.optimizers_config:type_name -> qdrant.OptimizersConfigDiff + 45, // 38: qdrant.UpdateCollection.params:type_name -> qdrant.CollectionParamsDiff + 30, // 39: qdrant.UpdateCollection.hnsw_config:type_name -> qdrant.HnswConfigDiff + 17, // 40: qdrant.UpdateCollection.vectors_config:type_name -> qdrant.VectorsConfigDiff + 39, // 41: qdrant.UpdateCollection.quantization_config:type_name -> qdrant.QuantizationConfigDiff + 19, // 42: qdrant.UpdateCollection.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 16, // 43: qdrant.CollectionParams.vectors_config:type_name -> qdrant.VectorsConfig + 8, // 44: qdrant.CollectionParams.sharding_method:type_name -> qdrant.ShardingMethod + 19, // 45: qdrant.CollectionParams.sparse_vectors_config:type_name -> qdrant.SparseVectorConfig + 44, // 46: qdrant.CollectionConfig.params:type_name -> qdrant.CollectionParams + 30, // 47: qdrant.CollectionConfig.hnsw_config:type_name -> qdrant.HnswConfigDiff + 33, // 48: qdrant.CollectionConfig.optimizer_config:type_name -> qdrant.OptimizersConfigDiff + 32, // 49: qdrant.CollectionConfig.wal_config:type_name -> qdrant.WalConfigDiff + 37, // 50: qdrant.CollectionConfig.quantization_config:type_name -> qdrant.QuantizationConfig + 9, // 51: qdrant.TextIndexParams.tokenizer:type_name -> qdrant.TokenizerType + 47, // 52: qdrant.PayloadIndexParams.text_index_params:type_name -> qdrant.TextIndexParams + 48, // 53: qdrant.PayloadIndexParams.integer_index_params:type_name -> qdrant.IntegerIndexParams + 5, // 54: qdrant.PayloadSchemaInfo.data_type:type_name -> qdrant.PayloadSchemaType + 49, // 55: qdrant.PayloadSchemaInfo.params:type_name -> qdrant.PayloadIndexParams + 4, // 56: qdrant.CollectionInfo.status:type_name -> qdrant.CollectionStatus + 29, // 57: qdrant.CollectionInfo.optimizer_status:type_name -> qdrant.OptimizerStatus + 46, // 58: qdrant.CollectionInfo.config:type_name -> qdrant.CollectionConfig + 83, // 59: qdrant.CollectionInfo.payload_schema:type_name -> qdrant.CollectionInfo.PayloadSchemaEntry + 53, // 60: qdrant.ChangeAliases.actions:type_name -> qdrant.AliasOperations + 54, // 61: qdrant.AliasOperations.create_alias:type_name -> qdrant.CreateAlias + 55, // 62: qdrant.AliasOperations.rename_alias:type_name -> qdrant.RenameAlias + 56, // 63: qdrant.AliasOperations.delete_alias:type_name -> qdrant.DeleteAlias + 59, // 64: qdrant.ListAliasesResponse.aliases:type_name -> qdrant.AliasDescription + 10, // 65: qdrant.LocalShardInfo.state:type_name -> qdrant.ReplicaState + 62, // 66: qdrant.LocalShardInfo.shard_key:type_name -> qdrant.ShardKey + 10, // 67: qdrant.RemoteShardInfo.state:type_name -> qdrant.ReplicaState + 62, // 68: qdrant.RemoteShardInfo.shard_key:type_name -> qdrant.ShardKey + 63, // 69: qdrant.CollectionClusterInfoResponse.local_shards:type_name -> qdrant.LocalShardInfo + 64, // 70: qdrant.CollectionClusterInfoResponse.remote_shards:type_name -> qdrant.RemoteShardInfo + 65, // 71: qdrant.CollectionClusterInfoResponse.shard_transfers:type_name -> qdrant.ShardTransferInfo + 11, // 72: qdrant.MoveShard.method:type_name -> qdrant.ShardTransferMethod + 11, // 73: qdrant.ReplicateShard.method:type_name -> qdrant.ShardTransferMethod + 11, // 74: qdrant.RestartTransfer.method:type_name -> qdrant.ShardTransferMethod + 62, // 75: qdrant.CreateShardKey.shard_key:type_name -> qdrant.ShardKey + 62, // 76: qdrant.DeleteShardKey.shard_key:type_name -> qdrant.ShardKey + 67, // 77: qdrant.UpdateCollectionClusterSetupRequest.move_shard:type_name -> qdrant.MoveShard + 68, // 78: qdrant.UpdateCollectionClusterSetupRequest.replicate_shard:type_name -> qdrant.ReplicateShard + 69, // 79: qdrant.UpdateCollectionClusterSetupRequest.abort_transfer:type_name -> qdrant.AbortShardTransfer + 71, // 80: qdrant.UpdateCollectionClusterSetupRequest.drop_replica:type_name -> qdrant.Replica + 72, // 81: qdrant.UpdateCollectionClusterSetupRequest.create_shard_key:type_name -> qdrant.CreateShardKey + 73, // 82: qdrant.UpdateCollectionClusterSetupRequest.delete_shard_key:type_name -> qdrant.DeleteShardKey + 70, // 83: qdrant.UpdateCollectionClusterSetupRequest.restart_transfer:type_name -> qdrant.RestartTransfer + 72, // 84: qdrant.CreateShardKeyRequest.request:type_name -> qdrant.CreateShardKey + 73, // 85: qdrant.DeleteShardKeyRequest.request:type_name -> qdrant.DeleteShardKey + 12, // 86: qdrant.VectorParamsMap.MapEntry.value:type_name -> qdrant.VectorParams + 13, // 87: qdrant.VectorParamsDiffMap.MapEntry.value:type_name -> qdrant.VectorParamsDiff + 18, // 88: qdrant.SparseVectorConfig.MapEntry.value:type_name -> qdrant.SparseVectorParams + 50, // 89: qdrant.CollectionInfo.PayloadSchemaEntry.value:type_name -> qdrant.PayloadSchemaInfo + 90, // [90:90] is the sub-list for method output_type + 90, // [90:90] is the sub-list for method input_type + 90, // [90:90] is the sub-list for extension type_name + 90, // [90:90] is the sub-list for extension extendee + 0, // [0:90] is the sub-list for field type_name } func init() { file_collections_proto_init() } @@ -6117,7 +6463,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCollectionInfoRequest); i { + switch v := v.(*MultiVectorConfig); i { case 0: return &v.state case 1: @@ -6129,7 +6475,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionExistsRequest); i { + switch v := v.(*GetCollectionInfoRequest); i { case 0: return &v.state case 1: @@ -6141,7 +6487,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionExists); i { + switch v := v.(*CollectionExistsRequest); i { case 0: return &v.state case 1: @@ -6153,7 +6499,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionExistsResponse); i { + switch v := v.(*CollectionExists); i { case 0: return &v.state case 1: @@ -6165,7 +6511,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCollectionsRequest); i { + switch v := v.(*CollectionExistsResponse); i { case 0: return &v.state case 1: @@ -6177,7 +6523,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionDescription); i { + switch v := v.(*ListCollectionsRequest); i { case 0: return &v.state case 1: @@ -6189,7 +6535,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCollectionInfoResponse); i { + switch v := v.(*CollectionDescription); i { case 0: return &v.state case 1: @@ -6201,7 +6547,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCollectionsResponse); i { + switch v := v.(*GetCollectionInfoResponse); i { case 0: return &v.state case 1: @@ -6213,7 +6559,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OptimizerStatus); i { + switch v := v.(*ListCollectionsResponse); i { case 0: return &v.state case 1: @@ -6225,7 +6571,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HnswConfigDiff); i { + switch v := v.(*OptimizerStatus); i { case 0: return &v.state case 1: @@ -6237,7 +6583,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SparseIndexConfig); i { + switch v := v.(*HnswConfigDiff); i { case 0: return &v.state case 1: @@ -6249,7 +6595,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WalConfigDiff); i { + switch v := v.(*SparseIndexConfig); i { case 0: return &v.state case 1: @@ -6261,7 +6607,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OptimizersConfigDiff); i { + switch v := v.(*WalConfigDiff); i { case 0: return &v.state case 1: @@ -6273,7 +6619,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScalarQuantization); i { + switch v := v.(*OptimizersConfigDiff); i { case 0: return &v.state case 1: @@ -6285,7 +6631,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductQuantization); i { + switch v := v.(*ScalarQuantization); i { case 0: return &v.state case 1: @@ -6297,7 +6643,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BinaryQuantization); i { + switch v := v.(*ProductQuantization); i { case 0: return &v.state case 1: @@ -6309,7 +6655,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuantizationConfig); i { + switch v := v.(*BinaryQuantization); i { case 0: return &v.state case 1: @@ -6321,7 +6667,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Disabled); i { + switch v := v.(*QuantizationConfig); i { case 0: return &v.state case 1: @@ -6333,7 +6679,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuantizationConfigDiff); i { + switch v := v.(*Disabled); i { case 0: return &v.state case 1: @@ -6345,7 +6691,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateCollection); i { + switch v := v.(*QuantizationConfigDiff); i { case 0: return &v.state case 1: @@ -6357,7 +6703,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCollection); i { + switch v := v.(*CreateCollection); i { case 0: return &v.state case 1: @@ -6369,7 +6715,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteCollection); i { + switch v := v.(*UpdateCollection); i { case 0: return &v.state case 1: @@ -6381,7 +6727,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionOperationResponse); i { + switch v := v.(*DeleteCollection); i { case 0: return &v.state case 1: @@ -6393,7 +6739,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionParams); i { + switch v := v.(*CollectionOperationResponse); i { case 0: return &v.state case 1: @@ -6405,7 +6751,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionParamsDiff); i { + switch v := v.(*CollectionParams); i { case 0: return &v.state case 1: @@ -6417,7 +6763,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionConfig); i { + switch v := v.(*CollectionParamsDiff); i { case 0: return &v.state case 1: @@ -6429,7 +6775,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TextIndexParams); i { + switch v := v.(*CollectionConfig); i { case 0: return &v.state case 1: @@ -6441,7 +6787,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IntegerIndexParams); i { + switch v := v.(*TextIndexParams); i { case 0: return &v.state case 1: @@ -6453,7 +6799,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadIndexParams); i { + switch v := v.(*IntegerIndexParams); i { case 0: return &v.state case 1: @@ -6465,7 +6811,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadSchemaInfo); i { + switch v := v.(*PayloadIndexParams); i { case 0: return &v.state case 1: @@ -6477,7 +6823,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionInfo); i { + switch v := v.(*PayloadSchemaInfo); i { case 0: return &v.state case 1: @@ -6489,7 +6835,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeAliases); i { + switch v := v.(*CollectionInfo); i { case 0: return &v.state case 1: @@ -6501,7 +6847,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AliasOperations); i { + switch v := v.(*ChangeAliases); i { case 0: return &v.state case 1: @@ -6513,7 +6859,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlias); i { + switch v := v.(*AliasOperations); i { case 0: return &v.state case 1: @@ -6525,7 +6871,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenameAlias); i { + switch v := v.(*CreateAlias); i { case 0: return &v.state case 1: @@ -6537,7 +6883,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAlias); i { + switch v := v.(*RenameAlias); i { case 0: return &v.state case 1: @@ -6549,7 +6895,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAliasesRequest); i { + switch v := v.(*DeleteAlias); i { case 0: return &v.state case 1: @@ -6561,7 +6907,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListCollectionAliasesRequest); i { + switch v := v.(*ListAliasesRequest); i { case 0: return &v.state case 1: @@ -6573,7 +6919,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AliasDescription); i { + switch v := v.(*ListCollectionAliasesRequest); i { case 0: return &v.state case 1: @@ -6585,7 +6931,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAliasesResponse); i { + switch v := v.(*AliasDescription); i { case 0: return &v.state case 1: @@ -6597,7 +6943,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionClusterInfoRequest); i { + switch v := v.(*ListAliasesResponse); i { case 0: return &v.state case 1: @@ -6609,7 +6955,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardKey); i { + switch v := v.(*CollectionClusterInfoRequest); i { case 0: return &v.state case 1: @@ -6621,7 +6967,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalShardInfo); i { + switch v := v.(*ShardKey); i { case 0: return &v.state case 1: @@ -6633,7 +6979,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoteShardInfo); i { + switch v := v.(*LocalShardInfo); i { case 0: return &v.state case 1: @@ -6645,7 +6991,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardTransferInfo); i { + switch v := v.(*RemoteShardInfo); i { case 0: return &v.state case 1: @@ -6657,7 +7003,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectionClusterInfoResponse); i { + switch v := v.(*ShardTransferInfo); i { case 0: return &v.state case 1: @@ -6669,7 +7015,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MoveShard); i { + switch v := v.(*CollectionClusterInfoResponse); i { case 0: return &v.state case 1: @@ -6681,7 +7027,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortShardTransfer); i { + switch v := v.(*MoveShard); i { case 0: return &v.state case 1: @@ -6693,7 +7039,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestartTransfer); i { + switch v := v.(*ReplicateShard); i { case 0: return &v.state case 1: @@ -6705,7 +7051,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Replica); i { + switch v := v.(*AbortShardTransfer); i { case 0: return &v.state case 1: @@ -6717,7 +7063,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateShardKey); i { + switch v := v.(*RestartTransfer); i { case 0: return &v.state case 1: @@ -6729,7 +7075,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteShardKey); i { + switch v := v.(*Replica); i { case 0: return &v.state case 1: @@ -6741,7 +7087,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCollectionClusterSetupRequest); i { + switch v := v.(*CreateShardKey); i { case 0: return &v.state case 1: @@ -6753,7 +7099,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCollectionClusterSetupResponse); i { + switch v := v.(*DeleteShardKey); i { case 0: return &v.state case 1: @@ -6765,7 +7111,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateShardKeyRequest); i { + switch v := v.(*UpdateCollectionClusterSetupRequest); i { case 0: return &v.state case 1: @@ -6777,7 +7123,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteShardKeyRequest); i { + switch v := v.(*UpdateCollectionClusterSetupResponse); i { case 0: return &v.state case 1: @@ -6789,7 +7135,7 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateShardKeyResponse); i { + switch v := v.(*CreateShardKeyRequest); i { case 0: return &v.state case 1: @@ -6801,6 +7147,30 @@ func file_collections_proto_init() { } } file_collections_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteShardKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_collections_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateShardKeyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_collections_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteShardKeyResponse); i { case 0: return &v.state @@ -6824,52 +7194,56 @@ func file_collections_proto_init() { (*VectorsConfigDiff_ParamsMap)(nil), } file_collections_proto_msgTypes[6].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[17].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[18].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[19].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[20].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[21].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[22].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[23].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[24].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[24].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[25].OneofWrappers = []interface{}{ (*QuantizationConfig_Scalar)(nil), (*QuantizationConfig_Product)(nil), (*QuantizationConfig_Binary)(nil), } - file_collections_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[27].OneofWrappers = []interface{}{ (*QuantizationConfigDiff_Scalar)(nil), (*QuantizationConfigDiff_Product)(nil), (*QuantizationConfigDiff_Disabled)(nil), (*QuantizationConfigDiff_Binary)(nil), } - file_collections_proto_msgTypes[27].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[28].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[29].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[31].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[30].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[32].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[33].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[34].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[36].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[35].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[37].OneofWrappers = []interface{}{ (*PayloadIndexParams_TextIndexParams)(nil), (*PayloadIndexParams_IntegerIndexParams)(nil), } - file_collections_proto_msgTypes[37].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[38].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[39].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[40].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[40].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[41].OneofWrappers = []interface{}{ (*AliasOperations_CreateAlias)(nil), (*AliasOperations_RenameAlias)(nil), (*AliasOperations_DeleteAlias)(nil), } - file_collections_proto_msgTypes[49].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[50].OneofWrappers = []interface{}{ (*ShardKey_Keyword)(nil), (*ShardKey_Number)(nil), } - file_collections_proto_msgTypes[50].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[51].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[54].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[52].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[53].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[55].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[56].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[57].OneofWrappers = []interface{}{} file_collections_proto_msgTypes[58].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[60].OneofWrappers = []interface{}{ + file_collections_proto_msgTypes[60].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[62].OneofWrappers = []interface{}{ (*UpdateCollectionClusterSetupRequest_MoveShard)(nil), (*UpdateCollectionClusterSetupRequest_ReplicateShard)(nil), (*UpdateCollectionClusterSetupRequest_AbortTransfer)(nil), @@ -6878,15 +7252,15 @@ func file_collections_proto_init() { (*UpdateCollectionClusterSetupRequest_DeleteShardKey)(nil), (*UpdateCollectionClusterSetupRequest_RestartTransfer)(nil), } - file_collections_proto_msgTypes[62].OneofWrappers = []interface{}{} - file_collections_proto_msgTypes[63].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[64].OneofWrappers = []interface{}{} + file_collections_proto_msgTypes[65].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_collections_proto_rawDesc, - NumEnums: 10, - NumMessages: 70, + NumEnums: 12, + NumMessages: 72, NumExtensions: 0, NumServices: 0, }, diff --git a/qdrant/collections_service.pb.go b/qdrant/collections_service.pb.go index b43dcc0..2eed4af 100644 --- a/qdrant/collections_service.pb.go +++ b/qdrant/collections_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: collections_service.proto package go_client diff --git a/qdrant/collections_service_grpc.pb.go b/qdrant/collections_service_grpc.pb.go index 5696871..dfa0499 100644 --- a/qdrant/collections_service_grpc.pb.go +++ b/qdrant/collections_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc v4.22.2 // source: collections_service.proto package go_client diff --git a/qdrant/json_with_int.pb.go b/qdrant/json_with_int.pb.go index b001fcb..015f7a0 100644 --- a/qdrant/json_with_int.pb.go +++ b/qdrant/json_with_int.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: json_with_int.proto package go_client diff --git a/qdrant/points.pb.go b/qdrant/points.pb.go index c20c48b..cdd726f 100644 --- a/qdrant/points.pb.go +++ b/qdrant/points.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: points.proto package go_client @@ -226,7 +226,7 @@ func (Direction) EnumDescriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{3} } -// How to use positive and negative vectors to find the results, default is `AverageVector`: +// How to use positive and negative vectors to find the results, default is `AverageVector`. type RecommendStrategy int32 const ( @@ -278,6 +278,49 @@ func (RecommendStrategy) EnumDescriptor() ([]byte, []int) { return file_points_proto_rawDescGZIP(), []int{4} } +type Fusion int32 + +const ( + Fusion_RRF Fusion = 0 // Reciprocal Rank Fusion +) + +// Enum value maps for Fusion. +var ( + Fusion_name = map[int32]string{ + 0: "RRF", + } + Fusion_value = map[string]int32{ + "RRF": 0, + } +) + +func (x Fusion) Enum() *Fusion { + p := new(Fusion) + *p = x + return p +} + +func (x Fusion) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Fusion) Descriptor() protoreflect.EnumDescriptor { + return file_points_proto_enumTypes[5].Descriptor() +} + +func (Fusion) Type() protoreflect.EnumType { + return &file_points_proto_enumTypes[5] +} + +func (x Fusion) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Fusion.Descriptor instead. +func (Fusion) EnumDescriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{5} +} + type UpdateStatus int32 const ( @@ -314,11 +357,11 @@ func (x UpdateStatus) String() string { } func (UpdateStatus) Descriptor() protoreflect.EnumDescriptor { - return file_points_proto_enumTypes[5].Descriptor() + return file_points_proto_enumTypes[6].Descriptor() } func (UpdateStatus) Type() protoreflect.EnumType { - return &file_points_proto_enumTypes[5] + return &file_points_proto_enumTypes[6] } func (x UpdateStatus) Number() protoreflect.EnumNumber { @@ -327,7 +370,7 @@ func (x UpdateStatus) Number() protoreflect.EnumNumber { // Deprecated: Use UpdateStatus.Descriptor instead. func (UpdateStatus) EnumDescriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{5} + return file_points_proto_rawDescGZIP(), []int{6} } type WriteOrdering struct { @@ -586,13 +629,15 @@ func (x *SparseIndices) GetData() []uint32 { return nil } +// Legacy vector format, which determines the vector type by the configuration of its fields. type Vector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` - Indices *SparseIndices `protobuf:"bytes,2,opt,name=indices,proto3,oneof" json:"indices,omitempty"` + Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` // Vector data (flatten for multi vectors) + Indices *SparseIndices `protobuf:"bytes,2,opt,name=indices,proto3,oneof" json:"indices,omitempty"` // Sparse indices for sparse vectors + VectorsCount *uint32 `protobuf:"varint,3,opt,name=vectors_count,json=vectorsCount,proto3,oneof" json:"vectors_count,omitempty"` // Number of vectors per multi vector } func (x *Vector) Reset() { @@ -641,9 +686,272 @@ func (x *Vector) GetIndices() *SparseIndices { return nil } -// --------------------------------------------- -// ----------------- ShardKeySelector ---------- -// --------------------------------------------- +func (x *Vector) GetVectorsCount() uint32 { + if x != nil && x.VectorsCount != nil { + return *x.VectorsCount + } + return 0 +} + +type DenseVector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []float32 `protobuf:"fixed32,1,rep,packed,name=data,proto3" json:"data,omitempty"` +} + +func (x *DenseVector) Reset() { + *x = DenseVector{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DenseVector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DenseVector) ProtoMessage() {} + +func (x *DenseVector) ProtoReflect() protoreflect.Message { + mi := &file_points_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 DenseVector.ProtoReflect.Descriptor instead. +func (*DenseVector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{5} +} + +func (x *DenseVector) GetData() []float32 { + if x != nil { + return x.Data + } + return nil +} + +type SparseVector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Values []float32 `protobuf:"fixed32,1,rep,packed,name=values,proto3" json:"values,omitempty"` + Indices []uint32 `protobuf:"varint,2,rep,packed,name=indices,proto3" json:"indices,omitempty"` +} + +func (x *SparseVector) Reset() { + *x = SparseVector{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SparseVector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SparseVector) ProtoMessage() {} + +func (x *SparseVector) ProtoReflect() protoreflect.Message { + mi := &file_points_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 SparseVector.ProtoReflect.Descriptor instead. +func (*SparseVector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{6} +} + +func (x *SparseVector) GetValues() []float32 { + if x != nil { + return x.Values + } + return nil +} + +func (x *SparseVector) GetIndices() []uint32 { + if x != nil { + return x.Indices + } + return nil +} + +type MultiDenseVector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Vectors []*DenseVector `protobuf:"bytes,1,rep,name=vectors,proto3" json:"vectors,omitempty"` +} + +func (x *MultiDenseVector) Reset() { + *x = MultiDenseVector{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiDenseVector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiDenseVector) ProtoMessage() {} + +func (x *MultiDenseVector) ProtoReflect() protoreflect.Message { + mi := &file_points_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 MultiDenseVector.ProtoReflect.Descriptor instead. +func (*MultiDenseVector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{7} +} + +func (x *MultiDenseVector) GetVectors() []*DenseVector { + if x != nil { + return x.Vectors + } + return nil +} + +// Vector type to be used in queries. Ids will be substituted with their corresponding vectors from the collection. +type VectorInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Variant: + // + // *VectorInput_Id + // *VectorInput_Dense + // *VectorInput_Sparse + // *VectorInput_MultiDense + Variant isVectorInput_Variant `protobuf_oneof:"variant"` +} + +func (x *VectorInput) Reset() { + *x = VectorInput{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VectorInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VectorInput) ProtoMessage() {} + +func (x *VectorInput) ProtoReflect() protoreflect.Message { + mi := &file_points_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 VectorInput.ProtoReflect.Descriptor instead. +func (*VectorInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{8} +} + +func (m *VectorInput) GetVariant() isVectorInput_Variant { + if m != nil { + return m.Variant + } + return nil +} + +func (x *VectorInput) GetId() *PointId { + if x, ok := x.GetVariant().(*VectorInput_Id); ok { + return x.Id + } + return nil +} + +func (x *VectorInput) GetDense() *DenseVector { + if x, ok := x.GetVariant().(*VectorInput_Dense); ok { + return x.Dense + } + return nil +} + +func (x *VectorInput) GetSparse() *SparseVector { + if x, ok := x.GetVariant().(*VectorInput_Sparse); ok { + return x.Sparse + } + return nil +} + +func (x *VectorInput) GetMultiDense() *MultiDenseVector { + if x, ok := x.GetVariant().(*VectorInput_MultiDense); ok { + return x.MultiDense + } + return nil +} + +type isVectorInput_Variant interface { + isVectorInput_Variant() +} + +type VectorInput_Id struct { + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type VectorInput_Dense struct { + Dense *DenseVector `protobuf:"bytes,2,opt,name=dense,proto3,oneof"` +} + +type VectorInput_Sparse struct { + Sparse *SparseVector `protobuf:"bytes,3,opt,name=sparse,proto3,oneof"` +} + +type VectorInput_MultiDense struct { + MultiDense *MultiDenseVector `protobuf:"bytes,4,opt,name=multi_dense,json=multiDense,proto3,oneof"` +} + +func (*VectorInput_Id) isVectorInput_Variant() {} + +func (*VectorInput_Dense) isVectorInput_Variant() {} + +func (*VectorInput_Sparse) isVectorInput_Variant() {} + +func (*VectorInput_MultiDense) isVectorInput_Variant() {} + type ShardKeySelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -655,7 +963,7 @@ type ShardKeySelector struct { func (x *ShardKeySelector) Reset() { *x = ShardKeySelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[5] + mi := &file_points_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -668,7 +976,7 @@ func (x *ShardKeySelector) String() string { func (*ShardKeySelector) ProtoMessage() {} func (x *ShardKeySelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[5] + mi := &file_points_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -681,7 +989,7 @@ func (x *ShardKeySelector) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardKeySelector.ProtoReflect.Descriptor instead. func (*ShardKeySelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{5} + return file_points_proto_rawDescGZIP(), []int{9} } func (x *ShardKeySelector) GetShardKeys() []*ShardKey { @@ -706,7 +1014,7 @@ type UpsertPoints struct { func (x *UpsertPoints) Reset() { *x = UpsertPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[6] + mi := &file_points_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -719,7 +1027,7 @@ func (x *UpsertPoints) String() string { func (*UpsertPoints) ProtoMessage() {} func (x *UpsertPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[6] + mi := &file_points_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -732,7 +1040,7 @@ func (x *UpsertPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertPoints.ProtoReflect.Descriptor instead. func (*UpsertPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{6} + return file_points_proto_rawDescGZIP(), []int{10} } func (x *UpsertPoints) GetCollectionName() string { @@ -785,7 +1093,7 @@ type DeletePoints struct { func (x *DeletePoints) Reset() { *x = DeletePoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[7] + mi := &file_points_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -798,7 +1106,7 @@ func (x *DeletePoints) String() string { func (*DeletePoints) ProtoMessage() {} func (x *DeletePoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[7] + mi := &file_points_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -811,7 +1119,7 @@ func (x *DeletePoints) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePoints.ProtoReflect.Descriptor instead. func (*DeletePoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{7} + return file_points_proto_rawDescGZIP(), []int{11} } func (x *DeletePoints) GetCollectionName() string { @@ -865,7 +1173,7 @@ type GetPoints struct { func (x *GetPoints) Reset() { *x = GetPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[8] + mi := &file_points_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -878,7 +1186,7 @@ func (x *GetPoints) String() string { func (*GetPoints) ProtoMessage() {} func (x *GetPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[8] + mi := &file_points_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -891,7 +1199,7 @@ func (x *GetPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPoints.ProtoReflect.Descriptor instead. func (*GetPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{8} + return file_points_proto_rawDescGZIP(), []int{12} } func (x *GetPoints) GetCollectionName() string { @@ -951,7 +1259,7 @@ type UpdatePointVectors struct { func (x *UpdatePointVectors) Reset() { *x = UpdatePointVectors{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[9] + mi := &file_points_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -964,7 +1272,7 @@ func (x *UpdatePointVectors) String() string { func (*UpdatePointVectors) ProtoMessage() {} func (x *UpdatePointVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[9] + mi := &file_points_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -977,7 +1285,7 @@ func (x *UpdatePointVectors) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePointVectors.ProtoReflect.Descriptor instead. func (*UpdatePointVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{9} + return file_points_proto_rawDescGZIP(), []int{13} } func (x *UpdatePointVectors) GetCollectionName() string { @@ -1027,7 +1335,7 @@ type PointVectors struct { func (x *PointVectors) Reset() { *x = PointVectors{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[10] + mi := &file_points_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1040,7 +1348,7 @@ func (x *PointVectors) String() string { func (*PointVectors) ProtoMessage() {} func (x *PointVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[10] + mi := &file_points_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1053,7 +1361,7 @@ func (x *PointVectors) ProtoReflect() protoreflect.Message { // Deprecated: Use PointVectors.ProtoReflect.Descriptor instead. func (*PointVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{10} + return file_points_proto_rawDescGZIP(), []int{14} } func (x *PointVectors) GetId() *PointId { @@ -1086,7 +1394,7 @@ type DeletePointVectors struct { func (x *DeletePointVectors) Reset() { *x = DeletePointVectors{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[11] + mi := &file_points_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1099,7 +1407,7 @@ func (x *DeletePointVectors) String() string { func (*DeletePointVectors) ProtoMessage() {} func (x *DeletePointVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[11] + mi := &file_points_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1112,7 +1420,7 @@ func (x *DeletePointVectors) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePointVectors.ProtoReflect.Descriptor instead. func (*DeletePointVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{11} + return file_points_proto_rawDescGZIP(), []int{15} } func (x *DeletePointVectors) GetCollectionName() string { @@ -1174,7 +1482,7 @@ type SetPayloadPoints struct { func (x *SetPayloadPoints) Reset() { *x = SetPayloadPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[12] + mi := &file_points_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1187,7 +1495,7 @@ func (x *SetPayloadPoints) String() string { func (*SetPayloadPoints) ProtoMessage() {} func (x *SetPayloadPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[12] + mi := &file_points_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1200,7 +1508,7 @@ func (x *SetPayloadPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPayloadPoints.ProtoReflect.Descriptor instead. func (*SetPayloadPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{12} + return file_points_proto_rawDescGZIP(), []int{16} } func (x *SetPayloadPoints) GetCollectionName() string { @@ -1268,7 +1576,7 @@ type DeletePayloadPoints struct { func (x *DeletePayloadPoints) Reset() { *x = DeletePayloadPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[13] + mi := &file_points_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1281,7 +1589,7 @@ func (x *DeletePayloadPoints) String() string { func (*DeletePayloadPoints) ProtoMessage() {} func (x *DeletePayloadPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[13] + mi := &file_points_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1294,7 +1602,7 @@ func (x *DeletePayloadPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePayloadPoints.ProtoReflect.Descriptor instead. func (*DeletePayloadPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{13} + return file_points_proto_rawDescGZIP(), []int{17} } func (x *DeletePayloadPoints) GetCollectionName() string { @@ -1354,7 +1662,7 @@ type ClearPayloadPoints struct { func (x *ClearPayloadPoints) Reset() { *x = ClearPayloadPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[14] + mi := &file_points_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1367,7 +1675,7 @@ func (x *ClearPayloadPoints) String() string { func (*ClearPayloadPoints) ProtoMessage() {} func (x *ClearPayloadPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[14] + mi := &file_points_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1380,7 +1688,7 @@ func (x *ClearPayloadPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use ClearPayloadPoints.ProtoReflect.Descriptor instead. func (*ClearPayloadPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{14} + return file_points_proto_rawDescGZIP(), []int{18} } func (x *ClearPayloadPoints) GetCollectionName() string { @@ -1434,7 +1742,7 @@ type CreateFieldIndexCollection struct { func (x *CreateFieldIndexCollection) Reset() { *x = CreateFieldIndexCollection{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[15] + mi := &file_points_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1447,7 +1755,7 @@ func (x *CreateFieldIndexCollection) String() string { func (*CreateFieldIndexCollection) ProtoMessage() {} func (x *CreateFieldIndexCollection) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[15] + mi := &file_points_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1460,7 +1768,7 @@ func (x *CreateFieldIndexCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFieldIndexCollection.ProtoReflect.Descriptor instead. func (*CreateFieldIndexCollection) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{15} + return file_points_proto_rawDescGZIP(), []int{19} } func (x *CreateFieldIndexCollection) GetCollectionName() string { @@ -1519,7 +1827,7 @@ type DeleteFieldIndexCollection struct { func (x *DeleteFieldIndexCollection) Reset() { *x = DeleteFieldIndexCollection{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[16] + mi := &file_points_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1532,7 +1840,7 @@ func (x *DeleteFieldIndexCollection) String() string { func (*DeleteFieldIndexCollection) ProtoMessage() {} func (x *DeleteFieldIndexCollection) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[16] + mi := &file_points_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1545,7 +1853,7 @@ func (x *DeleteFieldIndexCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFieldIndexCollection.ProtoReflect.Descriptor instead. func (*DeleteFieldIndexCollection) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{16} + return file_points_proto_rawDescGZIP(), []int{20} } func (x *DeleteFieldIndexCollection) GetCollectionName() string { @@ -1587,7 +1895,7 @@ type PayloadIncludeSelector struct { func (x *PayloadIncludeSelector) Reset() { *x = PayloadIncludeSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[17] + mi := &file_points_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1600,7 +1908,7 @@ func (x *PayloadIncludeSelector) String() string { func (*PayloadIncludeSelector) ProtoMessage() {} func (x *PayloadIncludeSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[17] + mi := &file_points_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1613,7 +1921,7 @@ func (x *PayloadIncludeSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadIncludeSelector.ProtoReflect.Descriptor instead. func (*PayloadIncludeSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{17} + return file_points_proto_rawDescGZIP(), []int{21} } func (x *PayloadIncludeSelector) GetFields() []string { @@ -1634,7 +1942,7 @@ type PayloadExcludeSelector struct { func (x *PayloadExcludeSelector) Reset() { *x = PayloadExcludeSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[18] + mi := &file_points_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1647,7 +1955,7 @@ func (x *PayloadExcludeSelector) String() string { func (*PayloadExcludeSelector) ProtoMessage() {} func (x *PayloadExcludeSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[18] + mi := &file_points_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1660,7 +1968,7 @@ func (x *PayloadExcludeSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadExcludeSelector.ProtoReflect.Descriptor instead. func (*PayloadExcludeSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{18} + return file_points_proto_rawDescGZIP(), []int{22} } func (x *PayloadExcludeSelector) GetFields() []string { @@ -1686,7 +1994,7 @@ type WithPayloadSelector struct { func (x *WithPayloadSelector) Reset() { *x = WithPayloadSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[19] + mi := &file_points_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1699,7 +2007,7 @@ func (x *WithPayloadSelector) String() string { func (*WithPayloadSelector) ProtoMessage() {} func (x *WithPayloadSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[19] + mi := &file_points_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1712,7 +2020,7 @@ func (x *WithPayloadSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use WithPayloadSelector.ProtoReflect.Descriptor instead. func (*WithPayloadSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{19} + return file_points_proto_rawDescGZIP(), []int{23} } func (m *WithPayloadSelector) GetSelectorOptions() isWithPayloadSelector_SelectorOptions { @@ -1776,7 +2084,7 @@ type NamedVectors struct { func (x *NamedVectors) Reset() { *x = NamedVectors{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[20] + mi := &file_points_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1789,7 +2097,7 @@ func (x *NamedVectors) String() string { func (*NamedVectors) ProtoMessage() {} func (x *NamedVectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[20] + mi := &file_points_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1802,7 +2110,7 @@ func (x *NamedVectors) ProtoReflect() protoreflect.Message { // Deprecated: Use NamedVectors.ProtoReflect.Descriptor instead. func (*NamedVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{20} + return file_points_proto_rawDescGZIP(), []int{24} } func (x *NamedVectors) GetVectors() map[string]*Vector { @@ -1827,7 +2135,7 @@ type Vectors struct { func (x *Vectors) Reset() { *x = Vectors{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[21] + mi := &file_points_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1840,7 +2148,7 @@ func (x *Vectors) String() string { func (*Vectors) ProtoMessage() {} func (x *Vectors) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[21] + mi := &file_points_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1853,7 +2161,7 @@ func (x *Vectors) ProtoReflect() protoreflect.Message { // Deprecated: Use Vectors.ProtoReflect.Descriptor instead. func (*Vectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{21} + return file_points_proto_rawDescGZIP(), []int{25} } func (m *Vectors) GetVectorsOptions() isVectors_VectorsOptions { @@ -1904,7 +2212,7 @@ type VectorsSelector struct { func (x *VectorsSelector) Reset() { *x = VectorsSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[22] + mi := &file_points_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1917,7 +2225,7 @@ func (x *VectorsSelector) String() string { func (*VectorsSelector) ProtoMessage() {} func (x *VectorsSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[22] + mi := &file_points_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1930,7 +2238,7 @@ func (x *VectorsSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use VectorsSelector.ProtoReflect.Descriptor instead. func (*VectorsSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{22} + return file_points_proto_rawDescGZIP(), []int{26} } func (x *VectorsSelector) GetNames() []string { @@ -1955,7 +2263,7 @@ type WithVectorsSelector struct { func (x *WithVectorsSelector) Reset() { *x = WithVectorsSelector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[23] + mi := &file_points_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1968,7 +2276,7 @@ func (x *WithVectorsSelector) String() string { func (*WithVectorsSelector) ProtoMessage() {} func (x *WithVectorsSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[23] + mi := &file_points_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1981,7 +2289,7 @@ func (x *WithVectorsSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use WithVectorsSelector.ProtoReflect.Descriptor instead. func (*WithVectorsSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{23} + return file_points_proto_rawDescGZIP(), []int{27} } func (m *WithVectorsSelector) GetSelectorOptions() isWithVectorsSelector_SelectorOptions { @@ -2043,7 +2351,7 @@ type QuantizationSearchParams struct { func (x *QuantizationSearchParams) Reset() { *x = QuantizationSearchParams{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[24] + mi := &file_points_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2056,7 +2364,7 @@ func (x *QuantizationSearchParams) String() string { func (*QuantizationSearchParams) ProtoMessage() {} func (x *QuantizationSearchParams) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[24] + mi := &file_points_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2069,7 +2377,7 @@ func (x *QuantizationSearchParams) ProtoReflect() protoreflect.Message { // Deprecated: Use QuantizationSearchParams.ProtoReflect.Descriptor instead. func (*QuantizationSearchParams) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{24} + return file_points_proto_rawDescGZIP(), []int{28} } func (x *QuantizationSearchParams) GetIgnore() bool { @@ -2114,7 +2422,7 @@ type SearchParams struct { func (x *SearchParams) Reset() { *x = SearchParams{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[25] + mi := &file_points_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2127,7 +2435,7 @@ func (x *SearchParams) String() string { func (*SearchParams) ProtoMessage() {} func (x *SearchParams) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[25] + mi := &file_points_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2140,7 +2448,7 @@ func (x *SearchParams) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchParams.ProtoReflect.Descriptor instead. func (*SearchParams) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{25} + return file_points_proto_rawDescGZIP(), []int{29} } func (x *SearchParams) GetHnswEf() uint64 { @@ -2195,7 +2503,7 @@ type SearchPoints struct { func (x *SearchPoints) Reset() { *x = SearchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[26] + mi := &file_points_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2208,7 +2516,7 @@ func (x *SearchPoints) String() string { func (*SearchPoints) ProtoMessage() {} func (x *SearchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[26] + mi := &file_points_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2221,7 +2529,7 @@ func (x *SearchPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchPoints.ProtoReflect.Descriptor instead. func (*SearchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{26} + return file_points_proto_rawDescGZIP(), []int{30} } func (x *SearchPoints) GetCollectionName() string { @@ -2336,7 +2644,7 @@ type SearchBatchPoints struct { func (x *SearchBatchPoints) Reset() { *x = SearchBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[27] + mi := &file_points_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2349,7 +2657,7 @@ func (x *SearchBatchPoints) String() string { func (*SearchBatchPoints) ProtoMessage() {} func (x *SearchBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[27] + mi := &file_points_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2362,7 +2670,7 @@ func (x *SearchBatchPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchBatchPoints.ProtoReflect.Descriptor instead. func (*SearchBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{27} + return file_points_proto_rawDescGZIP(), []int{31} } func (x *SearchBatchPoints) GetCollectionName() string { @@ -2406,7 +2714,7 @@ type WithLookup struct { func (x *WithLookup) Reset() { *x = WithLookup{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[28] + mi := &file_points_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2419,7 +2727,7 @@ func (x *WithLookup) String() string { func (*WithLookup) ProtoMessage() {} func (x *WithLookup) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[28] + mi := &file_points_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2432,7 +2740,7 @@ func (x *WithLookup) ProtoReflect() protoreflect.Message { // Deprecated: Use WithLookup.ProtoReflect.Descriptor instead. func (*WithLookup) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{28} + return file_points_proto_rawDescGZIP(), []int{32} } func (x *WithLookup) GetCollection() string { @@ -2482,7 +2790,7 @@ type SearchPointGroups struct { func (x *SearchPointGroups) Reset() { *x = SearchPointGroups{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[29] + mi := &file_points_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2495,7 +2803,7 @@ func (x *SearchPointGroups) String() string { func (*SearchPointGroups) ProtoMessage() {} func (x *SearchPointGroups) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[29] + mi := &file_points_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2508,7 +2816,7 @@ func (x *SearchPointGroups) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchPointGroups.ProtoReflect.Descriptor instead. func (*SearchPointGroups) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{29} + return file_points_proto_rawDescGZIP(), []int{33} } func (x *SearchPointGroups) GetCollectionName() string { @@ -2640,7 +2948,7 @@ type StartFrom struct { func (x *StartFrom) Reset() { *x = StartFrom{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[30] + mi := &file_points_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2653,7 +2961,7 @@ func (x *StartFrom) String() string { func (*StartFrom) ProtoMessage() {} func (x *StartFrom) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[30] + mi := &file_points_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2666,7 +2974,7 @@ func (x *StartFrom) ProtoReflect() protoreflect.Message { // Deprecated: Use StartFrom.ProtoReflect.Descriptor instead. func (*StartFrom) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{30} + return file_points_proto_rawDescGZIP(), []int{34} } func (m *StartFrom) GetValue() isStartFrom_Value { @@ -2745,7 +3053,7 @@ type OrderBy struct { func (x *OrderBy) Reset() { *x = OrderBy{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[31] + mi := &file_points_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2758,7 +3066,7 @@ func (x *OrderBy) String() string { func (*OrderBy) ProtoMessage() {} func (x *OrderBy) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[31] + mi := &file_points_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2771,7 +3079,7 @@ func (x *OrderBy) ProtoReflect() protoreflect.Message { // Deprecated: Use OrderBy.ProtoReflect.Descriptor instead. func (*OrderBy) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{31} + return file_points_proto_rawDescGZIP(), []int{35} } func (x *OrderBy) GetKey() string { @@ -2814,7 +3122,7 @@ type ScrollPoints struct { func (x *ScrollPoints) Reset() { *x = ScrollPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[32] + mi := &file_points_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +3135,7 @@ func (x *ScrollPoints) String() string { func (*ScrollPoints) ProtoMessage() {} func (x *ScrollPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[32] + mi := &file_points_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,7 +3148,7 @@ func (x *ScrollPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use ScrollPoints.ProtoReflect.Descriptor instead. func (*ScrollPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{32} + return file_points_proto_rawDescGZIP(), []int{36} } func (x *ScrollPoints) GetCollectionName() string { @@ -2919,7 +3227,7 @@ type LookupLocation struct { func (x *LookupLocation) Reset() { *x = LookupLocation{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[33] + mi := &file_points_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2932,7 +3240,7 @@ func (x *LookupLocation) String() string { func (*LookupLocation) ProtoMessage() {} func (x *LookupLocation) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[33] + mi := &file_points_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2945,7 +3253,7 @@ func (x *LookupLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupLocation.ProtoReflect.Descriptor instead. func (*LookupLocation) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{33} + return file_points_proto_rawDescGZIP(), []int{37} } func (x *LookupLocation) GetCollectionName() string { @@ -2997,7 +3305,7 @@ type RecommendPoints struct { func (x *RecommendPoints) Reset() { *x = RecommendPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[34] + mi := &file_points_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3010,7 +3318,7 @@ func (x *RecommendPoints) String() string { func (*RecommendPoints) ProtoMessage() {} func (x *RecommendPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[34] + mi := &file_points_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3023,7 +3331,7 @@ func (x *RecommendPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use RecommendPoints.ProtoReflect.Descriptor instead. func (*RecommendPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{34} + return file_points_proto_rawDescGZIP(), []int{38} } func (x *RecommendPoints) GetCollectionName() string { @@ -3166,7 +3474,7 @@ type RecommendBatchPoints struct { func (x *RecommendBatchPoints) Reset() { *x = RecommendBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[35] + mi := &file_points_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3179,7 +3487,7 @@ func (x *RecommendBatchPoints) String() string { func (*RecommendBatchPoints) ProtoMessage() {} func (x *RecommendBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[35] + mi := &file_points_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3192,7 +3500,7 @@ func (x *RecommendBatchPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use RecommendBatchPoints.ProtoReflect.Descriptor instead. func (*RecommendBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{35} + return file_points_proto_rawDescGZIP(), []int{39} } func (x *RecommendBatchPoints) GetCollectionName() string { @@ -3253,7 +3561,7 @@ type RecommendPointGroups struct { func (x *RecommendPointGroups) Reset() { *x = RecommendPointGroups{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[36] + mi := &file_points_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3266,7 +3574,7 @@ func (x *RecommendPointGroups) String() string { func (*RecommendPointGroups) ProtoMessage() {} func (x *RecommendPointGroups) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[36] + mi := &file_points_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3279,7 +3587,7 @@ func (x *RecommendPointGroups) ProtoReflect() protoreflect.Message { // Deprecated: Use RecommendPointGroups.ProtoReflect.Descriptor instead. func (*RecommendPointGroups) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{36} + return file_points_proto_rawDescGZIP(), []int{40} } func (x *RecommendPointGroups) GetCollectionName() string { @@ -3436,7 +3744,7 @@ type TargetVector struct { func (x *TargetVector) Reset() { *x = TargetVector{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[37] + mi := &file_points_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3449,7 +3757,7 @@ func (x *TargetVector) String() string { func (*TargetVector) ProtoMessage() {} func (x *TargetVector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[37] + mi := &file_points_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3462,7 +3770,7 @@ func (x *TargetVector) ProtoReflect() protoreflect.Message { // Deprecated: Use TargetVector.ProtoReflect.Descriptor instead. func (*TargetVector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{37} + return file_points_proto_rawDescGZIP(), []int{41} } func (m *TargetVector) GetTarget() isTargetVector_Target { @@ -3504,7 +3812,7 @@ type VectorExample struct { func (x *VectorExample) Reset() { *x = VectorExample{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[38] + mi := &file_points_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3517,7 +3825,7 @@ func (x *VectorExample) String() string { func (*VectorExample) ProtoMessage() {} func (x *VectorExample) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[38] + mi := &file_points_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3530,7 +3838,7 @@ func (x *VectorExample) ProtoReflect() protoreflect.Message { // Deprecated: Use VectorExample.ProtoReflect.Descriptor instead. func (*VectorExample) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{38} + return file_points_proto_rawDescGZIP(), []int{42} } func (m *VectorExample) GetExample() isVectorExample_Example { @@ -3582,7 +3890,7 @@ type ContextExamplePair struct { func (x *ContextExamplePair) Reset() { *x = ContextExamplePair{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[39] + mi := &file_points_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3595,7 +3903,7 @@ func (x *ContextExamplePair) String() string { func (*ContextExamplePair) ProtoMessage() {} func (x *ContextExamplePair) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[39] + mi := &file_points_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3608,7 +3916,7 @@ func (x *ContextExamplePair) ProtoReflect() protoreflect.Message { // Deprecated: Use ContextExamplePair.ProtoReflect.Descriptor instead. func (*ContextExamplePair) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{39} + return file_points_proto_rawDescGZIP(), []int{43} } func (x *ContextExamplePair) GetPositive() *VectorExample { @@ -3649,7 +3957,7 @@ type DiscoverPoints struct { func (x *DiscoverPoints) Reset() { *x = DiscoverPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[40] + mi := &file_points_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3662,7 +3970,7 @@ func (x *DiscoverPoints) String() string { func (*DiscoverPoints) ProtoMessage() {} func (x *DiscoverPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[40] + mi := &file_points_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3675,7 +3983,7 @@ func (x *DiscoverPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoverPoints.ProtoReflect.Descriptor instead. func (*DiscoverPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{40} + return file_points_proto_rawDescGZIP(), []int{44} } func (x *DiscoverPoints) GetCollectionName() string { @@ -3790,7 +4098,7 @@ type DiscoverBatchPoints struct { func (x *DiscoverBatchPoints) Reset() { *x = DiscoverBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[41] + mi := &file_points_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3803,7 +4111,7 @@ func (x *DiscoverBatchPoints) String() string { func (*DiscoverBatchPoints) ProtoMessage() {} func (x *DiscoverBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[41] + mi := &file_points_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3816,7 +4124,7 @@ func (x *DiscoverBatchPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoverBatchPoints.ProtoReflect.Descriptor instead. func (*DiscoverBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{41} + return file_points_proto_rawDescGZIP(), []int{45} } func (x *DiscoverBatchPoints) GetCollectionName() string { @@ -3852,7 +4160,7 @@ type CountPoints struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions Exact *bool `protobuf:"varint,3,opt,name=exact,proto3,oneof" json:"exact,omitempty"` // If `true` - return exact count, if `false` - return approximate count ReadConsistency *ReadConsistency `protobuf:"bytes,4,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees @@ -3862,7 +4170,7 @@ type CountPoints struct { func (x *CountPoints) Reset() { *x = CountPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[42] + mi := &file_points_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +4183,7 @@ func (x *CountPoints) String() string { func (*CountPoints) ProtoMessage() {} func (x *CountPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[42] + mi := &file_points_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +4196,7 @@ func (x *CountPoints) ProtoReflect() protoreflect.Message { // Deprecated: Use CountPoints.ProtoReflect.Descriptor instead. func (*CountPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{42} + return file_points_proto_rawDescGZIP(), []int{46} } func (x *CountPoints) GetCollectionName() string { @@ -3926,43 +4234,33 @@ func (x *CountPoints) GetShardKeySelector() *ShardKeySelector { return nil } -type PointsUpdateOperation struct { +type RecommendInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Operation: - // - // *PointsUpdateOperation_Upsert - // *PointsUpdateOperation_DeleteDeprecated - // *PointsUpdateOperation_SetPayload_ - // *PointsUpdateOperation_OverwritePayload - // *PointsUpdateOperation_DeletePayload_ - // *PointsUpdateOperation_ClearPayloadDeprecated - // *PointsUpdateOperation_UpdateVectors_ - // *PointsUpdateOperation_DeleteVectors_ - // *PointsUpdateOperation_DeletePoints_ - // *PointsUpdateOperation_ClearPayload_ - Operation isPointsUpdateOperation_Operation `protobuf_oneof:"operation"` + Positive []*VectorInput `protobuf:"bytes,1,rep,name=positive,proto3" json:"positive,omitempty"` // Look for vectors closest to the vectors from these points + Negative []*VectorInput `protobuf:"bytes,2,rep,name=negative,proto3" json:"negative,omitempty"` // Try to avoid vectors like the vector from these points + Strategy *RecommendStrategy `protobuf:"varint,3,opt,name=strategy,proto3,enum=qdrant.RecommendStrategy,oneof" json:"strategy,omitempty"` // How to use the provided vectors to find the results } -func (x *PointsUpdateOperation) Reset() { - *x = PointsUpdateOperation{} +func (x *RecommendInput) Reset() { + *x = RecommendInput{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[43] + mi := &file_points_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsUpdateOperation) String() string { +func (x *RecommendInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation) ProtoMessage() {} +func (*RecommendInput) ProtoMessage() {} -func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[43] +func (x *RecommendInput) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3973,184 +4271,113 @@ func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43} +// Deprecated: Use RecommendInput.ProtoReflect.Descriptor instead. +func (*RecommendInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{47} } -func (m *PointsUpdateOperation) GetOperation() isPointsUpdateOperation_Operation { - if m != nil { - return m.Operation +func (x *RecommendInput) GetPositive() []*VectorInput { + if x != nil { + return x.Positive } return nil } -func (x *PointsUpdateOperation) GetUpsert() *PointsUpdateOperation_PointStructList { - if x, ok := x.GetOperation().(*PointsUpdateOperation_Upsert); ok { - return x.Upsert +func (x *RecommendInput) GetNegative() []*VectorInput { + if x != nil { + return x.Negative } return nil } -// Deprecated: Do not use. -func (x *PointsUpdateOperation) GetDeleteDeprecated() *PointsSelector { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteDeprecated); ok { - return x.DeleteDeprecated +func (x *RecommendInput) GetStrategy() RecommendStrategy { + if x != nil && x.Strategy != nil { + return *x.Strategy } - return nil + return RecommendStrategy_AverageVector } -func (x *PointsUpdateOperation) GetSetPayload() *PointsUpdateOperation_SetPayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_SetPayload_); ok { - return x.SetPayload - } - return nil +type ContextInputPair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Positive *VectorInput `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"` // A positive vector + Negative *VectorInput `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"` // Repel from this vector } -func (x *PointsUpdateOperation) GetOverwritePayload() *PointsUpdateOperation_SetPayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_OverwritePayload); ok { - return x.OverwritePayload +func (x *ContextInputPair) Reset() { + *x = ContextInputPair{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *PointsUpdateOperation) GetDeletePayload() *PointsUpdateOperation_DeletePayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePayload_); ok { - return x.DeletePayload - } - return nil +func (x *ContextInputPair) String() string { + return protoimpl.X.MessageStringOf(x) } -// Deprecated: Do not use. -func (x *PointsUpdateOperation) GetClearPayloadDeprecated() *PointsSelector { - if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayloadDeprecated); ok { - return x.ClearPayloadDeprecated - } - return nil -} +func (*ContextInputPair) ProtoMessage() {} -func (x *PointsUpdateOperation) GetUpdateVectors() *PointsUpdateOperation_UpdateVectors { - if x, ok := x.GetOperation().(*PointsUpdateOperation_UpdateVectors_); ok { - return x.UpdateVectors +func (x *ContextInputPair) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *PointsUpdateOperation) GetDeleteVectors() *PointsUpdateOperation_DeleteVectors { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteVectors_); ok { - return x.DeleteVectors - } - return nil +// Deprecated: Use ContextInputPair.ProtoReflect.Descriptor instead. +func (*ContextInputPair) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{48} } -func (x *PointsUpdateOperation) GetDeletePoints() *PointsUpdateOperation_DeletePoints { - if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePoints_); ok { - return x.DeletePoints +func (x *ContextInputPair) GetPositive() *VectorInput { + if x != nil { + return x.Positive } return nil } -func (x *PointsUpdateOperation) GetClearPayload() *PointsUpdateOperation_ClearPayload { - if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayload_); ok { - return x.ClearPayload +func (x *ContextInputPair) GetNegative() *VectorInput { + if x != nil { + return x.Negative } return nil } -type isPointsUpdateOperation_Operation interface { - isPointsUpdateOperation_Operation() -} - -type PointsUpdateOperation_Upsert struct { - Upsert *PointsUpdateOperation_PointStructList `protobuf:"bytes,1,opt,name=upsert,proto3,oneof"` -} - -type PointsUpdateOperation_DeleteDeprecated struct { - // Deprecated: Do not use. - DeleteDeprecated *PointsSelector `protobuf:"bytes,2,opt,name=delete_deprecated,json=deleteDeprecated,proto3,oneof"` -} - -type PointsUpdateOperation_SetPayload_ struct { - SetPayload *PointsUpdateOperation_SetPayload `protobuf:"bytes,3,opt,name=set_payload,json=setPayload,proto3,oneof"` -} - -type PointsUpdateOperation_OverwritePayload struct { - OverwritePayload *PointsUpdateOperation_SetPayload `protobuf:"bytes,4,opt,name=overwrite_payload,json=overwritePayload,proto3,oneof"` -} - -type PointsUpdateOperation_DeletePayload_ struct { - DeletePayload *PointsUpdateOperation_DeletePayload `protobuf:"bytes,5,opt,name=delete_payload,json=deletePayload,proto3,oneof"` -} - -type PointsUpdateOperation_ClearPayloadDeprecated struct { - // Deprecated: Do not use. - ClearPayloadDeprecated *PointsSelector `protobuf:"bytes,6,opt,name=clear_payload_deprecated,json=clearPayloadDeprecated,proto3,oneof"` -} - -type PointsUpdateOperation_UpdateVectors_ struct { - UpdateVectors *PointsUpdateOperation_UpdateVectors `protobuf:"bytes,7,opt,name=update_vectors,json=updateVectors,proto3,oneof"` -} - -type PointsUpdateOperation_DeleteVectors_ struct { - DeleteVectors *PointsUpdateOperation_DeleteVectors `protobuf:"bytes,8,opt,name=delete_vectors,json=deleteVectors,proto3,oneof"` -} - -type PointsUpdateOperation_DeletePoints_ struct { - DeletePoints *PointsUpdateOperation_DeletePoints `protobuf:"bytes,9,opt,name=delete_points,json=deletePoints,proto3,oneof"` -} - -type PointsUpdateOperation_ClearPayload_ struct { - ClearPayload *PointsUpdateOperation_ClearPayload `protobuf:"bytes,10,opt,name=clear_payload,json=clearPayload,proto3,oneof"` -} - -func (*PointsUpdateOperation_Upsert) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeleteDeprecated) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_SetPayload_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_OverwritePayload) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeletePayload_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_ClearPayloadDeprecated) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_UpdateVectors_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeleteVectors_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_DeletePoints_) isPointsUpdateOperation_Operation() {} - -func (*PointsUpdateOperation_ClearPayload_) isPointsUpdateOperation_Operation() {} - -type UpdateBatchPoints struct { +type DiscoverInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection - Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? - Operations []*PointsUpdateOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` - Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees + Target *VectorInput `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` // Use this as the primary search objective + Context *ContextInput `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` // Search space will be constrained by these pairs of vectors } -func (x *UpdateBatchPoints) Reset() { - *x = UpdateBatchPoints{} +func (x *DiscoverInput) Reset() { + *x = DiscoverInput{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[44] + mi := &file_points_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateBatchPoints) String() string { +func (x *DiscoverInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBatchPoints) ProtoMessage() {} +func (*DiscoverInput) ProtoMessage() {} -func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[44] +func (x *DiscoverInput) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4161,65 +4388,50 @@ func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateBatchPoints.ProtoReflect.Descriptor instead. -func (*UpdateBatchPoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{44} -} - -func (x *UpdateBatchPoints) GetCollectionName() string { - if x != nil { - return x.CollectionName - } - return "" -} - -func (x *UpdateBatchPoints) GetWait() bool { - if x != nil && x.Wait != nil { - return *x.Wait - } - return false +// Deprecated: Use DiscoverInput.ProtoReflect.Descriptor instead. +func (*DiscoverInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{49} } -func (x *UpdateBatchPoints) GetOperations() []*PointsUpdateOperation { +func (x *DiscoverInput) GetTarget() *VectorInput { if x != nil { - return x.Operations + return x.Target } return nil } -func (x *UpdateBatchPoints) GetOrdering() *WriteOrdering { +func (x *DiscoverInput) GetContext() *ContextInput { if x != nil { - return x.Ordering + return x.Context } return nil } -type PointsOperationResponse struct { +type ContextInput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *UpdateResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Pairs []*ContextInputPair `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` // Search space will be constrained by these pairs of vectors } -func (x *PointsOperationResponse) Reset() { - *x = PointsOperationResponse{} +func (x *ContextInput) Reset() { + *x = ContextInput{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[45] + mi := &file_points_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsOperationResponse) String() string { +func (x *ContextInput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsOperationResponse) ProtoMessage() {} +func (*ContextInput) ProtoMessage() {} -func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[45] +func (x *ContextInput) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4230,51 +4442,51 @@ func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsOperationResponse.ProtoReflect.Descriptor instead. -func (*PointsOperationResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{45} +// Deprecated: Use ContextInput.ProtoReflect.Descriptor instead. +func (*ContextInput) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{50} } -func (x *PointsOperationResponse) GetResult() *UpdateResult { +func (x *ContextInput) GetPairs() []*ContextInputPair { if x != nil { - return x.Result + return x.Pairs } return nil } -func (x *PointsOperationResponse) GetTime() float64 { - if x != nil { - return x.Time - } - return 0 -} - -type UpdateResult struct { +type Query struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OperationId *uint64 `protobuf:"varint,1,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` // Number of operation - Status UpdateStatus `protobuf:"varint,2,opt,name=status,proto3,enum=qdrant.UpdateStatus" json:"status,omitempty"` // Operation status + // Types that are assignable to Variant: + // + // *Query_Nearest + // *Query_Recommend + // *Query_Discover + // *Query_Context + // *Query_OrderBy + // *Query_Fusion + Variant isQuery_Variant `protobuf_oneof:"variant"` } -func (x *UpdateResult) Reset() { - *x = UpdateResult{} +func (x *Query) Reset() { + *x = Query{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[46] + mi := &file_points_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateResult) String() string { +func (x *Query) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateResult) ProtoMessage() {} +func (*Query) ProtoMessage() {} -func (x *UpdateResult) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[46] +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4285,55 +4497,132 @@ func (x *UpdateResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateResult.ProtoReflect.Descriptor instead. -func (*UpdateResult) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{46} +// Deprecated: Use Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{51} } -func (x *UpdateResult) GetOperationId() uint64 { - if x != nil && x.OperationId != nil { - return *x.OperationId +func (m *Query) GetVariant() isQuery_Variant { + if m != nil { + return m.Variant } - return 0 + return nil } -func (x *UpdateResult) GetStatus() UpdateStatus { - if x != nil { - return x.Status +func (x *Query) GetNearest() *VectorInput { + if x, ok := x.GetVariant().(*Query_Nearest); ok { + return x.Nearest } - return UpdateStatus_UnknownUpdateStatus + return nil } -type ScoredPoint struct { +func (x *Query) GetRecommend() *RecommendInput { + if x, ok := x.GetVariant().(*Query_Recommend); ok { + return x.Recommend + } + return nil +} + +func (x *Query) GetDiscover() *DiscoverInput { + if x, ok := x.GetVariant().(*Query_Discover); ok { + return x.Discover + } + return nil +} + +func (x *Query) GetContext() *ContextInput { + if x, ok := x.GetVariant().(*Query_Context); ok { + return x.Context + } + return nil +} + +func (x *Query) GetOrderBy() *OrderBy { + if x, ok := x.GetVariant().(*Query_OrderBy); ok { + return x.OrderBy + } + return nil +} + +func (x *Query) GetFusion() Fusion { + if x, ok := x.GetVariant().(*Query_Fusion); ok { + return x.Fusion + } + return Fusion_RRF +} + +type isQuery_Variant interface { + isQuery_Variant() +} + +type Query_Nearest struct { + Nearest *VectorInput `protobuf:"bytes,1,opt,name=nearest,proto3,oneof"` // Find the nearest neighbors to this vector. +} + +type Query_Recommend struct { + Recommend *RecommendInput `protobuf:"bytes,2,opt,name=recommend,proto3,oneof"` // Use multiple positive and negative vectors to find the results. +} + +type Query_Discover struct { + Discover *DiscoverInput `protobuf:"bytes,3,opt,name=discover,proto3,oneof"` // Search for nearest points, but constrain the search space with context +} + +type Query_Context struct { + Context *ContextInput `protobuf:"bytes,4,opt,name=context,proto3,oneof"` // Return points that live in positive areas. +} + +type Query_OrderBy struct { + OrderBy *OrderBy `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3,oneof"` // Order the points by a payload field. +} + +type Query_Fusion struct { + Fusion Fusion `protobuf:"varint,6,opt,name=fusion,proto3,enum=qdrant.Fusion,oneof"` // Fuse the results of multiple prefetches. +} + +func (*Query_Nearest) isQuery_Variant() {} + +func (*Query_Recommend) isQuery_Variant() {} + +func (*Query_Discover) isQuery_Variant() {} + +func (*Query_Context) isQuery_Variant() {} + +func (*Query_OrderBy) isQuery_Variant() {} + +func (*Query_Fusion) isQuery_Variant() {} + +type PrefetchQuery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Point id - Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Payload - Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // Similarity score - Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` // Last update operation applied to this point - Vectors *Vectors `protobuf:"bytes,6,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` // Vectors to search - ShardKey *ShardKey `protobuf:"bytes,7,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + Prefetch []*PrefetchQuery `protobuf:"bytes,1,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + Query *Query `protobuf:"bytes,2,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. + Using *string `protobuf:"bytes,3,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is is used. + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Params *SearchParams `protobuf:"bytes,5,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. + ScoreThreshold *float32 `protobuf:"fixed32,6,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. + Limit *uint64 `protobuf:"varint,7,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10 + LookupFrom *LookupLocation `protobuf:"bytes,8,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector } -func (x *ScoredPoint) Reset() { - *x = ScoredPoint{} +func (x *PrefetchQuery) Reset() { + *x = PrefetchQuery{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[47] + mi := &file_points_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ScoredPoint) String() string { +func (x *PrefetchQuery) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ScoredPoint) ProtoMessage() {} +func (*PrefetchQuery) ProtoMessage() {} -func (x *ScoredPoint) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[47] +func (x *PrefetchQuery) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4344,83 +4633,106 @@ func (x *ScoredPoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ScoredPoint.ProtoReflect.Descriptor instead. -func (*ScoredPoint) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{47} +// Deprecated: Use PrefetchQuery.ProtoReflect.Descriptor instead. +func (*PrefetchQuery) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{52} } -func (x *ScoredPoint) GetId() *PointId { +func (x *PrefetchQuery) GetPrefetch() []*PrefetchQuery { if x != nil { - return x.Id + return x.Prefetch } return nil } -func (x *ScoredPoint) GetPayload() map[string]*Value { +func (x *PrefetchQuery) GetQuery() *Query { if x != nil { - return x.Payload + return x.Query } return nil } -func (x *ScoredPoint) GetScore() float32 { - if x != nil { - return x.Score - } - return 0 +func (x *PrefetchQuery) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using + } + return "" } -func (x *ScoredPoint) GetVersion() uint64 { +func (x *PrefetchQuery) GetFilter() *Filter { if x != nil { - return x.Version + return x.Filter } - return 0 + return nil } -func (x *ScoredPoint) GetVectors() *Vectors { +func (x *PrefetchQuery) GetParams() *SearchParams { if x != nil { - return x.Vectors + return x.Params } return nil } -func (x *ScoredPoint) GetShardKey() *ShardKey { +func (x *PrefetchQuery) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold + } + return 0 +} + +func (x *PrefetchQuery) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 +} + +func (x *PrefetchQuery) GetLookupFrom() *LookupLocation { if x != nil { - return x.ShardKey + return x.LookupFrom } return nil } -type GroupId struct { +type QueryPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Kind: - // - // *GroupId_UnsignedValue - // *GroupId_IntegerValue - // *GroupId_StringValue - Kind isGroupId_Kind `protobuf_oneof:"kind"` -} - -func (x *GroupId) Reset() { - *x = GroupId{} + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // Name of the collection + Prefetch []*PrefetchQuery `protobuf:"bytes,2,rep,name=prefetch,proto3" json:"prefetch,omitempty"` // Sub-requests to perform first. If present, the query will be performed on the results of the prefetches. + Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof" json:"query,omitempty"` // Query to perform. If missing, returns points ordered by their IDs. + Using *string `protobuf:"bytes,4,opt,name=using,proto3,oneof" json:"using,omitempty"` // Define which vector to use for querying. If missing, the default vector is used. + Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` // Filter conditions - return only those points that satisfy the specified conditions. + Params *SearchParams `protobuf:"bytes,6,opt,name=params,proto3,oneof" json:"params,omitempty"` // Search params for when there is no prefetch. + ScoreThreshold *float32 `protobuf:"fixed32,7,opt,name=score_threshold,json=scoreThreshold,proto3,oneof" json:"score_threshold,omitempty"` // Return points with scores better than this threshold. + Limit *uint64 `protobuf:"varint,8,opt,name=limit,proto3,oneof" json:"limit,omitempty"` // Max number of points. Default is 10. + Offset *uint64 `protobuf:"varint,9,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Offset of the result. Skip this many points. Default is 0. + WithVectors *WithVectorsSelector `protobuf:"bytes,10,opt,name=with_vectors,json=withVectors,proto3,oneof" json:"with_vectors,omitempty"` // Options for specifying which vectors to include into the response. + WithPayload *WithPayloadSelector `protobuf:"bytes,11,opt,name=with_payload,json=withPayload,proto3,oneof" json:"with_payload,omitempty"` // Options for specifying which payload to include or not. + ReadConsistency *ReadConsistency `protobuf:"bytes,12,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees. + ShardKeySelector *ShardKeySelector `protobuf:"bytes,13,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Specify in which shards to look for the points, if not specified - look in all shards. + LookupFrom *LookupLocation `protobuf:"bytes,14,opt,name=lookup_from,json=lookupFrom,proto3,oneof" json:"lookup_from,omitempty"` // The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector + Timeout *uint64 `protobuf:"varint,15,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. +} + +func (x *QueryPoints) Reset() { + *x = QueryPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[48] + mi := &file_points_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GroupId) String() string { +func (x *QueryPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GroupId) ProtoMessage() {} +func (*QueryPoints) ProtoMessage() {} -func (x *GroupId) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[48] +func (x *QueryPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4431,152 +4743,144 @@ func (x *GroupId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GroupId.ProtoReflect.Descriptor instead. -func (*GroupId) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{48} +// Deprecated: Use QueryPoints.ProtoReflect.Descriptor instead. +func (*QueryPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{53} } -func (m *GroupId) GetKind() isGroupId_Kind { - if m != nil { - return m.Kind +func (x *QueryPoints) GetCollectionName() string { + if x != nil { + return x.CollectionName } - return nil + return "" } -func (x *GroupId) GetUnsignedValue() uint64 { - if x, ok := x.GetKind().(*GroupId_UnsignedValue); ok { - return x.UnsignedValue +func (x *QueryPoints) GetPrefetch() []*PrefetchQuery { + if x != nil { + return x.Prefetch } - return 0 + return nil } -func (x *GroupId) GetIntegerValue() int64 { - if x, ok := x.GetKind().(*GroupId_IntegerValue); ok { - return x.IntegerValue +func (x *QueryPoints) GetQuery() *Query { + if x != nil { + return x.Query } - return 0 + return nil } -func (x *GroupId) GetStringValue() string { - if x, ok := x.GetKind().(*GroupId_StringValue); ok { - return x.StringValue +func (x *QueryPoints) GetUsing() string { + if x != nil && x.Using != nil { + return *x.Using } return "" } -type isGroupId_Kind interface { - isGroupId_Kind() -} - -type GroupId_UnsignedValue struct { - // Represents a double value. - UnsignedValue uint64 `protobuf:"varint,1,opt,name=unsigned_value,json=unsignedValue,proto3,oneof"` -} - -type GroupId_IntegerValue struct { - // Represents an integer value - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` +func (x *QueryPoints) GetFilter() *Filter { + if x != nil { + return x.Filter + } + return nil } -type GroupId_StringValue struct { - // Represents a string value. - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +func (x *QueryPoints) GetParams() *SearchParams { + if x != nil { + return x.Params + } + return nil } -func (*GroupId_UnsignedValue) isGroupId_Kind() {} - -func (*GroupId_IntegerValue) isGroupId_Kind() {} - -func (*GroupId_StringValue) isGroupId_Kind() {} - -type PointGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id *GroupId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Group id - Hits []*ScoredPoint `protobuf:"bytes,2,rep,name=hits,proto3" json:"hits,omitempty"` // Points in the group - Lookup *RetrievedPoint `protobuf:"bytes,3,opt,name=lookup,proto3" json:"lookup,omitempty"` // Point(s) from the lookup collection that matches the group id +func (x *QueryPoints) GetScoreThreshold() float32 { + if x != nil && x.ScoreThreshold != nil { + return *x.ScoreThreshold + } + return 0 } -func (x *PointGroup) Reset() { - *x = PointGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *QueryPoints) GetLimit() uint64 { + if x != nil && x.Limit != nil { + return *x.Limit } + return 0 } -func (x *PointGroup) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *QueryPoints) GetOffset() uint64 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 } -func (*PointGroup) ProtoMessage() {} - -func (x *PointGroup) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *QueryPoints) GetWithVectors() *WithVectorsSelector { + if x != nil { + return x.WithVectors } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PointGroup.ProtoReflect.Descriptor instead. -func (*PointGroup) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{49} +func (x *QueryPoints) GetWithPayload() *WithPayloadSelector { + if x != nil { + return x.WithPayload + } + return nil } -func (x *PointGroup) GetId() *GroupId { +func (x *QueryPoints) GetReadConsistency() *ReadConsistency { if x != nil { - return x.Id + return x.ReadConsistency } return nil } -func (x *PointGroup) GetHits() []*ScoredPoint { +func (x *QueryPoints) GetShardKeySelector() *ShardKeySelector { if x != nil { - return x.Hits + return x.ShardKeySelector } return nil } -func (x *PointGroup) GetLookup() *RetrievedPoint { +func (x *QueryPoints) GetLookupFrom() *LookupLocation { if x != nil { - return x.Lookup + return x.LookupFrom } return nil } -type GroupsResult struct { +func (x *QueryPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} + +type QueryBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Groups []*PointGroup `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Groups + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` + QueryPoints []*QueryPoints `protobuf:"bytes,2,rep,name=query_points,json=queryPoints,proto3" json:"query_points,omitempty"` + ReadConsistency *ReadConsistency `protobuf:"bytes,3,opt,name=read_consistency,json=readConsistency,proto3,oneof" json:"read_consistency,omitempty"` // Options for specifying read consistency guarantees + Timeout *uint64 `protobuf:"varint,4,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // If set, overrides global timeout setting for this request. Unit is seconds. } -func (x *GroupsResult) Reset() { - *x = GroupsResult{} +func (x *QueryBatchPoints) Reset() { + *x = QueryBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[50] + mi := &file_points_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GroupsResult) String() string { +func (x *QueryBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GroupsResult) ProtoMessage() {} +func (*QueryBatchPoints) ProtoMessage() {} -func (x *GroupsResult) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[50] +func (x *QueryBatchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4587,44 +4891,76 @@ func (x *GroupsResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GroupsResult.ProtoReflect.Descriptor instead. -func (*GroupsResult) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{50} +// Deprecated: Use QueryBatchPoints.ProtoReflect.Descriptor instead. +func (*QueryBatchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{54} } -func (x *GroupsResult) GetGroups() []*PointGroup { +func (x *QueryBatchPoints) GetCollectionName() string { if x != nil { - return x.Groups + return x.CollectionName + } + return "" +} + +func (x *QueryBatchPoints) GetQueryPoints() []*QueryPoints { + if x != nil { + return x.QueryPoints } return nil } -type SearchResponse struct { +func (x *QueryBatchPoints) GetReadConsistency() *ReadConsistency { + if x != nil { + return x.ReadConsistency + } + return nil +} + +func (x *QueryBatchPoints) GetTimeout() uint64 { + if x != nil && x.Timeout != nil { + return *x.Timeout + } + return 0 +} + +type PointsUpdateOperation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + // Types that are assignable to Operation: + // + // *PointsUpdateOperation_Upsert + // *PointsUpdateOperation_DeleteDeprecated + // *PointsUpdateOperation_SetPayload_ + // *PointsUpdateOperation_OverwritePayload_ + // *PointsUpdateOperation_DeletePayload_ + // *PointsUpdateOperation_ClearPayloadDeprecated + // *PointsUpdateOperation_UpdateVectors_ + // *PointsUpdateOperation_DeleteVectors_ + // *PointsUpdateOperation_DeletePoints_ + // *PointsUpdateOperation_ClearPayload_ + Operation isPointsUpdateOperation_Operation `protobuf_oneof:"operation"` } -func (x *SearchResponse) Reset() { - *x = SearchResponse{} +func (x *PointsUpdateOperation) Reset() { + *x = PointsUpdateOperation{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[51] + mi := &file_points_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchResponse) String() string { +func (x *PointsUpdateOperation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchResponse) ProtoMessage() {} +func (*PointsUpdateOperation) ProtoMessage() {} -func (x *SearchResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[51] +func (x *PointsUpdateOperation) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4635,98 +4971,184 @@ func (x *SearchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. -func (*SearchResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{51} +// Deprecated: Use PointsUpdateOperation.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55} } -func (x *SearchResponse) GetResult() []*ScoredPoint { - if x != nil { - return x.Result +func (m *PointsUpdateOperation) GetOperation() isPointsUpdateOperation_Operation { + if m != nil { + return m.Operation } return nil } -func (x *SearchResponse) GetTime() float64 { - if x != nil { - return x.Time +func (x *PointsUpdateOperation) GetUpsert() *PointsUpdateOperation_PointStructList { + if x, ok := x.GetOperation().(*PointsUpdateOperation_Upsert); ok { + return x.Upsert } - return 0 + return nil } -type BatchResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Do not use. +func (x *PointsUpdateOperation) GetDeleteDeprecated() *PointsSelector { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteDeprecated); ok { + return x.DeleteDeprecated + } + return nil +} - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` +func (x *PointsUpdateOperation) GetSetPayload() *PointsUpdateOperation_SetPayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_SetPayload_); ok { + return x.SetPayload + } + return nil } -func (x *BatchResult) Reset() { - *x = BatchResult{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PointsUpdateOperation) GetOverwritePayload() *PointsUpdateOperation_OverwritePayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_OverwritePayload_); ok { + return x.OverwritePayload } + return nil } -func (x *BatchResult) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PointsUpdateOperation) GetDeletePayload() *PointsUpdateOperation_DeletePayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePayload_); ok { + return x.DeletePayload + } + return nil } -func (*BatchResult) ProtoMessage() {} +// Deprecated: Do not use. +func (x *PointsUpdateOperation) GetClearPayloadDeprecated() *PointsSelector { + if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayloadDeprecated); ok { + return x.ClearPayloadDeprecated + } + return nil +} -func (x *BatchResult) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PointsUpdateOperation) GetUpdateVectors() *PointsUpdateOperation_UpdateVectors { + if x, ok := x.GetOperation().(*PointsUpdateOperation_UpdateVectors_); ok { + return x.UpdateVectors } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BatchResult.ProtoReflect.Descriptor instead. -func (*BatchResult) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{52} +func (x *PointsUpdateOperation) GetDeleteVectors() *PointsUpdateOperation_DeleteVectors { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeleteVectors_); ok { + return x.DeleteVectors + } + return nil } -func (x *BatchResult) GetResult() []*ScoredPoint { - if x != nil { - return x.Result +func (x *PointsUpdateOperation) GetDeletePoints() *PointsUpdateOperation_DeletePoints { + if x, ok := x.GetOperation().(*PointsUpdateOperation_DeletePoints_); ok { + return x.DeletePoints } return nil } -type SearchBatchResponse struct { +func (x *PointsUpdateOperation) GetClearPayload() *PointsUpdateOperation_ClearPayload { + if x, ok := x.GetOperation().(*PointsUpdateOperation_ClearPayload_); ok { + return x.ClearPayload + } + return nil +} + +type isPointsUpdateOperation_Operation interface { + isPointsUpdateOperation_Operation() +} + +type PointsUpdateOperation_Upsert struct { + Upsert *PointsUpdateOperation_PointStructList `protobuf:"bytes,1,opt,name=upsert,proto3,oneof"` +} + +type PointsUpdateOperation_DeleteDeprecated struct { + // Deprecated: Do not use. + DeleteDeprecated *PointsSelector `protobuf:"bytes,2,opt,name=delete_deprecated,json=deleteDeprecated,proto3,oneof"` +} + +type PointsUpdateOperation_SetPayload_ struct { + SetPayload *PointsUpdateOperation_SetPayload `protobuf:"bytes,3,opt,name=set_payload,json=setPayload,proto3,oneof"` +} + +type PointsUpdateOperation_OverwritePayload_ struct { + OverwritePayload *PointsUpdateOperation_OverwritePayload `protobuf:"bytes,4,opt,name=overwrite_payload,json=overwritePayload,proto3,oneof"` +} + +type PointsUpdateOperation_DeletePayload_ struct { + DeletePayload *PointsUpdateOperation_DeletePayload `protobuf:"bytes,5,opt,name=delete_payload,json=deletePayload,proto3,oneof"` +} + +type PointsUpdateOperation_ClearPayloadDeprecated struct { + // Deprecated: Do not use. + ClearPayloadDeprecated *PointsSelector `protobuf:"bytes,6,opt,name=clear_payload_deprecated,json=clearPayloadDeprecated,proto3,oneof"` +} + +type PointsUpdateOperation_UpdateVectors_ struct { + UpdateVectors *PointsUpdateOperation_UpdateVectors `protobuf:"bytes,7,opt,name=update_vectors,json=updateVectors,proto3,oneof"` +} + +type PointsUpdateOperation_DeleteVectors_ struct { + DeleteVectors *PointsUpdateOperation_DeleteVectors `protobuf:"bytes,8,opt,name=delete_vectors,json=deleteVectors,proto3,oneof"` +} + +type PointsUpdateOperation_DeletePoints_ struct { + DeletePoints *PointsUpdateOperation_DeletePoints `protobuf:"bytes,9,opt,name=delete_points,json=deletePoints,proto3,oneof"` +} + +type PointsUpdateOperation_ClearPayload_ struct { + ClearPayload *PointsUpdateOperation_ClearPayload `protobuf:"bytes,10,opt,name=clear_payload,json=clearPayload,proto3,oneof"` +} + +func (*PointsUpdateOperation_Upsert) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeleteDeprecated) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_SetPayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_OverwritePayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeletePayload_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_ClearPayloadDeprecated) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_UpdateVectors_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeleteVectors_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_DeletePoints_) isPointsUpdateOperation_Operation() {} + +func (*PointsUpdateOperation_ClearPayload_) isPointsUpdateOperation_Operation() {} + +type UpdateBatchPoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + CollectionName string `protobuf:"bytes,1,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` // name of the collection + Wait *bool `protobuf:"varint,2,opt,name=wait,proto3,oneof" json:"wait,omitempty"` // Wait until the changes have been applied? + Operations []*PointsUpdateOperation `protobuf:"bytes,3,rep,name=operations,proto3" json:"operations,omitempty"` + Ordering *WriteOrdering `protobuf:"bytes,4,opt,name=ordering,proto3,oneof" json:"ordering,omitempty"` // Write ordering guarantees } -func (x *SearchBatchResponse) Reset() { - *x = SearchBatchResponse{} +func (x *UpdateBatchPoints) Reset() { + *x = UpdateBatchPoints{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[53] + mi := &file_points_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchBatchResponse) String() string { +func (x *UpdateBatchPoints) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchBatchResponse) ProtoMessage() {} +func (*UpdateBatchPoints) ProtoMessage() {} -func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[53] +func (x *UpdateBatchPoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4737,51 +5159,65 @@ func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchBatchResponse.ProtoReflect.Descriptor instead. -func (*SearchBatchResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{53} +// Deprecated: Use UpdateBatchPoints.ProtoReflect.Descriptor instead. +func (*UpdateBatchPoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{56} } -func (x *SearchBatchResponse) GetResult() []*BatchResult { +func (x *UpdateBatchPoints) GetCollectionName() string { if x != nil { - return x.Result + return x.CollectionName + } + return "" +} + +func (x *UpdateBatchPoints) GetWait() bool { + if x != nil && x.Wait != nil { + return *x.Wait + } + return false +} + +func (x *UpdateBatchPoints) GetOperations() []*PointsUpdateOperation { + if x != nil { + return x.Operations } return nil } -func (x *SearchBatchResponse) GetTime() float64 { +func (x *UpdateBatchPoints) GetOrdering() *WriteOrdering { if x != nil { - return x.Time + return x.Ordering } - return 0 + return nil } -type SearchGroupsResponse struct { +type PointsOperationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *UpdateResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *SearchGroupsResponse) Reset() { - *x = SearchGroupsResponse{} +func (x *PointsOperationResponse) Reset() { + *x = PointsOperationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[54] + mi := &file_points_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchGroupsResponse) String() string { +func (x *PointsOperationResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchGroupsResponse) ProtoMessage() {} +func (*PointsOperationResponse) ProtoMessage() {} -func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[54] +func (x *PointsOperationResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4792,51 +5228,51 @@ func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchGroupsResponse.ProtoReflect.Descriptor instead. -func (*SearchGroupsResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{54} +// Deprecated: Use PointsOperationResponse.ProtoReflect.Descriptor instead. +func (*PointsOperationResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{57} } -func (x *SearchGroupsResponse) GetResult() *GroupsResult { +func (x *PointsOperationResponse) GetResult() *UpdateResult { if x != nil { return x.Result } return nil } -func (x *SearchGroupsResponse) GetTime() float64 { +func (x *PointsOperationResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type CountResponse struct { +type UpdateResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *CountResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + OperationId *uint64 `protobuf:"varint,1,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` // Number of operation + Status UpdateStatus `protobuf:"varint,2,opt,name=status,proto3,enum=qdrant.UpdateStatus" json:"status,omitempty"` // Operation status } -func (x *CountResponse) Reset() { - *x = CountResponse{} +func (x *UpdateResult) Reset() { + *x = UpdateResult{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[55] + mi := &file_points_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CountResponse) String() string { +func (x *UpdateResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountResponse) ProtoMessage() {} +func (*UpdateResult) ProtoMessage() {} -func (x *CountResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[55] +func (x *UpdateResult) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4847,52 +5283,54 @@ func (x *CountResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountResponse.ProtoReflect.Descriptor instead. -func (*CountResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{55} +// Deprecated: Use UpdateResult.ProtoReflect.Descriptor instead. +func (*UpdateResult) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{58} } -func (x *CountResponse) GetResult() *CountResult { - if x != nil { - return x.Result +func (x *UpdateResult) GetOperationId() uint64 { + if x != nil && x.OperationId != nil { + return *x.OperationId } - return nil + return 0 } -func (x *CountResponse) GetTime() float64 { +func (x *UpdateResult) GetStatus() UpdateStatus { if x != nil { - return x.Time + return x.Status } - return 0 + return UpdateStatus_UnknownUpdateStatus } -type ScrollResponse struct { +type OrderValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NextPageOffset *PointId `protobuf:"bytes,1,opt,name=next_page_offset,json=nextPageOffset,proto3,oneof" json:"next_page_offset,omitempty"` // Use this offset for the next query - Result []*RetrievedPoint `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,3,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + // Types that are assignable to Variant: + // + // *OrderValue_Int + // *OrderValue_Float + Variant isOrderValue_Variant `protobuf_oneof:"variant"` } -func (x *ScrollResponse) Reset() { - *x = ScrollResponse{} +func (x *OrderValue) Reset() { + *x = OrderValue{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[56] + mi := &file_points_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ScrollResponse) String() string { +func (x *OrderValue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ScrollResponse) ProtoMessage() {} +func (*OrderValue) ProtoMessage() {} -func (x *ScrollResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[56] +func (x *OrderValue) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4903,107 +5341,79 @@ func (x *ScrollResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ScrollResponse.ProtoReflect.Descriptor instead. -func (*ScrollResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{56} +// Deprecated: Use OrderValue.ProtoReflect.Descriptor instead. +func (*OrderValue) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{59} } -func (x *ScrollResponse) GetNextPageOffset() *PointId { - if x != nil { - return x.NextPageOffset +func (m *OrderValue) GetVariant() isOrderValue_Variant { + if m != nil { + return m.Variant } return nil } -func (x *ScrollResponse) GetResult() []*RetrievedPoint { - if x != nil { - return x.Result +func (x *OrderValue) GetInt() int64 { + if x, ok := x.GetVariant().(*OrderValue_Int); ok { + return x.Int } - return nil + return 0 } -func (x *ScrollResponse) GetTime() float64 { - if x != nil { - return x.Time +func (x *OrderValue) GetFloat() float64 { + if x, ok := x.GetVariant().(*OrderValue_Float); ok { + return x.Float } return 0 } -type CountResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` -} - -func (x *CountResult) Reset() { - *x = CountResult{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type isOrderValue_Variant interface { + isOrderValue_Variant() } -func (x *CountResult) String() string { - return protoimpl.X.MessageStringOf(x) +type OrderValue_Int struct { + Int int64 `protobuf:"varint,1,opt,name=int,proto3,oneof"` } -func (*CountResult) ProtoMessage() {} - -func (x *CountResult) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[57] - 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) +type OrderValue_Float struct { + Float float64 `protobuf:"fixed64,2,opt,name=float,proto3,oneof"` } -// Deprecated: Use CountResult.ProtoReflect.Descriptor instead. -func (*CountResult) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{57} -} +func (*OrderValue_Int) isOrderValue_Variant() {} -func (x *CountResult) GetCount() uint64 { - if x != nil { - return x.Count - } - return 0 -} +func (*OrderValue_Float) isOrderValue_Variant() {} -type RetrievedPoint struct { +type ScoredPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` - ShardKey *ShardKey `protobuf:"bytes,5,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Point id + Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Payload + Score float32 `protobuf:"fixed32,3,opt,name=score,proto3" json:"score,omitempty"` // Similarity score + Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` // Last update operation applied to this point + Vectors *Vectors `protobuf:"bytes,6,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` // Vectors to search + ShardKey *ShardKey `protobuf:"bytes,7,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + OrderValue *OrderValue `protobuf:"bytes,8,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order by value } -func (x *RetrievedPoint) Reset() { - *x = RetrievedPoint{} +func (x *ScoredPoint) Reset() { + *x = ScoredPoint{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[58] + mi := &file_points_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RetrievedPoint) String() string { +func (x *ScoredPoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RetrievedPoint) ProtoMessage() {} +func (*ScoredPoint) ProtoMessage() {} -func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[58] +func (x *ScoredPoint) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5014,65 +5424,90 @@ func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RetrievedPoint.ProtoReflect.Descriptor instead. -func (*RetrievedPoint) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{58} +// Deprecated: Use ScoredPoint.ProtoReflect.Descriptor instead. +func (*ScoredPoint) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{60} } -func (x *RetrievedPoint) GetId() *PointId { +func (x *ScoredPoint) GetId() *PointId { if x != nil { return x.Id } return nil } -func (x *RetrievedPoint) GetPayload() map[string]*Value { +func (x *ScoredPoint) GetPayload() map[string]*Value { if x != nil { return x.Payload } return nil } -func (x *RetrievedPoint) GetVectors() *Vectors { +func (x *ScoredPoint) GetScore() float32 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *ScoredPoint) GetVersion() uint64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ScoredPoint) GetVectors() *Vectors { if x != nil { return x.Vectors } return nil } -func (x *RetrievedPoint) GetShardKey() *ShardKey { +func (x *ScoredPoint) GetShardKey() *ShardKey { if x != nil { return x.ShardKey } return nil } -type GetResponse struct { +func (x *ScoredPoint) GetOrderValue() *OrderValue { + if x != nil { + return x.OrderValue + } + return nil +} + +type GroupId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*RetrievedPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + // Types that are assignable to Kind: + // + // *GroupId_UnsignedValue + // *GroupId_IntegerValue + // *GroupId_StringValue + Kind isGroupId_Kind `protobuf_oneof:"kind"` } -func (x *GetResponse) Reset() { - *x = GetResponse{} +func (x *GroupId) Reset() { + *x = GroupId{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[59] + mi := &file_points_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetResponse) String() string { +func (x *GroupId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetResponse) ProtoMessage() {} +func (*GroupId) ProtoMessage() {} -func (x *GetResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[59] +func (x *GroupId) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5083,51 +5518,91 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. -func (*GetResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{59} +// Deprecated: Use GroupId.ProtoReflect.Descriptor instead. +func (*GroupId) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{61} } -func (x *GetResponse) GetResult() []*RetrievedPoint { - if x != nil { - return x.Result +func (m *GroupId) GetKind() isGroupId_Kind { + if m != nil { + return m.Kind } return nil } -func (x *GetResponse) GetTime() float64 { - if x != nil { - return x.Time +func (x *GroupId) GetUnsignedValue() uint64 { + if x, ok := x.GetKind().(*GroupId_UnsignedValue); ok { + return x.UnsignedValue } return 0 } -type RecommendResponse struct { +func (x *GroupId) GetIntegerValue() int64 { + if x, ok := x.GetKind().(*GroupId_IntegerValue); ok { + return x.IntegerValue + } + return 0 +} + +func (x *GroupId) GetStringValue() string { + if x, ok := x.GetKind().(*GroupId_StringValue); ok { + return x.StringValue + } + return "" +} + +type isGroupId_Kind interface { + isGroupId_Kind() +} + +type GroupId_UnsignedValue struct { + // Represents a double value. + UnsignedValue uint64 `protobuf:"varint,1,opt,name=unsigned_value,json=unsignedValue,proto3,oneof"` +} + +type GroupId_IntegerValue struct { + // Represents an integer value + IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` +} + +type GroupId_StringValue struct { + // Represents a string value. + StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +} + +func (*GroupId_UnsignedValue) isGroupId_Kind() {} + +func (*GroupId_IntegerValue) isGroupId_Kind() {} + +func (*GroupId_StringValue) isGroupId_Kind() {} + +type PointGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Id *GroupId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Group id + Hits []*ScoredPoint `protobuf:"bytes,2,rep,name=hits,proto3" json:"hits,omitempty"` // Points in the group + Lookup *RetrievedPoint `protobuf:"bytes,3,opt,name=lookup,proto3" json:"lookup,omitempty"` // Point(s) from the lookup collection that matches the group id } -func (x *RecommendResponse) Reset() { - *x = RecommendResponse{} +func (x *PointGroup) Reset() { + *x = PointGroup{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[60] + mi := &file_points_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendResponse) String() string { +func (x *PointGroup) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendResponse) ProtoMessage() {} +func (*PointGroup) ProtoMessage() {} -func (x *RecommendResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[60] +func (x *PointGroup) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5138,51 +5613,57 @@ func (x *RecommendResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendResponse.ProtoReflect.Descriptor instead. -func (*RecommendResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{60} +// Deprecated: Use PointGroup.ProtoReflect.Descriptor instead. +func (*PointGroup) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{62} } -func (x *RecommendResponse) GetResult() []*ScoredPoint { +func (x *PointGroup) GetId() *GroupId { if x != nil { - return x.Result + return x.Id } return nil } -func (x *RecommendResponse) GetTime() float64 { +func (x *PointGroup) GetHits() []*ScoredPoint { if x != nil { - return x.Time + return x.Hits } - return 0 + return nil } -type RecommendBatchResponse struct { +func (x *PointGroup) GetLookup() *RetrievedPoint { + if x != nil { + return x.Lookup + } + return nil +} + +type GroupsResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Groups []*PointGroup `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Groups } -func (x *RecommendBatchResponse) Reset() { - *x = RecommendBatchResponse{} +func (x *GroupsResult) Reset() { + *x = GroupsResult{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[61] + mi := &file_points_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendBatchResponse) String() string { +func (x *GroupsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendBatchResponse) ProtoMessage() {} +func (*GroupsResult) ProtoMessage() {} -func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[61] +func (x *GroupsResult) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5193,26 +5674,19 @@ func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendBatchResponse.ProtoReflect.Descriptor instead. -func (*RecommendBatchResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{61} +// Deprecated: Use GroupsResult.ProtoReflect.Descriptor instead. +func (*GroupsResult) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{63} } -func (x *RecommendBatchResponse) GetResult() []*BatchResult { +func (x *GroupsResult) GetGroups() []*PointGroup { if x != nil { - return x.Result + return x.Groups } return nil } -func (x *RecommendBatchResponse) GetTime() float64 { - if x != nil { - return x.Time - } - return 0 -} - -type DiscoverResponse struct { +type SearchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -5221,23 +5695,23 @@ type DiscoverResponse struct { Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *DiscoverResponse) Reset() { - *x = DiscoverResponse{} +func (x *SearchResponse) Reset() { + *x = SearchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[62] + mi := &file_points_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DiscoverResponse) String() string { +func (x *SearchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverResponse) ProtoMessage() {} +func (*SearchResponse) ProtoMessage() {} -func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[62] +func (x *SearchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5248,51 +5722,51 @@ func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverResponse.ProtoReflect.Descriptor instead. -func (*DiscoverResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{62} +// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. +func (*SearchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{64} } -func (x *DiscoverResponse) GetResult() []*ScoredPoint { +func (x *SearchResponse) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *DiscoverResponse) GetTime() float64 { +func (x *SearchResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type DiscoverBatchResponse struct { +type QueryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *DiscoverBatchResponse) Reset() { - *x = DiscoverBatchResponse{} +func (x *QueryResponse) Reset() { + *x = QueryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[63] + mi := &file_points_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DiscoverBatchResponse) String() string { +func (x *QueryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DiscoverBatchResponse) ProtoMessage() {} +func (*QueryResponse) ProtoMessage() {} -func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[63] +func (x *QueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5303,51 +5777,51 @@ func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DiscoverBatchResponse.ProtoReflect.Descriptor instead. -func (*DiscoverBatchResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{63} +// Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. +func (*QueryResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{65} } -func (x *DiscoverBatchResponse) GetResult() []*BatchResult { +func (x *QueryResponse) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *DiscoverBatchResponse) GetTime() float64 { +func (x *QueryResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type RecommendGroupsResponse struct { +type QueryBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *RecommendGroupsResponse) Reset() { - *x = RecommendGroupsResponse{} +func (x *QueryBatchResponse) Reset() { + *x = QueryBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[64] + mi := &file_points_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RecommendGroupsResponse) String() string { +func (x *QueryBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RecommendGroupsResponse) ProtoMessage() {} +func (*QueryBatchResponse) ProtoMessage() {} -func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[64] +func (x *QueryBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5358,51 +5832,50 @@ func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RecommendGroupsResponse.ProtoReflect.Descriptor instead. -func (*RecommendGroupsResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{64} +// Deprecated: Use QueryBatchResponse.ProtoReflect.Descriptor instead. +func (*QueryBatchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{66} } -func (x *RecommendGroupsResponse) GetResult() *GroupsResult { +func (x *QueryBatchResponse) GetResult() []*BatchResult { if x != nil { return x.Result } return nil } -func (x *RecommendGroupsResponse) GetTime() float64 { +func (x *QueryBatchResponse) GetTime() float64 { if x != nil { return x.Time } return 0 } -type UpdateBatchResponse struct { +type BatchResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result []*UpdateResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` - Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` } -func (x *UpdateBatchResponse) Reset() { - *x = UpdateBatchResponse{} +func (x *BatchResult) Reset() { + *x = BatchResult{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[65] + mi := &file_points_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateBatchResponse) String() string { +func (x *BatchResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateBatchResponse) ProtoMessage() {} +func (*BatchResult) ProtoMessage() {} -func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[65] +func (x *BatchResult) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5413,53 +5886,44 @@ func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateBatchResponse.ProtoReflect.Descriptor instead. -func (*UpdateBatchResponse) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{65} +// Deprecated: Use BatchResult.ProtoReflect.Descriptor instead. +func (*BatchResult) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{67} } -func (x *UpdateBatchResponse) GetResult() []*UpdateResult { +func (x *BatchResult) GetResult() []*ScoredPoint { if x != nil { return x.Result } return nil } -func (x *UpdateBatchResponse) GetTime() float64 { - if x != nil { - return x.Time - } - return 0 -} - -type Filter struct { +type SearchBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Should []*Condition `protobuf:"bytes,1,rep,name=should,proto3" json:"should,omitempty"` // At least one of those conditions should match - Must []*Condition `protobuf:"bytes,2,rep,name=must,proto3" json:"must,omitempty"` // All conditions must match - MustNot []*Condition `protobuf:"bytes,3,rep,name=must_not,json=mustNot,proto3" json:"must_not,omitempty"` // All conditions must NOT match - MinShould *MinShould `protobuf:"bytes,4,opt,name=min_should,json=minShould,proto3,oneof" json:"min_should,omitempty"` // At least minimum amount of given conditions should match + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Filter) Reset() { - *x = Filter{} +func (x *SearchBatchResponse) Reset() { + *x = SearchBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[66] + mi := &file_points_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Filter) String() string { +func (x *SearchBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Filter) ProtoMessage() {} +func (*SearchBatchResponse) ProtoMessage() {} -func (x *Filter) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[66] +func (x *SearchBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5470,65 +5934,51 @@ func (x *Filter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Filter.ProtoReflect.Descriptor instead. -func (*Filter) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{66} -} - -func (x *Filter) GetShould() []*Condition { - if x != nil { - return x.Should - } - return nil -} - -func (x *Filter) GetMust() []*Condition { - if x != nil { - return x.Must - } - return nil +// Deprecated: Use SearchBatchResponse.ProtoReflect.Descriptor instead. +func (*SearchBatchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{68} } -func (x *Filter) GetMustNot() []*Condition { +func (x *SearchBatchResponse) GetResult() []*BatchResult { if x != nil { - return x.MustNot + return x.Result } return nil } -func (x *Filter) GetMinShould() *MinShould { +func (x *SearchBatchResponse) GetTime() float64 { if x != nil { - return x.MinShould + return x.Time } - return nil + return 0 } -type MinShould struct { +type SearchGroupsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Conditions []*Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` - MinCount uint64 `protobuf:"varint,2,opt,name=min_count,json=minCount,proto3" json:"min_count,omitempty"` + Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *MinShould) Reset() { - *x = MinShould{} +func (x *SearchGroupsResponse) Reset() { + *x = SearchGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[67] + mi := &file_points_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MinShould) String() string { +func (x *SearchGroupsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MinShould) ProtoMessage() {} +func (*SearchGroupsResponse) ProtoMessage() {} -func (x *MinShould) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[67] +func (x *SearchGroupsResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5539,58 +5989,51 @@ func (x *MinShould) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MinShould.ProtoReflect.Descriptor instead. -func (*MinShould) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{67} +// Deprecated: Use SearchGroupsResponse.ProtoReflect.Descriptor instead. +func (*SearchGroupsResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{69} } -func (x *MinShould) GetConditions() []*Condition { +func (x *SearchGroupsResponse) GetResult() *GroupsResult { if x != nil { - return x.Conditions + return x.Result } return nil } -func (x *MinShould) GetMinCount() uint64 { +func (x *SearchGroupsResponse) GetTime() float64 { if x != nil { - return x.MinCount + return x.Time } return 0 } -type Condition struct { +type CountResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to ConditionOneOf: - // - // *Condition_Field - // *Condition_IsEmpty - // *Condition_HasId - // *Condition_Filter - // *Condition_IsNull - // *Condition_Nested - ConditionOneOf isCondition_ConditionOneOf `protobuf_oneof:"condition_one_of"` + Result *CountResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Condition) Reset() { - *x = Condition{} +func (x *CountResponse) Reset() { + *x = CountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[68] + mi := &file_points_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Condition) String() string { +func (x *CountResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Condition) ProtoMessage() {} +func (*CountResponse) ProtoMessage() {} -func (x *Condition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[68] +func (x *CountResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5601,125 +6044,113 @@ func (x *Condition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Condition.ProtoReflect.Descriptor instead. -func (*Condition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{68} +// Deprecated: Use CountResponse.ProtoReflect.Descriptor instead. +func (*CountResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{70} } -func (m *Condition) GetConditionOneOf() isCondition_ConditionOneOf { - if m != nil { - return m.ConditionOneOf +func (x *CountResponse) GetResult() *CountResult { + if x != nil { + return x.Result } return nil } -func (x *Condition) GetField() *FieldCondition { - if x, ok := x.GetConditionOneOf().(*Condition_Field); ok { - return x.Field +func (x *CountResponse) GetTime() float64 { + if x != nil { + return x.Time } - return nil + return 0 } -func (x *Condition) GetIsEmpty() *IsEmptyCondition { - if x, ok := x.GetConditionOneOf().(*Condition_IsEmpty); ok { - return x.IsEmpty - } - return nil -} - -func (x *Condition) GetHasId() *HasIdCondition { - if x, ok := x.GetConditionOneOf().(*Condition_HasId); ok { - return x.HasId - } - return nil -} - -func (x *Condition) GetFilter() *Filter { - if x, ok := x.GetConditionOneOf().(*Condition_Filter); ok { - return x.Filter - } - return nil -} +type ScrollResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *Condition) GetIsNull() *IsNullCondition { - if x, ok := x.GetConditionOneOf().(*Condition_IsNull); ok { - return x.IsNull - } - return nil + NextPageOffset *PointId `protobuf:"bytes,1,opt,name=next_page_offset,json=nextPageOffset,proto3,oneof" json:"next_page_offset,omitempty"` // Use this offset for the next query + Result []*RetrievedPoint `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,3,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Condition) GetNested() *NestedCondition { - if x, ok := x.GetConditionOneOf().(*Condition_Nested); ok { - return x.Nested +func (x *ScrollResponse) Reset() { + *x = ScrollResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type isCondition_ConditionOneOf interface { - isCondition_ConditionOneOf() +func (x *ScrollResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type Condition_Field struct { - Field *FieldCondition `protobuf:"bytes,1,opt,name=field,proto3,oneof"` -} +func (*ScrollResponse) ProtoMessage() {} -type Condition_IsEmpty struct { - IsEmpty *IsEmptyCondition `protobuf:"bytes,2,opt,name=is_empty,json=isEmpty,proto3,oneof"` +func (x *ScrollResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[71] + 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) } -type Condition_HasId struct { - HasId *HasIdCondition `protobuf:"bytes,3,opt,name=has_id,json=hasId,proto3,oneof"` +// Deprecated: Use ScrollResponse.ProtoReflect.Descriptor instead. +func (*ScrollResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{71} } -type Condition_Filter struct { - Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof"` +func (x *ScrollResponse) GetNextPageOffset() *PointId { + if x != nil { + return x.NextPageOffset + } + return nil } -type Condition_IsNull struct { - IsNull *IsNullCondition `protobuf:"bytes,5,opt,name=is_null,json=isNull,proto3,oneof"` +func (x *ScrollResponse) GetResult() []*RetrievedPoint { + if x != nil { + return x.Result + } + return nil } -type Condition_Nested struct { - Nested *NestedCondition `protobuf:"bytes,6,opt,name=nested,proto3,oneof"` +func (x *ScrollResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 } -func (*Condition_Field) isCondition_ConditionOneOf() {} - -func (*Condition_IsEmpty) isCondition_ConditionOneOf() {} - -func (*Condition_HasId) isCondition_ConditionOneOf() {} - -func (*Condition_Filter) isCondition_ConditionOneOf() {} - -func (*Condition_IsNull) isCondition_ConditionOneOf() {} - -func (*Condition_Nested) isCondition_ConditionOneOf() {} - -type IsEmptyCondition struct { +type CountResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` } -func (x *IsEmptyCondition) Reset() { - *x = IsEmptyCondition{} +func (x *CountResult) Reset() { + *x = CountResult{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[69] + mi := &file_points_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsEmptyCondition) String() string { +func (x *CountResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsEmptyCondition) ProtoMessage() {} +func (*CountResult) ProtoMessage() {} -func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[69] +func (x *CountResult) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5730,43 +6161,47 @@ func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsEmptyCondition.ProtoReflect.Descriptor instead. -func (*IsEmptyCondition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{69} +// Deprecated: Use CountResult.ProtoReflect.Descriptor instead. +func (*CountResult) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{72} } -func (x *IsEmptyCondition) GetKey() string { +func (x *CountResult) GetCount() uint64 { if x != nil { - return x.Key + return x.Count } - return "" + return 0 } -type IsNullCondition struct { +type RetrievedPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Payload map[string]*Value `protobuf:"bytes,2,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` + ShardKey *ShardKey `protobuf:"bytes,5,opt,name=shard_key,json=shardKey,proto3,oneof" json:"shard_key,omitempty"` // Shard key + OrderValue *OrderValue `protobuf:"bytes,6,opt,name=order_value,json=orderValue,proto3,oneof" json:"order_value,omitempty"` // Order-by value } -func (x *IsNullCondition) Reset() { - *x = IsNullCondition{} +func (x *RetrievedPoint) Reset() { + *x = RetrievedPoint{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[70] + mi := &file_points_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsNullCondition) String() string { +func (x *RetrievedPoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsNullCondition) ProtoMessage() {} +func (*RetrievedPoint) ProtoMessage() {} -func (x *IsNullCondition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[70] +func (x *RetrievedPoint) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5777,43 +6212,72 @@ func (x *IsNullCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsNullCondition.ProtoReflect.Descriptor instead. -func (*IsNullCondition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{70} +// Deprecated: Use RetrievedPoint.ProtoReflect.Descriptor instead. +func (*RetrievedPoint) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{73} } -func (x *IsNullCondition) GetKey() string { +func (x *RetrievedPoint) GetId() *PointId { if x != nil { - return x.Key + return x.Id } - return "" + return nil } -type HasIdCondition struct { +func (x *RetrievedPoint) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *RetrievedPoint) GetVectors() *Vectors { + if x != nil { + return x.Vectors + } + return nil +} + +func (x *RetrievedPoint) GetShardKey() *ShardKey { + if x != nil { + return x.ShardKey + } + return nil +} + +func (x *RetrievedPoint) GetOrderValue() *OrderValue { + if x != nil { + return x.OrderValue + } + return nil +} + +type GetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - HasId []*PointId `protobuf:"bytes,1,rep,name=has_id,json=hasId,proto3" json:"has_id,omitempty"` + Result []*RetrievedPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *HasIdCondition) Reset() { - *x = HasIdCondition{} +func (x *GetResponse) Reset() { + *x = GetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[71] + mi := &file_points_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *HasIdCondition) String() string { +func (x *GetResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HasIdCondition) ProtoMessage() {} +func (*GetResponse) ProtoMessage() {} -func (x *HasIdCondition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[71] +func (x *GetResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5824,44 +6288,51 @@ func (x *HasIdCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HasIdCondition.ProtoReflect.Descriptor instead. -func (*HasIdCondition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{71} +// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. +func (*GetResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{74} } -func (x *HasIdCondition) GetHasId() []*PointId { +func (x *GetResponse) GetResult() []*RetrievedPoint { if x != nil { - return x.HasId + return x.Result } return nil } -type NestedCondition struct { +func (x *GetResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +type RecommendResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Path to nested object - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter condition + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *NestedCondition) Reset() { - *x = NestedCondition{} +func (x *RecommendResponse) Reset() { + *x = RecommendResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[72] + mi := &file_points_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *NestedCondition) String() string { +func (x *RecommendResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NestedCondition) ProtoMessage() {} +func (*RecommendResponse) ProtoMessage() {} -func (x *NestedCondition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[72] +func (x *RecommendResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5872,57 +6343,51 @@ func (x *NestedCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NestedCondition.ProtoReflect.Descriptor instead. -func (*NestedCondition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{72} +// Deprecated: Use RecommendResponse.ProtoReflect.Descriptor instead. +func (*RecommendResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{75} } -func (x *NestedCondition) GetKey() string { +func (x *RecommendResponse) GetResult() []*ScoredPoint { if x != nil { - return x.Key + return x.Result } - return "" + return nil } -func (x *NestedCondition) GetFilter() *Filter { +func (x *RecommendResponse) GetTime() float64 { if x != nil { - return x.Filter + return x.Time } - return nil + return 0 } -type FieldCondition struct { +type RecommendBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Match *Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` // Check if point has field with a given value - Range *Range `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` // Check if points value lies in a given range - GeoBoundingBox *GeoBoundingBox `protobuf:"bytes,4,opt,name=geo_bounding_box,json=geoBoundingBox,proto3" json:"geo_bounding_box,omitempty"` // Check if points geolocation lies in a given area - GeoRadius *GeoRadius `protobuf:"bytes,5,opt,name=geo_radius,json=geoRadius,proto3" json:"geo_radius,omitempty"` // Check if geo point is within a given radius - ValuesCount *ValuesCount `protobuf:"bytes,6,opt,name=values_count,json=valuesCount,proto3" json:"values_count,omitempty"` // Check number of values for a specific field - GeoPolygon *GeoPolygon `protobuf:"bytes,7,opt,name=geo_polygon,json=geoPolygon,proto3" json:"geo_polygon,omitempty"` // Check if geo point is within a given polygon - DatetimeRange *DatetimeRange `protobuf:"bytes,8,opt,name=datetime_range,json=datetimeRange,proto3" json:"datetime_range,omitempty"` // Check if datetime is within a given range + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *FieldCondition) Reset() { - *x = FieldCondition{} +func (x *RecommendBatchResponse) Reset() { + *x = RecommendBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[73] + mi := &file_points_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FieldCondition) String() string { +func (x *RecommendBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FieldCondition) ProtoMessage() {} +func (*RecommendBatchResponse) ProtoMessage() {} -func (x *FieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[73] +func (x *RecommendBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5933,102 +6398,106 @@ func (x *FieldCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FieldCondition.ProtoReflect.Descriptor instead. -func (*FieldCondition) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{73} +// Deprecated: Use RecommendBatchResponse.ProtoReflect.Descriptor instead. +func (*RecommendBatchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{76} } -func (x *FieldCondition) GetKey() string { +func (x *RecommendBatchResponse) GetResult() []*BatchResult { if x != nil { - return x.Key + return x.Result } - return "" + return nil } -func (x *FieldCondition) GetMatch() *Match { +func (x *RecommendBatchResponse) GetTime() float64 { if x != nil { - return x.Match + return x.Time } - return nil + return 0 } -func (x *FieldCondition) GetRange() *Range { - if x != nil { - return x.Range - } - return nil +type DiscoverResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result []*ScoredPoint `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *FieldCondition) GetGeoBoundingBox() *GeoBoundingBox { - if x != nil { - return x.GeoBoundingBox +func (x *DiscoverResponse) Reset() { + *x = DiscoverResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FieldCondition) GetGeoRadius() *GeoRadius { - if x != nil { - return x.GeoRadius - } - return nil +func (x *DiscoverResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FieldCondition) GetValuesCount() *ValuesCount { - if x != nil { - return x.ValuesCount +func (*DiscoverResponse) ProtoMessage() {} + +func (x *DiscoverResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_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 nil + return mi.MessageOf(x) } -func (x *FieldCondition) GetGeoPolygon() *GeoPolygon { +// Deprecated: Use DiscoverResponse.ProtoReflect.Descriptor instead. +func (*DiscoverResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{77} +} + +func (x *DiscoverResponse) GetResult() []*ScoredPoint { if x != nil { - return x.GeoPolygon + return x.Result } return nil } -func (x *FieldCondition) GetDatetimeRange() *DatetimeRange { +func (x *DiscoverResponse) GetTime() float64 { if x != nil { - return x.DatetimeRange + return x.Time } - return nil + return 0 } -type Match struct { +type DiscoverBatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to MatchValue: - // - // *Match_Keyword - // *Match_Integer - // *Match_Boolean - // *Match_Text - // *Match_Keywords - // *Match_Integers - // *Match_ExceptIntegers - // *Match_ExceptKeywords - MatchValue isMatch_MatchValue `protobuf_oneof:"match_value"` + Result []*BatchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Match) Reset() { - *x = Match{} +func (x *DiscoverBatchResponse) Reset() { + *x = DiscoverBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[74] + mi := &file_points_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Match) String() string { +func (x *DiscoverBatchResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Match) ProtoMessage() {} +func (*DiscoverBatchResponse) ProtoMessage() {} -func (x *Match) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[74] +func (x *DiscoverBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6039,151 +6508,106 @@ func (x *Match) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Match.ProtoReflect.Descriptor instead. -func (*Match) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{74} +// Deprecated: Use DiscoverBatchResponse.ProtoReflect.Descriptor instead. +func (*DiscoverBatchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{78} } -func (m *Match) GetMatchValue() isMatch_MatchValue { - if m != nil { - return m.MatchValue +func (x *DiscoverBatchResponse) GetResult() []*BatchResult { + if x != nil { + return x.Result } return nil } -func (x *Match) GetKeyword() string { - if x, ok := x.GetMatchValue().(*Match_Keyword); ok { - return x.Keyword - } - return "" -} - -func (x *Match) GetInteger() int64 { - if x, ok := x.GetMatchValue().(*Match_Integer); ok { - return x.Integer +func (x *DiscoverBatchResponse) GetTime() float64 { + if x != nil { + return x.Time } return 0 } -func (x *Match) GetBoolean() bool { - if x, ok := x.GetMatchValue().(*Match_Boolean); ok { - return x.Boolean - } - return false +type RecommendGroupsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result *GroupsResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -func (x *Match) GetText() string { - if x, ok := x.GetMatchValue().(*Match_Text); ok { - return x.Text +func (x *RecommendGroupsResponse) Reset() { + *x = RecommendGroupsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Match) GetKeywords() *RepeatedStrings { - if x, ok := x.GetMatchValue().(*Match_Keywords); ok { - return x.Keywords - } - return nil +func (x *RecommendGroupsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Match) GetIntegers() *RepeatedIntegers { - if x, ok := x.GetMatchValue().(*Match_Integers); ok { - return x.Integers +func (*RecommendGroupsResponse) ProtoMessage() {} + +func (x *RecommendGroupsResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Match) GetExceptIntegers() *RepeatedIntegers { - if x, ok := x.GetMatchValue().(*Match_ExceptIntegers); ok { - return x.ExceptIntegers - } - return nil +// Deprecated: Use RecommendGroupsResponse.ProtoReflect.Descriptor instead. +func (*RecommendGroupsResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{79} } -func (x *Match) GetExceptKeywords() *RepeatedStrings { - if x, ok := x.GetMatchValue().(*Match_ExceptKeywords); ok { - return x.ExceptKeywords +func (x *RecommendGroupsResponse) GetResult() *GroupsResult { + if x != nil { + return x.Result } return nil } -type isMatch_MatchValue interface { - isMatch_MatchValue() -} - -type Match_Keyword struct { - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3,oneof"` // Match string keyword +func (x *RecommendGroupsResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 } -type Match_Integer struct { - Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` // Match integer -} +type UpdateBatchResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type Match_Boolean struct { - Boolean bool `protobuf:"varint,3,opt,name=boolean,proto3,oneof"` // Match boolean + Result []*UpdateResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + Time float64 `protobuf:"fixed64,2,opt,name=time,proto3" json:"time,omitempty"` // Time spent to process } -type Match_Text struct { - Text string `protobuf:"bytes,4,opt,name=text,proto3,oneof"` // Match text +func (x *UpdateBatchResponse) Reset() { + *x = UpdateBatchResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type Match_Keywords struct { - Keywords *RepeatedStrings `protobuf:"bytes,5,opt,name=keywords,proto3,oneof"` // Match multiple keywords +func (x *UpdateBatchResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type Match_Integers struct { - Integers *RepeatedIntegers `protobuf:"bytes,6,opt,name=integers,proto3,oneof"` // Match multiple integers -} +func (*UpdateBatchResponse) ProtoMessage() {} -type Match_ExceptIntegers struct { - ExceptIntegers *RepeatedIntegers `protobuf:"bytes,7,opt,name=except_integers,json=exceptIntegers,proto3,oneof"` // Match any other value except those integers -} - -type Match_ExceptKeywords struct { - ExceptKeywords *RepeatedStrings `protobuf:"bytes,8,opt,name=except_keywords,json=exceptKeywords,proto3,oneof"` // Match any other value except those keywords -} - -func (*Match_Keyword) isMatch_MatchValue() {} - -func (*Match_Integer) isMatch_MatchValue() {} - -func (*Match_Boolean) isMatch_MatchValue() {} - -func (*Match_Text) isMatch_MatchValue() {} - -func (*Match_Keywords) isMatch_MatchValue() {} - -func (*Match_Integers) isMatch_MatchValue() {} - -func (*Match_ExceptIntegers) isMatch_MatchValue() {} - -func (*Match_ExceptKeywords) isMatch_MatchValue() {} - -type RepeatedStrings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Strings []string `protobuf:"bytes,1,rep,name=strings,proto3" json:"strings,omitempty"` -} - -func (x *RepeatedStrings) Reset() { - *x = RepeatedStrings{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepeatedStrings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepeatedStrings) ProtoMessage() {} - -func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[75] +func (x *UpdateBatchResponse) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6194,43 +6618,53 @@ func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RepeatedStrings.ProtoReflect.Descriptor instead. -func (*RepeatedStrings) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{75} +// Deprecated: Use UpdateBatchResponse.ProtoReflect.Descriptor instead. +func (*UpdateBatchResponse) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{80} } -func (x *RepeatedStrings) GetStrings() []string { +func (x *UpdateBatchResponse) GetResult() []*UpdateResult { if x != nil { - return x.Strings + return x.Result } return nil } -type RepeatedIntegers struct { +func (x *UpdateBatchResponse) GetTime() float64 { + if x != nil { + return x.Time + } + return 0 +} + +type Filter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Integers []int64 `protobuf:"varint,1,rep,packed,name=integers,proto3" json:"integers,omitempty"` + Should []*Condition `protobuf:"bytes,1,rep,name=should,proto3" json:"should,omitempty"` // At least one of those conditions should match + Must []*Condition `protobuf:"bytes,2,rep,name=must,proto3" json:"must,omitempty"` // All conditions must match + MustNot []*Condition `protobuf:"bytes,3,rep,name=must_not,json=mustNot,proto3" json:"must_not,omitempty"` // All conditions must NOT match + MinShould *MinShould `protobuf:"bytes,4,opt,name=min_should,json=minShould,proto3,oneof" json:"min_should,omitempty"` // At least minimum amount of given conditions should match } -func (x *RepeatedIntegers) Reset() { - *x = RepeatedIntegers{} +func (x *Filter) Reset() { + *x = Filter{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[76] + mi := &file_points_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RepeatedIntegers) String() string { +func (x *Filter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RepeatedIntegers) ProtoMessage() {} +func (*Filter) ProtoMessage() {} -func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[76] +func (x *Filter) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6241,46 +6675,65 @@ func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RepeatedIntegers.ProtoReflect.Descriptor instead. -func (*RepeatedIntegers) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{76} +// Deprecated: Use Filter.ProtoReflect.Descriptor instead. +func (*Filter) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{81} } -func (x *RepeatedIntegers) GetIntegers() []int64 { +func (x *Filter) GetShould() []*Condition { if x != nil { - return x.Integers + return x.Should } return nil } -type Range struct { +func (x *Filter) GetMust() []*Condition { + if x != nil { + return x.Must + } + return nil +} + +func (x *Filter) GetMustNot() []*Condition { + if x != nil { + return x.MustNot + } + return nil +} + +func (x *Filter) GetMinShould() *MinShould { + if x != nil { + return x.MinShould + } + return nil +} + +type MinShould struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lt *float64 `protobuf:"fixed64,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *float64 `protobuf:"fixed64,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *float64 `protobuf:"fixed64,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *float64 `protobuf:"fixed64,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + Conditions []*Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` + MinCount uint64 `protobuf:"varint,2,opt,name=min_count,json=minCount,proto3" json:"min_count,omitempty"` } -func (x *Range) Reset() { - *x = Range{} +func (x *MinShould) Reset() { + *x = MinShould{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[77] + mi := &file_points_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Range) String() string { +func (x *MinShould) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Range) ProtoMessage() {} +func (*MinShould) ProtoMessage() {} -func (x *Range) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[77] +func (x *MinShould) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6291,67 +6744,58 @@ func (x *Range) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Range.ProtoReflect.Descriptor instead. -func (*Range) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{77} -} - -func (x *Range) GetLt() float64 { - if x != nil && x.Lt != nil { - return *x.Lt - } - return 0 -} - -func (x *Range) GetGt() float64 { - if x != nil && x.Gt != nil { - return *x.Gt - } - return 0 +// Deprecated: Use MinShould.ProtoReflect.Descriptor instead. +func (*MinShould) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{82} } -func (x *Range) GetGte() float64 { - if x != nil && x.Gte != nil { - return *x.Gte +func (x *MinShould) GetConditions() []*Condition { + if x != nil { + return x.Conditions } - return 0 + return nil } -func (x *Range) GetLte() float64 { - if x != nil && x.Lte != nil { - return *x.Lte +func (x *MinShould) GetMinCount() uint64 { + if x != nil { + return x.MinCount } return 0 } -type DatetimeRange struct { +type Condition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + // Types that are assignable to ConditionOneOf: + // + // *Condition_Field + // *Condition_IsEmpty + // *Condition_HasId + // *Condition_Filter + // *Condition_IsNull + // *Condition_Nested + ConditionOneOf isCondition_ConditionOneOf `protobuf_oneof:"condition_one_of"` } -func (x *DatetimeRange) Reset() { - *x = DatetimeRange{} +func (x *Condition) Reset() { + *x = Condition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[78] + mi := &file_points_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DatetimeRange) String() string { +func (x *Condition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DatetimeRange) ProtoMessage() {} +func (*Condition) ProtoMessage() {} -func (x *DatetimeRange) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[78] +func (x *Condition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6362,120 +6806,125 @@ func (x *DatetimeRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DatetimeRange.ProtoReflect.Descriptor instead. -func (*DatetimeRange) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{78} +// Deprecated: Use Condition.ProtoReflect.Descriptor instead. +func (*Condition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{83} } -func (x *DatetimeRange) GetLt() *timestamppb.Timestamp { - if x != nil { - return x.Lt +func (m *Condition) GetConditionOneOf() isCondition_ConditionOneOf { + if m != nil { + return m.ConditionOneOf } return nil } -func (x *DatetimeRange) GetGt() *timestamppb.Timestamp { - if x != nil { - return x.Gt +func (x *Condition) GetField() *FieldCondition { + if x, ok := x.GetConditionOneOf().(*Condition_Field); ok { + return x.Field } return nil } -func (x *DatetimeRange) GetGte() *timestamppb.Timestamp { - if x != nil { - return x.Gte +func (x *Condition) GetIsEmpty() *IsEmptyCondition { + if x, ok := x.GetConditionOneOf().(*Condition_IsEmpty); ok { + return x.IsEmpty } return nil } -func (x *DatetimeRange) GetLte() *timestamppb.Timestamp { - if x != nil { - return x.Lte +func (x *Condition) GetHasId() *HasIdCondition { + if x, ok := x.GetConditionOneOf().(*Condition_HasId); ok { + return x.HasId } return nil } -type GeoBoundingBox struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TopLeft *GeoPoint `protobuf:"bytes,1,opt,name=top_left,json=topLeft,proto3" json:"top_left,omitempty"` // north-west corner - BottomRight *GeoPoint `protobuf:"bytes,2,opt,name=bottom_right,json=bottomRight,proto3" json:"bottom_right,omitempty"` // south-east corner +func (x *Condition) GetFilter() *Filter { + if x, ok := x.GetConditionOneOf().(*Condition_Filter); ok { + return x.Filter + } + return nil } -func (x *GeoBoundingBox) Reset() { - *x = GeoBoundingBox{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Condition) GetIsNull() *IsNullCondition { + if x, ok := x.GetConditionOneOf().(*Condition_IsNull); ok { + return x.IsNull } + return nil } -func (x *GeoBoundingBox) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Condition) GetNested() *NestedCondition { + if x, ok := x.GetConditionOneOf().(*Condition_Nested); ok { + return x.Nested + } + return nil } -func (*GeoBoundingBox) ProtoMessage() {} +type isCondition_ConditionOneOf interface { + isCondition_ConditionOneOf() +} -func (x *GeoBoundingBox) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[79] - 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) +type Condition_Field struct { + Field *FieldCondition `protobuf:"bytes,1,opt,name=field,proto3,oneof"` } -// Deprecated: Use GeoBoundingBox.ProtoReflect.Descriptor instead. -func (*GeoBoundingBox) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{79} +type Condition_IsEmpty struct { + IsEmpty *IsEmptyCondition `protobuf:"bytes,2,opt,name=is_empty,json=isEmpty,proto3,oneof"` } -func (x *GeoBoundingBox) GetTopLeft() *GeoPoint { - if x != nil { - return x.TopLeft - } - return nil +type Condition_HasId struct { + HasId *HasIdCondition `protobuf:"bytes,3,opt,name=has_id,json=hasId,proto3,oneof"` } -func (x *GeoBoundingBox) GetBottomRight() *GeoPoint { - if x != nil { - return x.BottomRight - } - return nil +type Condition_Filter struct { + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof"` } -type GeoRadius struct { +type Condition_IsNull struct { + IsNull *IsNullCondition `protobuf:"bytes,5,opt,name=is_null,json=isNull,proto3,oneof"` +} + +type Condition_Nested struct { + Nested *NestedCondition `protobuf:"bytes,6,opt,name=nested,proto3,oneof"` +} + +func (*Condition_Field) isCondition_ConditionOneOf() {} + +func (*Condition_IsEmpty) isCondition_ConditionOneOf() {} + +func (*Condition_HasId) isCondition_ConditionOneOf() {} + +func (*Condition_Filter) isCondition_ConditionOneOf() {} + +func (*Condition_IsNull) isCondition_ConditionOneOf() {} + +func (*Condition_Nested) isCondition_ConditionOneOf() {} + +type IsEmptyCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Center *GeoPoint `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` // Center of the circle - Radius float32 `protobuf:"fixed32,2,opt,name=radius,proto3" json:"radius,omitempty"` // In meters + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (x *GeoRadius) Reset() { - *x = GeoRadius{} +func (x *IsEmptyCondition) Reset() { + *x = IsEmptyCondition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[80] + mi := &file_points_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GeoRadius) String() string { +func (x *IsEmptyCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoRadius) ProtoMessage() {} +func (*IsEmptyCondition) ProtoMessage() {} -func (x *GeoRadius) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[80] +func (x *IsEmptyCondition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6486,50 +6935,43 @@ func (x *GeoRadius) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoRadius.ProtoReflect.Descriptor instead. -func (*GeoRadius) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{80} -} - -func (x *GeoRadius) GetCenter() *GeoPoint { - if x != nil { - return x.Center - } - return nil +// Deprecated: Use IsEmptyCondition.ProtoReflect.Descriptor instead. +func (*IsEmptyCondition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{84} } -func (x *GeoRadius) GetRadius() float32 { +func (x *IsEmptyCondition) GetKey() string { if x != nil { - return x.Radius + return x.Key } - return 0 + return "" } -type GeoLineString struct { +type IsNullCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points []*GeoPoint `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // Ordered sequence of GeoPoints representing the line + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (x *GeoLineString) Reset() { - *x = GeoLineString{} +func (x *IsNullCondition) Reset() { + *x = IsNullCondition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[81] + mi := &file_points_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GeoLineString) String() string { +func (x *IsNullCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoLineString) ProtoMessage() {} +func (*IsNullCondition) ProtoMessage() {} -func (x *GeoLineString) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[81] +func (x *IsNullCondition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6540,46 +6982,43 @@ func (x *GeoLineString) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoLineString.ProtoReflect.Descriptor instead. -func (*GeoLineString) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{81} +// Deprecated: Use IsNullCondition.ProtoReflect.Descriptor instead. +func (*IsNullCondition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{85} } -func (x *GeoLineString) GetPoints() []*GeoPoint { +func (x *IsNullCondition) GetKey() string { if x != nil { - return x.Points + return x.Key } - return nil + return "" } -// For a valid GeoPolygon, both the exterior and interior GeoLineStrings must consist of a minimum of 4 points. -// Additionally, the first and last points of each GeoLineString must be the same. -type GeoPolygon struct { +type HasIdCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Exterior *GeoLineString `protobuf:"bytes,1,opt,name=exterior,proto3" json:"exterior,omitempty"` // The exterior line bounds the surface - Interiors []*GeoLineString `protobuf:"bytes,2,rep,name=interiors,proto3" json:"interiors,omitempty"` // Interior lines (if present) bound holes within the surface + HasId []*PointId `protobuf:"bytes,1,rep,name=has_id,json=hasId,proto3" json:"has_id,omitempty"` } -func (x *GeoPolygon) Reset() { - *x = GeoPolygon{} +func (x *HasIdCondition) Reset() { + *x = HasIdCondition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[82] + mi := &file_points_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GeoPolygon) String() string { +func (x *HasIdCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GeoPolygon) ProtoMessage() {} +func (*HasIdCondition) ProtoMessage() {} -func (x *GeoPolygon) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[82] +func (x *HasIdCondition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6590,53 +7029,44 @@ func (x *GeoPolygon) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GeoPolygon.ProtoReflect.Descriptor instead. -func (*GeoPolygon) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{82} -} - -func (x *GeoPolygon) GetExterior() *GeoLineString { - if x != nil { - return x.Exterior - } - return nil +// Deprecated: Use HasIdCondition.ProtoReflect.Descriptor instead. +func (*HasIdCondition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{86} } -func (x *GeoPolygon) GetInteriors() []*GeoLineString { +func (x *HasIdCondition) GetHasId() []*PointId { if x != nil { - return x.Interiors + return x.HasId } return nil } -type ValuesCount struct { +type NestedCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Lt *uint64 `protobuf:"varint,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` - Gt *uint64 `protobuf:"varint,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` - Gte *uint64 `protobuf:"varint,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` - Lte *uint64 `protobuf:"varint,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Path to nested object + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Filter condition } -func (x *ValuesCount) Reset() { - *x = ValuesCount{} +func (x *NestedCondition) Reset() { + *x = NestedCondition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[83] + mi := &file_points_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ValuesCount) String() string { +func (x *NestedCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ValuesCount) ProtoMessage() {} +func (*NestedCondition) ProtoMessage() {} -func (x *ValuesCount) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[83] +func (x *NestedCondition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6647,68 +7077,57 @@ func (x *ValuesCount) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ValuesCount.ProtoReflect.Descriptor instead. -func (*ValuesCount) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{83} -} - -func (x *ValuesCount) GetLt() uint64 { - if x != nil && x.Lt != nil { - return *x.Lt - } - return 0 -} - -func (x *ValuesCount) GetGt() uint64 { - if x != nil && x.Gt != nil { - return *x.Gt - } - return 0 +// Deprecated: Use NestedCondition.ProtoReflect.Descriptor instead. +func (*NestedCondition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{87} } -func (x *ValuesCount) GetGte() uint64 { - if x != nil && x.Gte != nil { - return *x.Gte +func (x *NestedCondition) GetKey() string { + if x != nil { + return x.Key } - return 0 + return "" } -func (x *ValuesCount) GetLte() uint64 { - if x != nil && x.Lte != nil { - return *x.Lte +func (x *NestedCondition) GetFilter() *Filter { + if x != nil { + return x.Filter } - return 0 + return nil } -type PointsSelector struct { +type FieldCondition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to PointsSelectorOneOf: - // - // *PointsSelector_Points - // *PointsSelector_Filter - PointsSelectorOneOf isPointsSelector_PointsSelectorOneOf `protobuf_oneof:"points_selector_one_of"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Match *Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` // Check if point has field with a given value + Range *Range `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` // Check if points value lies in a given range + GeoBoundingBox *GeoBoundingBox `protobuf:"bytes,4,opt,name=geo_bounding_box,json=geoBoundingBox,proto3" json:"geo_bounding_box,omitempty"` // Check if points geolocation lies in a given area + GeoRadius *GeoRadius `protobuf:"bytes,5,opt,name=geo_radius,json=geoRadius,proto3" json:"geo_radius,omitempty"` // Check if geo point is within a given radius + ValuesCount *ValuesCount `protobuf:"bytes,6,opt,name=values_count,json=valuesCount,proto3" json:"values_count,omitempty"` // Check number of values for a specific field + GeoPolygon *GeoPolygon `protobuf:"bytes,7,opt,name=geo_polygon,json=geoPolygon,proto3" json:"geo_polygon,omitempty"` // Check if geo point is within a given polygon + DatetimeRange *DatetimeRange `protobuf:"bytes,8,opt,name=datetime_range,json=datetimeRange,proto3" json:"datetime_range,omitempty"` // Check if datetime is within a given range } -func (x *PointsSelector) Reset() { - *x = PointsSelector{} +func (x *FieldCondition) Reset() { + *x = FieldCondition{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[84] + mi := &file_points_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsSelector) String() string { +func (x *FieldCondition) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsSelector) ProtoMessage() {} +func (*FieldCondition) ProtoMessage() {} -func (x *PointsSelector) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[84] +func (x *FieldCondition) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6719,73 +7138,102 @@ func (x *PointsSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsSelector.ProtoReflect.Descriptor instead. -func (*PointsSelector) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{84} +// Deprecated: Use FieldCondition.ProtoReflect.Descriptor instead. +func (*FieldCondition) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{88} } -func (m *PointsSelector) GetPointsSelectorOneOf() isPointsSelector_PointsSelectorOneOf { - if m != nil { - return m.PointsSelectorOneOf +func (x *FieldCondition) GetKey() string { + if x != nil { + return x.Key } - return nil + return "" } -func (x *PointsSelector) GetPoints() *PointsIdsList { - if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Points); ok { - return x.Points +func (x *FieldCondition) GetMatch() *Match { + if x != nil { + return x.Match } return nil } -func (x *PointsSelector) GetFilter() *Filter { - if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Filter); ok { - return x.Filter +func (x *FieldCondition) GetRange() *Range { + if x != nil { + return x.Range } return nil } -type isPointsSelector_PointsSelectorOneOf interface { - isPointsSelector_PointsSelectorOneOf() +func (x *FieldCondition) GetGeoBoundingBox() *GeoBoundingBox { + if x != nil { + return x.GeoBoundingBox + } + return nil } -type PointsSelector_Points struct { - Points *PointsIdsList `protobuf:"bytes,1,opt,name=points,proto3,oneof"` +func (x *FieldCondition) GetGeoRadius() *GeoRadius { + if x != nil { + return x.GeoRadius + } + return nil } -type PointsSelector_Filter struct { - Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof"` +func (x *FieldCondition) GetValuesCount() *ValuesCount { + if x != nil { + return x.ValuesCount + } + return nil } -func (*PointsSelector_Points) isPointsSelector_PointsSelectorOneOf() {} +func (x *FieldCondition) GetGeoPolygon() *GeoPolygon { + if x != nil { + return x.GeoPolygon + } + return nil +} -func (*PointsSelector_Filter) isPointsSelector_PointsSelectorOneOf() {} +func (x *FieldCondition) GetDatetimeRange() *DatetimeRange { + if x != nil { + return x.DatetimeRange + } + return nil +} -type PointsIdsList struct { +type Match struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ids []*PointId `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + // Types that are assignable to MatchValue: + // + // *Match_Keyword + // *Match_Integer + // *Match_Boolean + // *Match_Text + // *Match_Keywords + // *Match_Integers + // *Match_ExceptIntegers + // *Match_ExceptKeywords + MatchValue isMatch_MatchValue `protobuf_oneof:"match_value"` } -func (x *PointsIdsList) Reset() { - *x = PointsIdsList{} +func (x *Match) Reset() { + *x = Match{} if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[85] + mi := &file_points_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PointsIdsList) String() string { +func (x *Match) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsIdsList) ProtoMessage() {} +func (*Match) ProtoMessage() {} -func (x *PointsIdsList) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[85] +func (x *Match) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6796,147 +7244,136 @@ func (x *PointsIdsList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsIdsList.ProtoReflect.Descriptor instead. -func (*PointsIdsList) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{85} +// Deprecated: Use Match.ProtoReflect.Descriptor instead. +func (*Match) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{89} } -func (x *PointsIdsList) GetIds() []*PointId { - if x != nil { - return x.Ids +func (m *Match) GetMatchValue() isMatch_MatchValue { + if m != nil { + return m.MatchValue } return nil } -type PointStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` +func (x *Match) GetKeyword() string { + if x, ok := x.GetMatchValue().(*Match_Keyword); ok { + return x.Keyword + } + return "" } -func (x *PointStruct) Reset() { - *x = PointStruct{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Match) GetInteger() int64 { + if x, ok := x.GetMatchValue().(*Match_Integer); ok { + return x.Integer } + return 0 } -func (x *PointStruct) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Match) GetBoolean() bool { + if x, ok := x.GetMatchValue().(*Match_Boolean); ok { + return x.Boolean + } + return false } -func (*PointStruct) ProtoMessage() {} - -func (x *PointStruct) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Match) GetText() string { + if x, ok := x.GetMatchValue().(*Match_Text); ok { + return x.Text } - return mi.MessageOf(x) + return "" } -// Deprecated: Use PointStruct.ProtoReflect.Descriptor instead. -func (*PointStruct) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{86} +func (x *Match) GetKeywords() *RepeatedStrings { + if x, ok := x.GetMatchValue().(*Match_Keywords); ok { + return x.Keywords + } + return nil } -func (x *PointStruct) GetId() *PointId { - if x != nil { - return x.Id +func (x *Match) GetIntegers() *RepeatedIntegers { + if x, ok := x.GetMatchValue().(*Match_Integers); ok { + return x.Integers } return nil } -func (x *PointStruct) GetPayload() map[string]*Value { - if x != nil { - return x.Payload +func (x *Match) GetExceptIntegers() *RepeatedIntegers { + if x, ok := x.GetMatchValue().(*Match_ExceptIntegers); ok { + return x.ExceptIntegers } return nil } -func (x *PointStruct) GetVectors() *Vectors { - if x != nil { - return x.Vectors +func (x *Match) GetExceptKeywords() *RepeatedStrings { + if x, ok := x.GetMatchValue().(*Match_ExceptKeywords); ok { + return x.ExceptKeywords } return nil } -type GeoPoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type isMatch_MatchValue interface { + isMatch_MatchValue() +} - Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` - Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` +type Match_Keyword struct { + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3,oneof"` // Match string keyword } -func (x *GeoPoint) Reset() { - *x = GeoPoint{} - if protoimpl.UnsafeEnabled { - mi := &file_points_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type Match_Integer struct { + Integer int64 `protobuf:"varint,2,opt,name=integer,proto3,oneof"` // Match integer } -func (x *GeoPoint) String() string { - return protoimpl.X.MessageStringOf(x) +type Match_Boolean struct { + Boolean bool `protobuf:"varint,3,opt,name=boolean,proto3,oneof"` // Match boolean } -func (*GeoPoint) ProtoMessage() {} +type Match_Text struct { + Text string `protobuf:"bytes,4,opt,name=text,proto3,oneof"` // Match text +} -func (x *GeoPoint) ProtoReflect() protoreflect.Message { - mi := &file_points_proto_msgTypes[87] - 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) +type Match_Keywords struct { + Keywords *RepeatedStrings `protobuf:"bytes,5,opt,name=keywords,proto3,oneof"` // Match multiple keywords } -// Deprecated: Use GeoPoint.ProtoReflect.Descriptor instead. -func (*GeoPoint) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{87} +type Match_Integers struct { + Integers *RepeatedIntegers `protobuf:"bytes,6,opt,name=integers,proto3,oneof"` // Match multiple integers } -func (x *GeoPoint) GetLon() float64 { - if x != nil { - return x.Lon - } - return 0 +type Match_ExceptIntegers struct { + ExceptIntegers *RepeatedIntegers `protobuf:"bytes,7,opt,name=except_integers,json=exceptIntegers,proto3,oneof"` // Match any other value except those integers } -func (x *GeoPoint) GetLat() float64 { - if x != nil { - return x.Lat - } - return 0 +type Match_ExceptKeywords struct { + ExceptKeywords *RepeatedStrings `protobuf:"bytes,8,opt,name=except_keywords,json=exceptKeywords,proto3,oneof"` // Match any other value except those keywords } -type PointsUpdateOperation_PointStructList struct { +func (*Match_Keyword) isMatch_MatchValue() {} + +func (*Match_Integer) isMatch_MatchValue() {} + +func (*Match_Boolean) isMatch_MatchValue() {} + +func (*Match_Text) isMatch_MatchValue() {} + +func (*Match_Keywords) isMatch_MatchValue() {} + +func (*Match_Integers) isMatch_MatchValue() {} + +func (*Match_ExceptIntegers) isMatch_MatchValue() {} + +func (*Match_ExceptKeywords) isMatch_MatchValue() {} + +type RepeatedStrings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points []*PointStruct `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Strings []string `protobuf:"bytes,1,rep,name=strings,proto3" json:"strings,omitempty"` } -func (x *PointsUpdateOperation_PointStructList) Reset() { - *x = PointsUpdateOperation_PointStructList{} +func (x *RepeatedStrings) Reset() { + *x = RepeatedStrings{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6944,13 +7381,13 @@ func (x *PointsUpdateOperation_PointStructList) Reset() { } } -func (x *PointsUpdateOperation_PointStructList) String() string { +func (x *RepeatedStrings) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_PointStructList) ProtoMessage() {} +func (*RepeatedStrings) ProtoMessage() {} -func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Message { +func (x *RepeatedStrings) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6962,38 +7399,28 @@ func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_PointStructList.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_PointStructList) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 0} -} - -func (x *PointsUpdateOperation_PointStructList) GetPoints() []*PointStruct { - if x != nil { - return x.Points - } - return nil +// Deprecated: Use RepeatedStrings.ProtoReflect.Descriptor instead. +func (*RepeatedStrings) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{90} } -func (x *PointsUpdateOperation_PointStructList) GetShardKeySelector() *ShardKeySelector { +func (x *RepeatedStrings) GetStrings() []string { if x != nil { - return x.ShardKeySelector + return x.Strings } return nil } -type PointsUpdateOperation_SetPayload struct { +type RepeatedIntegers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys - Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload + Integers []int64 `protobuf:"varint,1,rep,packed,name=integers,proto3" json:"integers,omitempty"` } -func (x *PointsUpdateOperation_SetPayload) Reset() { - *x = PointsUpdateOperation_SetPayload{} +func (x *RepeatedIntegers) Reset() { + *x = RepeatedIntegers{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7001,13 +7428,13 @@ func (x *PointsUpdateOperation_SetPayload) Reset() { } } -func (x *PointsUpdateOperation_SetPayload) String() string { +func (x *RepeatedIntegers) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_SetPayload) ProtoMessage() {} +func (*RepeatedIntegers) ProtoMessage() {} -func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { +func (x *RepeatedIntegers) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7019,51 +7446,31 @@ func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_SetPayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_SetPayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 1} -} - -func (x *PointsUpdateOperation_SetPayload) GetPayload() map[string]*Value { - if x != nil { - return x.Payload - } - return nil -} - -func (x *PointsUpdateOperation_SetPayload) GetPointsSelector() *PointsSelector { - if x != nil { - return x.PointsSelector - } - return nil +// Deprecated: Use RepeatedIntegers.ProtoReflect.Descriptor instead. +func (*RepeatedIntegers) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{91} } -func (x *PointsUpdateOperation_SetPayload) GetShardKeySelector() *ShardKeySelector { +func (x *RepeatedIntegers) GetIntegers() []int64 { if x != nil { - return x.ShardKeySelector + return x.Integers } return nil } -func (x *PointsUpdateOperation_SetPayload) GetKey() string { - if x != nil && x.Key != nil { - return *x.Key - } - return "" -} - -type PointsUpdateOperation_DeletePayload struct { +type Range struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Lt *float64 `protobuf:"fixed64,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *float64 `protobuf:"fixed64,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *float64 `protobuf:"fixed64,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *float64 `protobuf:"fixed64,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` } -func (x *PointsUpdateOperation_DeletePayload) Reset() { - *x = PointsUpdateOperation_DeletePayload{} +func (x *Range) Reset() { + *x = Range{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7071,13 +7478,13 @@ func (x *PointsUpdateOperation_DeletePayload) Reset() { } } -func (x *PointsUpdateOperation_DeletePayload) String() string { +func (x *Range) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeletePayload) ProtoMessage() {} +func (*Range) ProtoMessage() {} -func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Message { +func (x *Range) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7089,43 +7496,52 @@ func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeletePayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeletePayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 2} +// Deprecated: Use Range.ProtoReflect.Descriptor instead. +func (*Range) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{92} } -func (x *PointsUpdateOperation_DeletePayload) GetKeys() []string { - if x != nil { - return x.Keys +func (x *Range) GetLt() float64 { + if x != nil && x.Lt != nil { + return *x.Lt } - return nil + return 0 } -func (x *PointsUpdateOperation_DeletePayload) GetPointsSelector() *PointsSelector { - if x != nil { - return x.PointsSelector +func (x *Range) GetGt() float64 { + if x != nil && x.Gt != nil { + return *x.Gt } - return nil + return 0 } -func (x *PointsUpdateOperation_DeletePayload) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector +func (x *Range) GetGte() float64 { + if x != nil && x.Gte != nil { + return *x.Gte } - return nil + return 0 } -type PointsUpdateOperation_UpdateVectors struct { +func (x *Range) GetLte() float64 { + if x != nil && x.Lte != nil { + return *x.Lte + } + return 0 +} + +type DatetimeRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points []*PointVectors `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Lt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` } -func (x *PointsUpdateOperation_UpdateVectors) Reset() { - *x = PointsUpdateOperation_UpdateVectors{} +func (x *DatetimeRange) Reset() { + *x = DatetimeRange{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7133,13 +7549,13 @@ func (x *PointsUpdateOperation_UpdateVectors) Reset() { } } -func (x *PointsUpdateOperation_UpdateVectors) String() string { +func (x *DatetimeRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_UpdateVectors) ProtoMessage() {} +func (*DatetimeRange) ProtoMessage() {} -func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Message { +func (x *DatetimeRange) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7151,37 +7567,50 @@ func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_UpdateVectors.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_UpdateVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 3} +// Deprecated: Use DatetimeRange.ProtoReflect.Descriptor instead. +func (*DatetimeRange) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{93} } -func (x *PointsUpdateOperation_UpdateVectors) GetPoints() []*PointVectors { +func (x *DatetimeRange) GetLt() *timestamppb.Timestamp { if x != nil { - return x.Points + return x.Lt } return nil } -func (x *PointsUpdateOperation_UpdateVectors) GetShardKeySelector() *ShardKeySelector { +func (x *DatetimeRange) GetGt() *timestamppb.Timestamp { if x != nil { - return x.ShardKeySelector + return x.Gt } return nil } -type PointsUpdateOperation_DeleteVectors struct { +func (x *DatetimeRange) GetGte() *timestamppb.Timestamp { + if x != nil { + return x.Gte + } + return nil +} + +func (x *DatetimeRange) GetLte() *timestamppb.Timestamp { + if x != nil { + return x.Lte + } + return nil +} + +type GeoBoundingBox struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PointsSelector *PointsSelector `protobuf:"bytes,1,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points - Vectors *VectorsSelector `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete - ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + TopLeft *GeoPoint `protobuf:"bytes,1,opt,name=top_left,json=topLeft,proto3" json:"top_left,omitempty"` // north-west corner + BottomRight *GeoPoint `protobuf:"bytes,2,opt,name=bottom_right,json=bottomRight,proto3" json:"bottom_right,omitempty"` // south-east corner } -func (x *PointsUpdateOperation_DeleteVectors) Reset() { - *x = PointsUpdateOperation_DeleteVectors{} +func (x *GeoBoundingBox) Reset() { + *x = GeoBoundingBox{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7189,13 +7618,13 @@ func (x *PointsUpdateOperation_DeleteVectors) Reset() { } } -func (x *PointsUpdateOperation_DeleteVectors) String() string { +func (x *GeoBoundingBox) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeleteVectors) ProtoMessage() {} +func (*GeoBoundingBox) ProtoMessage() {} -func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Message { +func (x *GeoBoundingBox) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7207,43 +7636,36 @@ func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeleteVectors.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeleteVectors) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 4} -} - -func (x *PointsUpdateOperation_DeleteVectors) GetPointsSelector() *PointsSelector { - if x != nil { - return x.PointsSelector - } - return nil +// Deprecated: Use GeoBoundingBox.ProtoReflect.Descriptor instead. +func (*GeoBoundingBox) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{94} } -func (x *PointsUpdateOperation_DeleteVectors) GetVectors() *VectorsSelector { +func (x *GeoBoundingBox) GetTopLeft() *GeoPoint { if x != nil { - return x.Vectors + return x.TopLeft } return nil } -func (x *PointsUpdateOperation_DeleteVectors) GetShardKeySelector() *ShardKeySelector { +func (x *GeoBoundingBox) GetBottomRight() *GeoPoint { if x != nil { - return x.ShardKeySelector + return x.BottomRight } return nil } -type PointsUpdateOperation_DeletePoints struct { +type GeoRadius struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Center *GeoPoint `protobuf:"bytes,1,opt,name=center,proto3" json:"center,omitempty"` // Center of the circle + Radius float32 `protobuf:"fixed32,2,opt,name=radius,proto3" json:"radius,omitempty"` // In meters } -func (x *PointsUpdateOperation_DeletePoints) Reset() { - *x = PointsUpdateOperation_DeletePoints{} +func (x *GeoRadius) Reset() { + *x = GeoRadius{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7251,13 +7673,13 @@ func (x *PointsUpdateOperation_DeletePoints) Reset() { } } -func (x *PointsUpdateOperation_DeletePoints) String() string { +func (x *GeoRadius) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_DeletePoints) ProtoMessage() {} +func (*GeoRadius) ProtoMessage() {} -func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message { +func (x *GeoRadius) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7269,36 +7691,35 @@ func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_DeletePoints.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_DeletePoints) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 5} +// Deprecated: Use GeoRadius.ProtoReflect.Descriptor instead. +func (*GeoRadius) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{95} } -func (x *PointsUpdateOperation_DeletePoints) GetPoints() *PointsSelector { +func (x *GeoRadius) GetCenter() *GeoPoint { if x != nil { - return x.Points + return x.Center } return nil } -func (x *PointsUpdateOperation_DeletePoints) GetShardKeySelector() *ShardKeySelector { +func (x *GeoRadius) GetRadius() float32 { if x != nil { - return x.ShardKeySelector + return x.Radius } - return nil + return 0 } -type PointsUpdateOperation_ClearPayload struct { +type GeoLineString struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points - ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Points []*GeoPoint `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // Ordered sequence of GeoPoints representing the line } -func (x *PointsUpdateOperation_ClearPayload) Reset() { - *x = PointsUpdateOperation_ClearPayload{} +func (x *GeoLineString) Reset() { + *x = GeoLineString{} if protoimpl.UnsafeEnabled { mi := &file_points_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7306,13 +7727,13 @@ func (x *PointsUpdateOperation_ClearPayload) Reset() { } } -func (x *PointsUpdateOperation_ClearPayload) String() string { +func (x *GeoLineString) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PointsUpdateOperation_ClearPayload) ProtoMessage() {} +func (*GeoLineString) ProtoMessage() {} -func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message { +func (x *GeoLineString) ProtoReflect() protoreflect.Message { mi := &file_points_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7324,29 +7745,884 @@ func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PointsUpdateOperation_ClearPayload.ProtoReflect.Descriptor instead. -func (*PointsUpdateOperation_ClearPayload) Descriptor() ([]byte, []int) { - return file_points_proto_rawDescGZIP(), []int{43, 6} +// Deprecated: Use GeoLineString.ProtoReflect.Descriptor instead. +func (*GeoLineString) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{96} } -func (x *PointsUpdateOperation_ClearPayload) GetPoints() *PointsSelector { +func (x *GeoLineString) GetPoints() []*GeoPoint { if x != nil { return x.Points } return nil } -func (x *PointsUpdateOperation_ClearPayload) GetShardKeySelector() *ShardKeySelector { - if x != nil { - return x.ShardKeySelector - } - return nil -} - -var File_points_proto protoreflect.FileDescriptor - -var file_points_proto_rawDesc = []byte{ - 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, +// For a valid GeoPolygon, both the exterior and interior GeoLineStrings must consist of a minimum of 4 points. +// Additionally, the first and last points of each GeoLineString must be the same. +type GeoPolygon struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exterior *GeoLineString `protobuf:"bytes,1,opt,name=exterior,proto3" json:"exterior,omitempty"` // The exterior line bounds the surface + Interiors []*GeoLineString `protobuf:"bytes,2,rep,name=interiors,proto3" json:"interiors,omitempty"` // Interior lines (if present) bound holes within the surface +} + +func (x *GeoPolygon) Reset() { + *x = GeoPolygon{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GeoPolygon) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GeoPolygon) ProtoMessage() {} + +func (x *GeoPolygon) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[97] + 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 GeoPolygon.ProtoReflect.Descriptor instead. +func (*GeoPolygon) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{97} +} + +func (x *GeoPolygon) GetExterior() *GeoLineString { + if x != nil { + return x.Exterior + } + return nil +} + +func (x *GeoPolygon) GetInteriors() []*GeoLineString { + if x != nil { + return x.Interiors + } + return nil +} + +type ValuesCount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lt *uint64 `protobuf:"varint,1,opt,name=lt,proto3,oneof" json:"lt,omitempty"` + Gt *uint64 `protobuf:"varint,2,opt,name=gt,proto3,oneof" json:"gt,omitempty"` + Gte *uint64 `protobuf:"varint,3,opt,name=gte,proto3,oneof" json:"gte,omitempty"` + Lte *uint64 `protobuf:"varint,4,opt,name=lte,proto3,oneof" json:"lte,omitempty"` +} + +func (x *ValuesCount) Reset() { + *x = ValuesCount{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValuesCount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValuesCount) ProtoMessage() {} + +func (x *ValuesCount) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[98] + 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 ValuesCount.ProtoReflect.Descriptor instead. +func (*ValuesCount) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{98} +} + +func (x *ValuesCount) GetLt() uint64 { + if x != nil && x.Lt != nil { + return *x.Lt + } + return 0 +} + +func (x *ValuesCount) GetGt() uint64 { + if x != nil && x.Gt != nil { + return *x.Gt + } + return 0 +} + +func (x *ValuesCount) GetGte() uint64 { + if x != nil && x.Gte != nil { + return *x.Gte + } + return 0 +} + +func (x *ValuesCount) GetLte() uint64 { + if x != nil && x.Lte != nil { + return *x.Lte + } + return 0 +} + +type PointsSelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to PointsSelectorOneOf: + // + // *PointsSelector_Points + // *PointsSelector_Filter + PointsSelectorOneOf isPointsSelector_PointsSelectorOneOf `protobuf_oneof:"points_selector_one_of"` +} + +func (x *PointsSelector) Reset() { + *x = PointsSelector{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsSelector) ProtoMessage() {} + +func (x *PointsSelector) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[99] + 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 PointsSelector.ProtoReflect.Descriptor instead. +func (*PointsSelector) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{99} +} + +func (m *PointsSelector) GetPointsSelectorOneOf() isPointsSelector_PointsSelectorOneOf { + if m != nil { + return m.PointsSelectorOneOf + } + return nil +} + +func (x *PointsSelector) GetPoints() *PointsIdsList { + if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Points); ok { + return x.Points + } + return nil +} + +func (x *PointsSelector) GetFilter() *Filter { + if x, ok := x.GetPointsSelectorOneOf().(*PointsSelector_Filter); ok { + return x.Filter + } + return nil +} + +type isPointsSelector_PointsSelectorOneOf interface { + isPointsSelector_PointsSelectorOneOf() +} + +type PointsSelector_Points struct { + Points *PointsIdsList `protobuf:"bytes,1,opt,name=points,proto3,oneof"` +} + +type PointsSelector_Filter struct { + Filter *Filter `protobuf:"bytes,2,opt,name=filter,proto3,oneof"` +} + +func (*PointsSelector_Points) isPointsSelector_PointsSelectorOneOf() {} + +func (*PointsSelector_Filter) isPointsSelector_PointsSelectorOneOf() {} + +type PointsIdsList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []*PointId `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` +} + +func (x *PointsIdsList) Reset() { + *x = PointsIdsList{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsIdsList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsIdsList) ProtoMessage() {} + +func (x *PointsIdsList) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[100] + 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 PointsIdsList.ProtoReflect.Descriptor instead. +func (*PointsIdsList) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{100} +} + +func (x *PointsIdsList) GetIds() []*PointId { + if x != nil { + return x.Ids + } + return nil +} + +type PointStruct struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *PointId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Payload map[string]*Value `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vectors *Vectors `protobuf:"bytes,4,opt,name=vectors,proto3,oneof" json:"vectors,omitempty"` +} + +func (x *PointStruct) Reset() { + *x = PointStruct{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointStruct) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointStruct) ProtoMessage() {} + +func (x *PointStruct) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[101] + 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 PointStruct.ProtoReflect.Descriptor instead. +func (*PointStruct) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{101} +} + +func (x *PointStruct) GetId() *PointId { + if x != nil { + return x.Id + } + return nil +} + +func (x *PointStruct) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *PointStruct) GetVectors() *Vectors { + if x != nil { + return x.Vectors + } + return nil +} + +type GeoPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Lon float64 `protobuf:"fixed64,1,opt,name=lon,proto3" json:"lon,omitempty"` + Lat float64 `protobuf:"fixed64,2,opt,name=lat,proto3" json:"lat,omitempty"` +} + +func (x *GeoPoint) Reset() { + *x = GeoPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GeoPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GeoPoint) ProtoMessage() {} + +func (x *GeoPoint) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[102] + 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 GeoPoint.ProtoReflect.Descriptor instead. +func (*GeoPoint) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{102} +} + +func (x *GeoPoint) GetLon() float64 { + if x != nil { + return x.Lon + } + return 0 +} + +func (x *GeoPoint) GetLat() float64 { + if x != nil { + return x.Lat + } + return 0 +} + +type PointsUpdateOperation_PointStructList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points []*PointStruct `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_PointStructList) Reset() { + *x = PointsUpdateOperation_PointStructList{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_PointStructList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_PointStructList) ProtoMessage() {} + +func (x *PointsUpdateOperation_PointStructList) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[105] + 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 PointsUpdateOperation_PointStructList.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_PointStructList) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 0} +} + +func (x *PointsUpdateOperation_PointStructList) GetPoints() []*PointStruct { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_PointStructList) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_SetPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload +} + +func (x *PointsUpdateOperation_SetPayload) Reset() { + *x = PointsUpdateOperation_SetPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_SetPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_SetPayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_SetPayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[106] + 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 PointsUpdateOperation_SetPayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_SetPayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 1} +} + +func (x *PointsUpdateOperation_SetPayload) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +func (x *PointsUpdateOperation_SetPayload) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +type PointsUpdateOperation_OverwritePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload map[string]*Value `protobuf:"bytes,1,rep,name=payload,proto3" json:"payload,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys + Key *string `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"` // Option for indicate property of payload +} + +func (x *PointsUpdateOperation_OverwritePayload) Reset() { + *x = PointsUpdateOperation_OverwritePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_OverwritePayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_OverwritePayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_OverwritePayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[107] + 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 PointsUpdateOperation_OverwritePayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_OverwritePayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 2} +} + +func (x *PointsUpdateOperation_OverwritePayload) GetPayload() map[string]*Value { + if x != nil { + return x.Payload + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +func (x *PointsUpdateOperation_OverwritePayload) GetKey() string { + if x != nil && x.Key != nil { + return *x.Key + } + return "" +} + +type PointsUpdateOperation_DeletePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + PointsSelector *PointsSelector `protobuf:"bytes,2,opt,name=points_selector,json=pointsSelector,proto3,oneof" json:"points_selector,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeletePayload) Reset() { + *x = PointsUpdateOperation_DeletePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeletePayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeletePayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeletePayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[108] + 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 PointsUpdateOperation_DeletePayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeletePayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 3} +} + +func (x *PointsUpdateOperation_DeletePayload) GetKeys() []string { + if x != nil { + return x.Keys + } + return nil +} + +func (x *PointsUpdateOperation_DeletePayload) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_DeletePayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_UpdateVectors struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points []*PointVectors `protobuf:"bytes,1,rep,name=points,proto3" json:"points,omitempty"` // List of points and vectors to update + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_UpdateVectors) Reset() { + *x = PointsUpdateOperation_UpdateVectors{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_UpdateVectors) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_UpdateVectors) ProtoMessage() {} + +func (x *PointsUpdateOperation_UpdateVectors) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[109] + 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 PointsUpdateOperation_UpdateVectors.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_UpdateVectors) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 4} +} + +func (x *PointsUpdateOperation_UpdateVectors) GetPoints() []*PointVectors { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_UpdateVectors) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_DeleteVectors struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PointsSelector *PointsSelector `protobuf:"bytes,1,opt,name=points_selector,json=pointsSelector,proto3" json:"points_selector,omitempty"` // Affected points + Vectors *VectorsSelector `protobuf:"bytes,2,opt,name=vectors,proto3" json:"vectors,omitempty"` // List of vector names to delete + ShardKeySelector *ShardKeySelector `protobuf:"bytes,3,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeleteVectors) Reset() { + *x = PointsUpdateOperation_DeleteVectors{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeleteVectors) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeleteVectors) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeleteVectors) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[110] + 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 PointsUpdateOperation_DeleteVectors.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeleteVectors) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 5} +} + +func (x *PointsUpdateOperation_DeleteVectors) GetPointsSelector() *PointsSelector { + if x != nil { + return x.PointsSelector + } + return nil +} + +func (x *PointsUpdateOperation_DeleteVectors) GetVectors() *VectorsSelector { + if x != nil { + return x.Vectors + } + return nil +} + +func (x *PointsUpdateOperation_DeleteVectors) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_DeletePoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_DeletePoints) Reset() { + *x = PointsUpdateOperation_DeletePoints{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_DeletePoints) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_DeletePoints) ProtoMessage() {} + +func (x *PointsUpdateOperation_DeletePoints) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[111] + 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 PointsUpdateOperation_DeletePoints.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_DeletePoints) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 6} +} + +func (x *PointsUpdateOperation_DeletePoints) GetPoints() *PointsSelector { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_DeletePoints) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +type PointsUpdateOperation_ClearPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Points *PointsSelector `protobuf:"bytes,1,opt,name=points,proto3" json:"points,omitempty"` // Affected points + ShardKeySelector *ShardKeySelector `protobuf:"bytes,2,opt,name=shard_key_selector,json=shardKeySelector,proto3,oneof" json:"shard_key_selector,omitempty"` // Option for custom sharding to specify used shard keys +} + +func (x *PointsUpdateOperation_ClearPayload) Reset() { + *x = PointsUpdateOperation_ClearPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_points_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PointsUpdateOperation_ClearPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PointsUpdateOperation_ClearPayload) ProtoMessage() {} + +func (x *PointsUpdateOperation_ClearPayload) ProtoReflect() protoreflect.Message { + mi := &file_points_proto_msgTypes[112] + 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 PointsUpdateOperation_ClearPayload.ProtoReflect.Descriptor instead. +func (*PointsUpdateOperation_ClearPayload) Descriptor() ([]byte, []int) { + return file_points_proto_rawDescGZIP(), []int{55, 7} +} + +func (x *PointsUpdateOperation_ClearPayload) GetPoints() *PointsSelector { + if x != nil { + return x.Points + } + return nil +} + +func (x *PointsUpdateOperation_ClearPayload) GetShardKeySelector() *ShardKeySelector { + if x != nil { + return x.ShardKeySelector + } + return nil +} + +var File_points_proto protoreflect.FileDescriptor + +var file_points_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x1a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, @@ -7366,329 +8642,656 @@ var file_points_proto_rawDesc = []byte{ 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, 0x12, 0x0a, - 0x10, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5e, 0x0a, 0x06, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x07, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x10, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x02, 0x0a, 0x0c, - 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, - 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb2, 0x02, - 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, + 0x10, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9a, 0x01, 0x0a, 0x06, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, + 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x21, 0x0a, 0x0b, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x07, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0b, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, + 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, + 0x65, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x44, 0x65, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x10, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xb2, 0x02, 0x0a, 0x0c, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, + 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0xb5, 0x03, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, + 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, + 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xb6, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, - 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x22, 0xb5, 0x03, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x0c, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, + 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xb6, 0x02, 0x0a, 0x12, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x22, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0xfc, 0x02, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x08, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x91, - 0x04, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x22, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x29, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xfc, 0x02, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x22, 0xfd, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, - 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, - 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, - 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x22, 0xb8, 0x02, 0x0a, 0x12, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, + 0xfd, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, + 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, + 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x08, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x03, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, + 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, + 0xb8, 0x02, 0x0a, 0x12, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf7, 0x02, 0x0a, 0x1a, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x48, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x4d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x10, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x03, 0x52, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, + 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x22, 0xcb, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, + 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x22, 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, + 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x0c, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x1a, 0x4a, 0x0a, 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, + 0x0a, 0x07, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x27, 0x0a, 0x0f, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x22, 0x78, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, + 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0c, 0x6f, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, + 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x68, 0x6e, 0x73, 0x77, 0x45, + 0x66, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x49, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, 0x66, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0xba, 0x06, 0x0a, 0x0c, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, + 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, + 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x80, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x0a, 0x57, + 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 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, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, + 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x48, 0x01, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x95, 0x07, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, + 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, + 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, + 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x04, 0x52, + 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa2, 0x01, + 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x05, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, + 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x08, 0x64, + 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x08, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x34, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x48, 0x01, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0xd9, 0x04, 0x0a, 0x0c, 0x53, + 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x03, 0x52, + 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf7, 0x02, - 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, + 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x48, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x88, 0x01, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, + 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd3, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, + 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa5, 0x08, 0x0a, + 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0f, 0x72, + 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, + 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x04, + 0x08, 0x06, 0x10, 0x07, 0x22, 0x8c, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, + 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x22, 0x80, 0x09, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x10, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x03, 0x52, 0x08, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x77, 0x61, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xcb, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x13, 0x57, 0x69, - 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x0c, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x4a, 0x0a, 0x0c, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x78, 0x0a, 0x07, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x06, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x27, 0x0a, 0x0f, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, - 0x01, 0x0a, 0x18, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, - 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x72, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x68, 0x6e, 0x73, - 0x77, 0x5f, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x68, 0x6e, - 0x73, 0x77, 0x45, 0x66, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x49, 0x0a, 0x0c, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x02, 0x52, 0x0c, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, - 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x4f, 0x6e, - 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, 0x6e, 0x73, 0x77, 0x5f, 0x65, - 0x66, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0xba, 0x06, - 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, + 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, @@ -7698,1000 +9301,905 @@ var file_points_proto_rawDesc = []byte{ 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x76, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x03, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, + 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x62, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, - 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, - 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x80, 0x02, 0x0a, 0x11, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, - 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xd8, 0x01, - 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 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, 0x43, 0x0a, 0x0c, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x95, 0x07, 0x0a, 0x11, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, - 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, - 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x48, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x48, 0x04, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, - 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, - 0x0e, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x48, 0x07, 0x52, 0x0d, - 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x88, 0x01, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x22, 0xa2, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x16, - 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, - 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, - 0x0a, 0x08, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x07, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, - 0x48, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0xd9, 0x04, - 0x0a, 0x0c, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x2c, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, - 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, - 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, - 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x48, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x04, 0x52, 0x10, - 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x48, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, - 0x79, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd3, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, - 0xa5, 0x08, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, - 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x03, 0x52, 0x0b, 0x77, - 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, - 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, - 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x05, - 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x48, 0x05, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x8c, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x72, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0f, 0x72, 0x65, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x22, 0x67, 0x0a, 0x0d, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, + 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x09, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x7a, 0x0a, 0x12, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x31, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x08, 0x6e, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0xa7, 0x06, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, + 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x80, 0x09, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c, - 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, - 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, - 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x48, 0x05, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x48, 0x06, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, - 0x0a, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x15, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, - 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, - 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, - 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x22, 0x67, 0x0a, 0x0d, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x7a, 0x0a, - 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, - 0x61, 0x69, 0x72, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0xa7, 0x06, 0x0a, 0x0e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x02, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, - 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x48, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, - 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, - 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x10, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x22, 0x88, 0x02, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc5, 0x02, 0x0a, 0x0b, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x01, 0x52, 0x0f, 0x72, 0x65, + 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x74, 0x6f, 0x72, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, + 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x22, 0x74, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x08, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x6c, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x3e, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, + 0x70, 0x61, 0x69, 0x72, 0x73, 0x22, 0xba, 0x02, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x2f, 0x0a, 0x07, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, + 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, 0x72, + 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, + 0x2c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x42, 0x79, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x28, 0x0a, + 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x06, 0x66, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x22, 0xc6, 0x03, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x70, + 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x06, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0xae, 0x07, 0x0a, 0x0b, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, - 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, - 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xc5, - 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, - 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x01, 0x52, - 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x70, + 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x07, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x08, 0x52, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x10, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, + 0x09, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x0a, 0x52, 0x10, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x0b, 0x52, 0x0a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, + 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x0c, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x75, 0x73, + 0x69, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x6f, 0x6d, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xfc, 0x01, 0x0a, + 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xc7, 0x12, 0x0a, 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, - 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x57, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, - 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x56, 0x0a, 0x18, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, - 0x52, 0x16, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, - 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x54, - 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xe1, 0x15, 0x0a, 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x49, + 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x73, 0x65, 0x74, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, - 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, - 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, - 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, - 0x85, 0x03, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4f, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x44, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x1a, 0xe1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, - 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, - 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa1, 0x01, 0x0a, 0x0d, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, - 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, - 0xe7, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x56, 0x0a, 0x18, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x65, + 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, + 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x85, 0x03, 0x0a, 0x0a, 0x53, + 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4f, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, 0x0a, 0x0f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, + 0x65, 0x79, 0x1a, 0x91, 0x03, 0x0a, 0x10, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x44, + 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, + 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x1a, 0xe1, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x44, 0x0a, 0x0f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, + 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa1, 0x01, 0x0a, 0x0d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x06, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, - 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, - 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xe2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x04, 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xe9, 0x02, 0x0a, 0x0b, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x01, 0x52, 0x08, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x4a, - 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x86, 0x01, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0e, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x86, - 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xe7, + 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, + 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, + 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xa2, 0x01, + 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, + 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4b, + 0x0a, 0x12, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x10, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xe2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x04, 0x77, 0x61, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, + 0x77, 0x61, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, + 0x01, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x22, 0x5b, 0x0a, 0x17, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x22, 0xb3, 0x03, + 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, - 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x22, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, + 0x01, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, + 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x22, 0x86, 0x01, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x0e, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x86, 0x01, 0x0a, + 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x04, + 0x68, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, + 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, + 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x6c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x22, 0x51, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x56, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x14, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x72, 0x6f, 0x6c, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x0a, + 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x56, 0x0a, 0x13, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x22, 0x58, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0d, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa9, 0x01, + 0x0a, 0x0e, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3e, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x23, 0x0a, 0x0b, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x89, + 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, + 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x01, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x64, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x02, + 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, + 0x49, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x22, 0x23, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbf, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x48, - 0x01, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x49, - 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x11, - 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x42, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x54, 0x0a, + 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x53, + 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, - 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x17, - 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x13, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, - 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6d, 0x75, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6d, 0x75, 0x73, 0x74, 0x12, - 0x2c, 0x0a, 0x08, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x75, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x12, 0x35, 0x0a, - 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x53, 0x68, - 0x6f, 0x75, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, - 0x75, 0x6c, 0x64, 0x22, 0x5b, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, 0x64, - 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0xc8, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, - 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x35, - 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x69, 0x73, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x48, - 0x61, 0x73, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x32, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x4e, 0x75, 0x6c, - 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x69, 0x73, - 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x24, 0x0a, 0x10, 0x49, - 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0x23, 0x0a, 0x0f, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x38, 0x0a, 0x0e, 0x48, 0x61, 0x73, 0x49, 0x64, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, - 0x22, 0x4b, 0x0a, 0x0f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8b, 0x03, - 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5b, 0x0a, + 0x17, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x13, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x29, + 0x0a, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6d, 0x75, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6d, 0x75, 0x73, 0x74, + 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x75, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x12, 0x35, + 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x53, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x68, + 0x6f, 0x75, 0x6c, 0x64, 0x22, 0x5b, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x6c, + 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, + 0x35, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x69, + 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x48, 0x61, 0x73, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x32, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x49, 0x73, 0x4e, 0x75, + 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x69, + 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x24, 0x0a, 0x10, + 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x10, - 0x67, 0x65, 0x6f, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6f, 0x78, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, 0x0e, - 0x67, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x30, - 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x52, - 0x61, 0x64, 0x69, 0x75, 0x73, 0x52, 0x09, 0x67, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, - 0x12, 0x36, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x65, 0x6f, 0x5f, - 0x70, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, - 0x6e, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, - 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x44, - 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, - 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf8, 0x02, 0x0a, 0x05, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x1a, 0x0a, - 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, - 0x35, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x65, 0x79, 0x22, 0x23, 0x0a, 0x0f, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x38, 0x0a, 0x0e, 0x48, 0x61, 0x73, 0x49, 0x64, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x68, 0x61, 0x73, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, + 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8b, + 0x03, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x40, 0x0a, + 0x10, 0x67, 0x65, 0x6f, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6f, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x47, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x52, + 0x0e, 0x67, 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, + 0x30, 0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, + 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x52, 0x09, 0x67, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, + 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x65, 0x6f, + 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, + 0x6f, 0x6e, 0x52, 0x0a, 0x67, 0x65, 0x6f, 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x3c, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, + 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf8, 0x02, 0x0a, + 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x35, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x08, 0x6b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, + 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, - 0x72, 0x73, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x43, - 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x4b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x73, 0x22, 0x2e, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x65, 0x72, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x13, 0x0a, 0x02, - 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, - 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, - 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, - 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, - 0x74, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x02, 0x6c, 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, 0x48, 0x00, 0x52, 0x02, - 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2e, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x73, 0x22, 0x7d, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x13, 0x0a, + 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, + 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, + 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x03, 0x6c, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, + 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x6c, 0x74, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x02, 0x6c, 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, 0x48, 0x01, 0x52, - 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, - 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x6c, 0x74, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, - 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0e, 0x47, 0x65, - 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2b, 0x0a, 0x08, - 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x07, 0x74, 0x6f, 0x70, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x62, 0x6f, 0x74, - 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, + 0x02, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x02, 0x67, 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, 0x48, 0x01, + 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x6c, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x48, 0x03, 0x52, 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, + 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0e, 0x47, + 0x65, 0x6f, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x78, 0x12, 0x2b, 0x0a, + 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4d, - 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x39, 0x0a, - 0x0d, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x28, - 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x0a, 0x47, 0x65, 0x6f, 0x50, - 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x69, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x22, 0x83, - 0x01, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x13, - 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x15, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x03, - 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, - 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x32, 0x0a, 0x0d, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, 0x0a, - 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, - 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x49, 0x0a, - 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x08, 0x47, 0x65, - 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x2a, 0x35, 0x0a, 0x11, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x08, 0x0a, 0x04, 0x57, 0x65, 0x61, 0x6b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x64, - 0x69, 0x75, 0x6d, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x10, - 0x02, 0x2a, 0x38, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x10, 0x01, 0x12, - 0x0a, 0x0a, 0x06, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x10, 0x02, 0x2a, 0x9a, 0x01, 0x0a, 0x09, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x00, 0x12, - 0x14, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x47, 0x65, 0x6f, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x54, 0x65, 0x78, 0x74, 0x10, 0x04, 0x12, 0x11, - 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x6f, 0x6f, 0x6c, 0x10, - 0x05, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x06, 0x2a, 0x1e, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x10, 0x01, 0x2a, 0x35, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x11, 0x0a, - 0x0d, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x00, - 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x65, 0x73, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x10, 0x01, 0x2a, - 0x5b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x6b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x03, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x62, 0x6f, + 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x0b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x22, + 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x06, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x39, + 0x0a, 0x0d, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, + 0x28, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x74, 0x0a, 0x0a, 0x47, 0x65, 0x6f, + 0x50, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x13, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, 0x6c, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x01, 0x52, 0x02, 0x67, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x03, 0x67, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x15, 0x0a, 0x03, 0x6c, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, + 0x03, 0x6c, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x74, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x67, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x74, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x6c, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x22, 0x32, 0x0a, + 0x0d, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x49, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x12, 0x1f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2e, + 0x0a, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x49, + 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x08, 0x47, + 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x61, 0x74, 0x2a, 0x35, 0x0a, 0x11, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x08, 0x0a, 0x04, 0x57, 0x65, 0x61, 0x6b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, + 0x64, 0x69, 0x75, 0x6d, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x6f, 0x6e, 0x67, + 0x10, 0x02, 0x2a, 0x38, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x10, 0x01, + 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x10, 0x02, 0x2a, 0x9a, 0x01, 0x0a, + 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x00, + 0x12, 0x14, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x47, 0x65, 0x6f, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x54, 0x65, 0x78, 0x74, 0x10, 0x04, 0x12, + 0x11, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x6f, 0x6f, 0x6c, + 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x06, 0x2a, 0x1e, 0x0a, 0x09, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x10, 0x01, 0x2a, 0x35, 0x0a, 0x11, 0x52, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x11, + 0x0a, 0x0d, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x65, 0x73, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x10, 0x01, + 0x2a, 0x11, 0x0a, 0x06, 0x46, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x52, + 0x46, 0x10, 0x00, 0x2a, 0x5b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, + 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0x03, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8706,350 +10214,411 @@ func file_points_proto_rawDescGZIP() []byte { return file_points_proto_rawDescData } -var file_points_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_points_proto_msgTypes = make([]protoimpl.MessageInfo, 101) +var file_points_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_points_proto_msgTypes = make([]protoimpl.MessageInfo, 118) var file_points_proto_goTypes = []interface{}{ - (WriteOrderingType)(0), // 0: qdrant.WriteOrderingType - (ReadConsistencyType)(0), // 1: qdrant.ReadConsistencyType - (FieldType)(0), // 2: qdrant.FieldType - (Direction)(0), // 3: qdrant.Direction - (RecommendStrategy)(0), // 4: qdrant.RecommendStrategy - (UpdateStatus)(0), // 5: qdrant.UpdateStatus - (*WriteOrdering)(nil), // 6: qdrant.WriteOrdering - (*ReadConsistency)(nil), // 7: qdrant.ReadConsistency - (*PointId)(nil), // 8: qdrant.PointId - (*SparseIndices)(nil), // 9: qdrant.SparseIndices - (*Vector)(nil), // 10: qdrant.Vector - (*ShardKeySelector)(nil), // 11: qdrant.ShardKeySelector - (*UpsertPoints)(nil), // 12: qdrant.UpsertPoints - (*DeletePoints)(nil), // 13: qdrant.DeletePoints - (*GetPoints)(nil), // 14: qdrant.GetPoints - (*UpdatePointVectors)(nil), // 15: qdrant.UpdatePointVectors - (*PointVectors)(nil), // 16: qdrant.PointVectors - (*DeletePointVectors)(nil), // 17: qdrant.DeletePointVectors - (*SetPayloadPoints)(nil), // 18: qdrant.SetPayloadPoints - (*DeletePayloadPoints)(nil), // 19: qdrant.DeletePayloadPoints - (*ClearPayloadPoints)(nil), // 20: qdrant.ClearPayloadPoints - (*CreateFieldIndexCollection)(nil), // 21: qdrant.CreateFieldIndexCollection - (*DeleteFieldIndexCollection)(nil), // 22: qdrant.DeleteFieldIndexCollection - (*PayloadIncludeSelector)(nil), // 23: qdrant.PayloadIncludeSelector - (*PayloadExcludeSelector)(nil), // 24: qdrant.PayloadExcludeSelector - (*WithPayloadSelector)(nil), // 25: qdrant.WithPayloadSelector - (*NamedVectors)(nil), // 26: qdrant.NamedVectors - (*Vectors)(nil), // 27: qdrant.Vectors - (*VectorsSelector)(nil), // 28: qdrant.VectorsSelector - (*WithVectorsSelector)(nil), // 29: qdrant.WithVectorsSelector - (*QuantizationSearchParams)(nil), // 30: qdrant.QuantizationSearchParams - (*SearchParams)(nil), // 31: qdrant.SearchParams - (*SearchPoints)(nil), // 32: qdrant.SearchPoints - (*SearchBatchPoints)(nil), // 33: qdrant.SearchBatchPoints - (*WithLookup)(nil), // 34: qdrant.WithLookup - (*SearchPointGroups)(nil), // 35: qdrant.SearchPointGroups - (*StartFrom)(nil), // 36: qdrant.StartFrom - (*OrderBy)(nil), // 37: qdrant.OrderBy - (*ScrollPoints)(nil), // 38: qdrant.ScrollPoints - (*LookupLocation)(nil), // 39: qdrant.LookupLocation - (*RecommendPoints)(nil), // 40: qdrant.RecommendPoints - (*RecommendBatchPoints)(nil), // 41: qdrant.RecommendBatchPoints - (*RecommendPointGroups)(nil), // 42: qdrant.RecommendPointGroups - (*TargetVector)(nil), // 43: qdrant.TargetVector - (*VectorExample)(nil), // 44: qdrant.VectorExample - (*ContextExamplePair)(nil), // 45: qdrant.ContextExamplePair - (*DiscoverPoints)(nil), // 46: qdrant.DiscoverPoints - (*DiscoverBatchPoints)(nil), // 47: qdrant.DiscoverBatchPoints - (*CountPoints)(nil), // 48: qdrant.CountPoints - (*PointsUpdateOperation)(nil), // 49: qdrant.PointsUpdateOperation - (*UpdateBatchPoints)(nil), // 50: qdrant.UpdateBatchPoints - (*PointsOperationResponse)(nil), // 51: qdrant.PointsOperationResponse - (*UpdateResult)(nil), // 52: qdrant.UpdateResult - (*ScoredPoint)(nil), // 53: qdrant.ScoredPoint - (*GroupId)(nil), // 54: qdrant.GroupId - (*PointGroup)(nil), // 55: qdrant.PointGroup - (*GroupsResult)(nil), // 56: qdrant.GroupsResult - (*SearchResponse)(nil), // 57: qdrant.SearchResponse - (*BatchResult)(nil), // 58: qdrant.BatchResult - (*SearchBatchResponse)(nil), // 59: qdrant.SearchBatchResponse - (*SearchGroupsResponse)(nil), // 60: qdrant.SearchGroupsResponse - (*CountResponse)(nil), // 61: qdrant.CountResponse - (*ScrollResponse)(nil), // 62: qdrant.ScrollResponse - (*CountResult)(nil), // 63: qdrant.CountResult - (*RetrievedPoint)(nil), // 64: qdrant.RetrievedPoint - (*GetResponse)(nil), // 65: qdrant.GetResponse - (*RecommendResponse)(nil), // 66: qdrant.RecommendResponse - (*RecommendBatchResponse)(nil), // 67: qdrant.RecommendBatchResponse - (*DiscoverResponse)(nil), // 68: qdrant.DiscoverResponse - (*DiscoverBatchResponse)(nil), // 69: qdrant.DiscoverBatchResponse - (*RecommendGroupsResponse)(nil), // 70: qdrant.RecommendGroupsResponse - (*UpdateBatchResponse)(nil), // 71: qdrant.UpdateBatchResponse - (*Filter)(nil), // 72: qdrant.Filter - (*MinShould)(nil), // 73: qdrant.MinShould - (*Condition)(nil), // 74: qdrant.Condition - (*IsEmptyCondition)(nil), // 75: qdrant.IsEmptyCondition - (*IsNullCondition)(nil), // 76: qdrant.IsNullCondition - (*HasIdCondition)(nil), // 77: qdrant.HasIdCondition - (*NestedCondition)(nil), // 78: qdrant.NestedCondition - (*FieldCondition)(nil), // 79: qdrant.FieldCondition - (*Match)(nil), // 80: qdrant.Match - (*RepeatedStrings)(nil), // 81: qdrant.RepeatedStrings - (*RepeatedIntegers)(nil), // 82: qdrant.RepeatedIntegers - (*Range)(nil), // 83: qdrant.Range - (*DatetimeRange)(nil), // 84: qdrant.DatetimeRange - (*GeoBoundingBox)(nil), // 85: qdrant.GeoBoundingBox - (*GeoRadius)(nil), // 86: qdrant.GeoRadius - (*GeoLineString)(nil), // 87: qdrant.GeoLineString - (*GeoPolygon)(nil), // 88: qdrant.GeoPolygon - (*ValuesCount)(nil), // 89: qdrant.ValuesCount - (*PointsSelector)(nil), // 90: qdrant.PointsSelector - (*PointsIdsList)(nil), // 91: qdrant.PointsIdsList - (*PointStruct)(nil), // 92: qdrant.PointStruct - (*GeoPoint)(nil), // 93: qdrant.GeoPoint - nil, // 94: qdrant.SetPayloadPoints.PayloadEntry - nil, // 95: qdrant.NamedVectors.VectorsEntry - (*PointsUpdateOperation_PointStructList)(nil), // 96: qdrant.PointsUpdateOperation.PointStructList - (*PointsUpdateOperation_SetPayload)(nil), // 97: qdrant.PointsUpdateOperation.SetPayload - (*PointsUpdateOperation_DeletePayload)(nil), // 98: qdrant.PointsUpdateOperation.DeletePayload - (*PointsUpdateOperation_UpdateVectors)(nil), // 99: qdrant.PointsUpdateOperation.UpdateVectors - (*PointsUpdateOperation_DeleteVectors)(nil), // 100: qdrant.PointsUpdateOperation.DeleteVectors - (*PointsUpdateOperation_DeletePoints)(nil), // 101: qdrant.PointsUpdateOperation.DeletePoints - (*PointsUpdateOperation_ClearPayload)(nil), // 102: qdrant.PointsUpdateOperation.ClearPayload - nil, // 103: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry - nil, // 104: qdrant.ScoredPoint.PayloadEntry - nil, // 105: qdrant.RetrievedPoint.PayloadEntry - nil, // 106: qdrant.PointStruct.PayloadEntry - (*ShardKey)(nil), // 107: qdrant.ShardKey - (*PayloadIndexParams)(nil), // 108: qdrant.PayloadIndexParams - (*timestamppb.Timestamp)(nil), // 109: google.protobuf.Timestamp - (*Value)(nil), // 110: qdrant.Value + (WriteOrderingType)(0), // 0: qdrant.WriteOrderingType + (ReadConsistencyType)(0), // 1: qdrant.ReadConsistencyType + (FieldType)(0), // 2: qdrant.FieldType + (Direction)(0), // 3: qdrant.Direction + (RecommendStrategy)(0), // 4: qdrant.RecommendStrategy + (Fusion)(0), // 5: qdrant.Fusion + (UpdateStatus)(0), // 6: qdrant.UpdateStatus + (*WriteOrdering)(nil), // 7: qdrant.WriteOrdering + (*ReadConsistency)(nil), // 8: qdrant.ReadConsistency + (*PointId)(nil), // 9: qdrant.PointId + (*SparseIndices)(nil), // 10: qdrant.SparseIndices + (*Vector)(nil), // 11: qdrant.Vector + (*DenseVector)(nil), // 12: qdrant.DenseVector + (*SparseVector)(nil), // 13: qdrant.SparseVector + (*MultiDenseVector)(nil), // 14: qdrant.MultiDenseVector + (*VectorInput)(nil), // 15: qdrant.VectorInput + (*ShardKeySelector)(nil), // 16: qdrant.ShardKeySelector + (*UpsertPoints)(nil), // 17: qdrant.UpsertPoints + (*DeletePoints)(nil), // 18: qdrant.DeletePoints + (*GetPoints)(nil), // 19: qdrant.GetPoints + (*UpdatePointVectors)(nil), // 20: qdrant.UpdatePointVectors + (*PointVectors)(nil), // 21: qdrant.PointVectors + (*DeletePointVectors)(nil), // 22: qdrant.DeletePointVectors + (*SetPayloadPoints)(nil), // 23: qdrant.SetPayloadPoints + (*DeletePayloadPoints)(nil), // 24: qdrant.DeletePayloadPoints + (*ClearPayloadPoints)(nil), // 25: qdrant.ClearPayloadPoints + (*CreateFieldIndexCollection)(nil), // 26: qdrant.CreateFieldIndexCollection + (*DeleteFieldIndexCollection)(nil), // 27: qdrant.DeleteFieldIndexCollection + (*PayloadIncludeSelector)(nil), // 28: qdrant.PayloadIncludeSelector + (*PayloadExcludeSelector)(nil), // 29: qdrant.PayloadExcludeSelector + (*WithPayloadSelector)(nil), // 30: qdrant.WithPayloadSelector + (*NamedVectors)(nil), // 31: qdrant.NamedVectors + (*Vectors)(nil), // 32: qdrant.Vectors + (*VectorsSelector)(nil), // 33: qdrant.VectorsSelector + (*WithVectorsSelector)(nil), // 34: qdrant.WithVectorsSelector + (*QuantizationSearchParams)(nil), // 35: qdrant.QuantizationSearchParams + (*SearchParams)(nil), // 36: qdrant.SearchParams + (*SearchPoints)(nil), // 37: qdrant.SearchPoints + (*SearchBatchPoints)(nil), // 38: qdrant.SearchBatchPoints + (*WithLookup)(nil), // 39: qdrant.WithLookup + (*SearchPointGroups)(nil), // 40: qdrant.SearchPointGroups + (*StartFrom)(nil), // 41: qdrant.StartFrom + (*OrderBy)(nil), // 42: qdrant.OrderBy + (*ScrollPoints)(nil), // 43: qdrant.ScrollPoints + (*LookupLocation)(nil), // 44: qdrant.LookupLocation + (*RecommendPoints)(nil), // 45: qdrant.RecommendPoints + (*RecommendBatchPoints)(nil), // 46: qdrant.RecommendBatchPoints + (*RecommendPointGroups)(nil), // 47: qdrant.RecommendPointGroups + (*TargetVector)(nil), // 48: qdrant.TargetVector + (*VectorExample)(nil), // 49: qdrant.VectorExample + (*ContextExamplePair)(nil), // 50: qdrant.ContextExamplePair + (*DiscoverPoints)(nil), // 51: qdrant.DiscoverPoints + (*DiscoverBatchPoints)(nil), // 52: qdrant.DiscoverBatchPoints + (*CountPoints)(nil), // 53: qdrant.CountPoints + (*RecommendInput)(nil), // 54: qdrant.RecommendInput + (*ContextInputPair)(nil), // 55: qdrant.ContextInputPair + (*DiscoverInput)(nil), // 56: qdrant.DiscoverInput + (*ContextInput)(nil), // 57: qdrant.ContextInput + (*Query)(nil), // 58: qdrant.Query + (*PrefetchQuery)(nil), // 59: qdrant.PrefetchQuery + (*QueryPoints)(nil), // 60: qdrant.QueryPoints + (*QueryBatchPoints)(nil), // 61: qdrant.QueryBatchPoints + (*PointsUpdateOperation)(nil), // 62: qdrant.PointsUpdateOperation + (*UpdateBatchPoints)(nil), // 63: qdrant.UpdateBatchPoints + (*PointsOperationResponse)(nil), // 64: qdrant.PointsOperationResponse + (*UpdateResult)(nil), // 65: qdrant.UpdateResult + (*OrderValue)(nil), // 66: qdrant.OrderValue + (*ScoredPoint)(nil), // 67: qdrant.ScoredPoint + (*GroupId)(nil), // 68: qdrant.GroupId + (*PointGroup)(nil), // 69: qdrant.PointGroup + (*GroupsResult)(nil), // 70: qdrant.GroupsResult + (*SearchResponse)(nil), // 71: qdrant.SearchResponse + (*QueryResponse)(nil), // 72: qdrant.QueryResponse + (*QueryBatchResponse)(nil), // 73: qdrant.QueryBatchResponse + (*BatchResult)(nil), // 74: qdrant.BatchResult + (*SearchBatchResponse)(nil), // 75: qdrant.SearchBatchResponse + (*SearchGroupsResponse)(nil), // 76: qdrant.SearchGroupsResponse + (*CountResponse)(nil), // 77: qdrant.CountResponse + (*ScrollResponse)(nil), // 78: qdrant.ScrollResponse + (*CountResult)(nil), // 79: qdrant.CountResult + (*RetrievedPoint)(nil), // 80: qdrant.RetrievedPoint + (*GetResponse)(nil), // 81: qdrant.GetResponse + (*RecommendResponse)(nil), // 82: qdrant.RecommendResponse + (*RecommendBatchResponse)(nil), // 83: qdrant.RecommendBatchResponse + (*DiscoverResponse)(nil), // 84: qdrant.DiscoverResponse + (*DiscoverBatchResponse)(nil), // 85: qdrant.DiscoverBatchResponse + (*RecommendGroupsResponse)(nil), // 86: qdrant.RecommendGroupsResponse + (*UpdateBatchResponse)(nil), // 87: qdrant.UpdateBatchResponse + (*Filter)(nil), // 88: qdrant.Filter + (*MinShould)(nil), // 89: qdrant.MinShould + (*Condition)(nil), // 90: qdrant.Condition + (*IsEmptyCondition)(nil), // 91: qdrant.IsEmptyCondition + (*IsNullCondition)(nil), // 92: qdrant.IsNullCondition + (*HasIdCondition)(nil), // 93: qdrant.HasIdCondition + (*NestedCondition)(nil), // 94: qdrant.NestedCondition + (*FieldCondition)(nil), // 95: qdrant.FieldCondition + (*Match)(nil), // 96: qdrant.Match + (*RepeatedStrings)(nil), // 97: qdrant.RepeatedStrings + (*RepeatedIntegers)(nil), // 98: qdrant.RepeatedIntegers + (*Range)(nil), // 99: qdrant.Range + (*DatetimeRange)(nil), // 100: qdrant.DatetimeRange + (*GeoBoundingBox)(nil), // 101: qdrant.GeoBoundingBox + (*GeoRadius)(nil), // 102: qdrant.GeoRadius + (*GeoLineString)(nil), // 103: qdrant.GeoLineString + (*GeoPolygon)(nil), // 104: qdrant.GeoPolygon + (*ValuesCount)(nil), // 105: qdrant.ValuesCount + (*PointsSelector)(nil), // 106: qdrant.PointsSelector + (*PointsIdsList)(nil), // 107: qdrant.PointsIdsList + (*PointStruct)(nil), // 108: qdrant.PointStruct + (*GeoPoint)(nil), // 109: qdrant.GeoPoint + nil, // 110: qdrant.SetPayloadPoints.PayloadEntry + nil, // 111: qdrant.NamedVectors.VectorsEntry + (*PointsUpdateOperation_PointStructList)(nil), // 112: qdrant.PointsUpdateOperation.PointStructList + (*PointsUpdateOperation_SetPayload)(nil), // 113: qdrant.PointsUpdateOperation.SetPayload + (*PointsUpdateOperation_OverwritePayload)(nil), // 114: qdrant.PointsUpdateOperation.OverwritePayload + (*PointsUpdateOperation_DeletePayload)(nil), // 115: qdrant.PointsUpdateOperation.DeletePayload + (*PointsUpdateOperation_UpdateVectors)(nil), // 116: qdrant.PointsUpdateOperation.UpdateVectors + (*PointsUpdateOperation_DeleteVectors)(nil), // 117: qdrant.PointsUpdateOperation.DeleteVectors + (*PointsUpdateOperation_DeletePoints)(nil), // 118: qdrant.PointsUpdateOperation.DeletePoints + (*PointsUpdateOperation_ClearPayload)(nil), // 119: qdrant.PointsUpdateOperation.ClearPayload + nil, // 120: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry + nil, // 121: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry + nil, // 122: qdrant.ScoredPoint.PayloadEntry + nil, // 123: qdrant.RetrievedPoint.PayloadEntry + nil, // 124: qdrant.PointStruct.PayloadEntry + (*ShardKey)(nil), // 125: qdrant.ShardKey + (*PayloadIndexParams)(nil), // 126: qdrant.PayloadIndexParams + (*timestamppb.Timestamp)(nil), // 127: google.protobuf.Timestamp + (*Value)(nil), // 128: qdrant.Value } var file_points_proto_depIdxs = []int32{ 0, // 0: qdrant.WriteOrdering.type:type_name -> qdrant.WriteOrderingType 1, // 1: qdrant.ReadConsistency.type:type_name -> qdrant.ReadConsistencyType - 9, // 2: qdrant.Vector.indices:type_name -> qdrant.SparseIndices - 107, // 3: qdrant.ShardKeySelector.shard_keys:type_name -> qdrant.ShardKey - 92, // 4: qdrant.UpsertPoints.points:type_name -> qdrant.PointStruct - 6, // 5: qdrant.UpsertPoints.ordering:type_name -> qdrant.WriteOrdering - 11, // 6: qdrant.UpsertPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 7: qdrant.DeletePoints.points:type_name -> qdrant.PointsSelector - 6, // 8: qdrant.DeletePoints.ordering:type_name -> qdrant.WriteOrdering - 11, // 9: qdrant.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 8, // 10: qdrant.GetPoints.ids:type_name -> qdrant.PointId - 25, // 11: qdrant.GetPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 29, // 12: qdrant.GetPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 7, // 13: qdrant.GetPoints.read_consistency:type_name -> qdrant.ReadConsistency - 11, // 14: qdrant.GetPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 16, // 15: qdrant.UpdatePointVectors.points:type_name -> qdrant.PointVectors - 6, // 16: qdrant.UpdatePointVectors.ordering:type_name -> qdrant.WriteOrdering - 11, // 17: qdrant.UpdatePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 8, // 18: qdrant.PointVectors.id:type_name -> qdrant.PointId - 27, // 19: qdrant.PointVectors.vectors:type_name -> qdrant.Vectors - 90, // 20: qdrant.DeletePointVectors.points_selector:type_name -> qdrant.PointsSelector - 28, // 21: qdrant.DeletePointVectors.vectors:type_name -> qdrant.VectorsSelector - 6, // 22: qdrant.DeletePointVectors.ordering:type_name -> qdrant.WriteOrdering - 11, // 23: qdrant.DeletePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 94, // 24: qdrant.SetPayloadPoints.payload:type_name -> qdrant.SetPayloadPoints.PayloadEntry - 90, // 25: qdrant.SetPayloadPoints.points_selector:type_name -> qdrant.PointsSelector - 6, // 26: qdrant.SetPayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 11, // 27: qdrant.SetPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 28: qdrant.DeletePayloadPoints.points_selector:type_name -> qdrant.PointsSelector - 6, // 29: qdrant.DeletePayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 11, // 30: qdrant.DeletePayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 31: qdrant.ClearPayloadPoints.points:type_name -> qdrant.PointsSelector - 6, // 32: qdrant.ClearPayloadPoints.ordering:type_name -> qdrant.WriteOrdering - 11, // 33: qdrant.ClearPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 2, // 34: qdrant.CreateFieldIndexCollection.field_type:type_name -> qdrant.FieldType - 108, // 35: qdrant.CreateFieldIndexCollection.field_index_params:type_name -> qdrant.PayloadIndexParams - 6, // 36: qdrant.CreateFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering - 6, // 37: qdrant.DeleteFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering - 23, // 38: qdrant.WithPayloadSelector.include:type_name -> qdrant.PayloadIncludeSelector - 24, // 39: qdrant.WithPayloadSelector.exclude:type_name -> qdrant.PayloadExcludeSelector - 95, // 40: qdrant.NamedVectors.vectors:type_name -> qdrant.NamedVectors.VectorsEntry - 10, // 41: qdrant.Vectors.vector:type_name -> qdrant.Vector - 26, // 42: qdrant.Vectors.vectors:type_name -> qdrant.NamedVectors - 28, // 43: qdrant.WithVectorsSelector.include:type_name -> qdrant.VectorsSelector - 30, // 44: qdrant.SearchParams.quantization:type_name -> qdrant.QuantizationSearchParams - 72, // 45: qdrant.SearchPoints.filter:type_name -> qdrant.Filter - 25, // 46: qdrant.SearchPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 31, // 47: qdrant.SearchPoints.params:type_name -> qdrant.SearchParams - 29, // 48: qdrant.SearchPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 7, // 49: qdrant.SearchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 11, // 50: qdrant.SearchPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 9, // 51: qdrant.SearchPoints.sparse_indices:type_name -> qdrant.SparseIndices - 32, // 52: qdrant.SearchBatchPoints.search_points:type_name -> qdrant.SearchPoints - 7, // 53: qdrant.SearchBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 25, // 54: qdrant.WithLookup.with_payload:type_name -> qdrant.WithPayloadSelector - 29, // 55: qdrant.WithLookup.with_vectors:type_name -> qdrant.WithVectorsSelector - 72, // 56: qdrant.SearchPointGroups.filter:type_name -> qdrant.Filter - 25, // 57: qdrant.SearchPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector - 31, // 58: qdrant.SearchPointGroups.params:type_name -> qdrant.SearchParams - 29, // 59: qdrant.SearchPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector - 7, // 60: qdrant.SearchPointGroups.read_consistency:type_name -> qdrant.ReadConsistency - 34, // 61: qdrant.SearchPointGroups.with_lookup:type_name -> qdrant.WithLookup - 11, // 62: qdrant.SearchPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector - 9, // 63: qdrant.SearchPointGroups.sparse_indices:type_name -> qdrant.SparseIndices - 109, // 64: qdrant.StartFrom.timestamp:type_name -> google.protobuf.Timestamp - 3, // 65: qdrant.OrderBy.direction:type_name -> qdrant.Direction - 36, // 66: qdrant.OrderBy.start_from:type_name -> qdrant.StartFrom - 72, // 67: qdrant.ScrollPoints.filter:type_name -> qdrant.Filter - 8, // 68: qdrant.ScrollPoints.offset:type_name -> qdrant.PointId - 25, // 69: qdrant.ScrollPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 29, // 70: qdrant.ScrollPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 7, // 71: qdrant.ScrollPoints.read_consistency:type_name -> qdrant.ReadConsistency - 11, // 72: qdrant.ScrollPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 37, // 73: qdrant.ScrollPoints.order_by:type_name -> qdrant.OrderBy - 11, // 74: qdrant.LookupLocation.shard_key_selector:type_name -> qdrant.ShardKeySelector - 8, // 75: qdrant.RecommendPoints.positive:type_name -> qdrant.PointId - 8, // 76: qdrant.RecommendPoints.negative:type_name -> qdrant.PointId - 72, // 77: qdrant.RecommendPoints.filter:type_name -> qdrant.Filter - 25, // 78: qdrant.RecommendPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 31, // 79: qdrant.RecommendPoints.params:type_name -> qdrant.SearchParams - 29, // 80: qdrant.RecommendPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 39, // 81: qdrant.RecommendPoints.lookup_from:type_name -> qdrant.LookupLocation - 7, // 82: qdrant.RecommendPoints.read_consistency:type_name -> qdrant.ReadConsistency - 4, // 83: qdrant.RecommendPoints.strategy:type_name -> qdrant.RecommendStrategy - 10, // 84: qdrant.RecommendPoints.positive_vectors:type_name -> qdrant.Vector - 10, // 85: qdrant.RecommendPoints.negative_vectors:type_name -> qdrant.Vector - 11, // 86: qdrant.RecommendPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 40, // 87: qdrant.RecommendBatchPoints.recommend_points:type_name -> qdrant.RecommendPoints - 7, // 88: qdrant.RecommendBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 8, // 89: qdrant.RecommendPointGroups.positive:type_name -> qdrant.PointId - 8, // 90: qdrant.RecommendPointGroups.negative:type_name -> qdrant.PointId - 72, // 91: qdrant.RecommendPointGroups.filter:type_name -> qdrant.Filter - 25, // 92: qdrant.RecommendPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector - 31, // 93: qdrant.RecommendPointGroups.params:type_name -> qdrant.SearchParams - 29, // 94: qdrant.RecommendPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector - 39, // 95: qdrant.RecommendPointGroups.lookup_from:type_name -> qdrant.LookupLocation - 7, // 96: qdrant.RecommendPointGroups.read_consistency:type_name -> qdrant.ReadConsistency - 34, // 97: qdrant.RecommendPointGroups.with_lookup:type_name -> qdrant.WithLookup - 4, // 98: qdrant.RecommendPointGroups.strategy:type_name -> qdrant.RecommendStrategy - 10, // 99: qdrant.RecommendPointGroups.positive_vectors:type_name -> qdrant.Vector - 10, // 100: qdrant.RecommendPointGroups.negative_vectors:type_name -> qdrant.Vector - 11, // 101: qdrant.RecommendPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector - 44, // 102: qdrant.TargetVector.single:type_name -> qdrant.VectorExample - 8, // 103: qdrant.VectorExample.id:type_name -> qdrant.PointId - 10, // 104: qdrant.VectorExample.vector:type_name -> qdrant.Vector - 44, // 105: qdrant.ContextExamplePair.positive:type_name -> qdrant.VectorExample - 44, // 106: qdrant.ContextExamplePair.negative:type_name -> qdrant.VectorExample - 43, // 107: qdrant.DiscoverPoints.target:type_name -> qdrant.TargetVector - 45, // 108: qdrant.DiscoverPoints.context:type_name -> qdrant.ContextExamplePair - 72, // 109: qdrant.DiscoverPoints.filter:type_name -> qdrant.Filter - 25, // 110: qdrant.DiscoverPoints.with_payload:type_name -> qdrant.WithPayloadSelector - 31, // 111: qdrant.DiscoverPoints.params:type_name -> qdrant.SearchParams - 29, // 112: qdrant.DiscoverPoints.with_vectors:type_name -> qdrant.WithVectorsSelector - 39, // 113: qdrant.DiscoverPoints.lookup_from:type_name -> qdrant.LookupLocation - 7, // 114: qdrant.DiscoverPoints.read_consistency:type_name -> qdrant.ReadConsistency - 11, // 115: qdrant.DiscoverPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 46, // 116: qdrant.DiscoverBatchPoints.discover_points:type_name -> qdrant.DiscoverPoints - 7, // 117: qdrant.DiscoverBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency - 72, // 118: qdrant.CountPoints.filter:type_name -> qdrant.Filter - 7, // 119: qdrant.CountPoints.read_consistency:type_name -> qdrant.ReadConsistency - 11, // 120: qdrant.CountPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 96, // 121: qdrant.PointsUpdateOperation.upsert:type_name -> qdrant.PointsUpdateOperation.PointStructList - 90, // 122: qdrant.PointsUpdateOperation.delete_deprecated:type_name -> qdrant.PointsSelector - 97, // 123: qdrant.PointsUpdateOperation.set_payload:type_name -> qdrant.PointsUpdateOperation.SetPayload - 97, // 124: qdrant.PointsUpdateOperation.overwrite_payload:type_name -> qdrant.PointsUpdateOperation.SetPayload - 98, // 125: qdrant.PointsUpdateOperation.delete_payload:type_name -> qdrant.PointsUpdateOperation.DeletePayload - 90, // 126: qdrant.PointsUpdateOperation.clear_payload_deprecated:type_name -> qdrant.PointsSelector - 99, // 127: qdrant.PointsUpdateOperation.update_vectors:type_name -> qdrant.PointsUpdateOperation.UpdateVectors - 100, // 128: qdrant.PointsUpdateOperation.delete_vectors:type_name -> qdrant.PointsUpdateOperation.DeleteVectors - 101, // 129: qdrant.PointsUpdateOperation.delete_points:type_name -> qdrant.PointsUpdateOperation.DeletePoints - 102, // 130: qdrant.PointsUpdateOperation.clear_payload:type_name -> qdrant.PointsUpdateOperation.ClearPayload - 49, // 131: qdrant.UpdateBatchPoints.operations:type_name -> qdrant.PointsUpdateOperation - 6, // 132: qdrant.UpdateBatchPoints.ordering:type_name -> qdrant.WriteOrdering - 52, // 133: qdrant.PointsOperationResponse.result:type_name -> qdrant.UpdateResult - 5, // 134: qdrant.UpdateResult.status:type_name -> qdrant.UpdateStatus - 8, // 135: qdrant.ScoredPoint.id:type_name -> qdrant.PointId - 104, // 136: qdrant.ScoredPoint.payload:type_name -> qdrant.ScoredPoint.PayloadEntry - 27, // 137: qdrant.ScoredPoint.vectors:type_name -> qdrant.Vectors - 107, // 138: qdrant.ScoredPoint.shard_key:type_name -> qdrant.ShardKey - 54, // 139: qdrant.PointGroup.id:type_name -> qdrant.GroupId - 53, // 140: qdrant.PointGroup.hits:type_name -> qdrant.ScoredPoint - 64, // 141: qdrant.PointGroup.lookup:type_name -> qdrant.RetrievedPoint - 55, // 142: qdrant.GroupsResult.groups:type_name -> qdrant.PointGroup - 53, // 143: qdrant.SearchResponse.result:type_name -> qdrant.ScoredPoint - 53, // 144: qdrant.BatchResult.result:type_name -> qdrant.ScoredPoint - 58, // 145: qdrant.SearchBatchResponse.result:type_name -> qdrant.BatchResult - 56, // 146: qdrant.SearchGroupsResponse.result:type_name -> qdrant.GroupsResult - 63, // 147: qdrant.CountResponse.result:type_name -> qdrant.CountResult - 8, // 148: qdrant.ScrollResponse.next_page_offset:type_name -> qdrant.PointId - 64, // 149: qdrant.ScrollResponse.result:type_name -> qdrant.RetrievedPoint - 8, // 150: qdrant.RetrievedPoint.id:type_name -> qdrant.PointId - 105, // 151: qdrant.RetrievedPoint.payload:type_name -> qdrant.RetrievedPoint.PayloadEntry - 27, // 152: qdrant.RetrievedPoint.vectors:type_name -> qdrant.Vectors - 107, // 153: qdrant.RetrievedPoint.shard_key:type_name -> qdrant.ShardKey - 64, // 154: qdrant.GetResponse.result:type_name -> qdrant.RetrievedPoint - 53, // 155: qdrant.RecommendResponse.result:type_name -> qdrant.ScoredPoint - 58, // 156: qdrant.RecommendBatchResponse.result:type_name -> qdrant.BatchResult - 53, // 157: qdrant.DiscoverResponse.result:type_name -> qdrant.ScoredPoint - 58, // 158: qdrant.DiscoverBatchResponse.result:type_name -> qdrant.BatchResult - 56, // 159: qdrant.RecommendGroupsResponse.result:type_name -> qdrant.GroupsResult - 52, // 160: qdrant.UpdateBatchResponse.result:type_name -> qdrant.UpdateResult - 74, // 161: qdrant.Filter.should:type_name -> qdrant.Condition - 74, // 162: qdrant.Filter.must:type_name -> qdrant.Condition - 74, // 163: qdrant.Filter.must_not:type_name -> qdrant.Condition - 73, // 164: qdrant.Filter.min_should:type_name -> qdrant.MinShould - 74, // 165: qdrant.MinShould.conditions:type_name -> qdrant.Condition - 79, // 166: qdrant.Condition.field:type_name -> qdrant.FieldCondition - 75, // 167: qdrant.Condition.is_empty:type_name -> qdrant.IsEmptyCondition - 77, // 168: qdrant.Condition.has_id:type_name -> qdrant.HasIdCondition - 72, // 169: qdrant.Condition.filter:type_name -> qdrant.Filter - 76, // 170: qdrant.Condition.is_null:type_name -> qdrant.IsNullCondition - 78, // 171: qdrant.Condition.nested:type_name -> qdrant.NestedCondition - 8, // 172: qdrant.HasIdCondition.has_id:type_name -> qdrant.PointId - 72, // 173: qdrant.NestedCondition.filter:type_name -> qdrant.Filter - 80, // 174: qdrant.FieldCondition.match:type_name -> qdrant.Match - 83, // 175: qdrant.FieldCondition.range:type_name -> qdrant.Range - 85, // 176: qdrant.FieldCondition.geo_bounding_box:type_name -> qdrant.GeoBoundingBox - 86, // 177: qdrant.FieldCondition.geo_radius:type_name -> qdrant.GeoRadius - 89, // 178: qdrant.FieldCondition.values_count:type_name -> qdrant.ValuesCount - 88, // 179: qdrant.FieldCondition.geo_polygon:type_name -> qdrant.GeoPolygon - 84, // 180: qdrant.FieldCondition.datetime_range:type_name -> qdrant.DatetimeRange - 81, // 181: qdrant.Match.keywords:type_name -> qdrant.RepeatedStrings - 82, // 182: qdrant.Match.integers:type_name -> qdrant.RepeatedIntegers - 82, // 183: qdrant.Match.except_integers:type_name -> qdrant.RepeatedIntegers - 81, // 184: qdrant.Match.except_keywords:type_name -> qdrant.RepeatedStrings - 109, // 185: qdrant.DatetimeRange.lt:type_name -> google.protobuf.Timestamp - 109, // 186: qdrant.DatetimeRange.gt:type_name -> google.protobuf.Timestamp - 109, // 187: qdrant.DatetimeRange.gte:type_name -> google.protobuf.Timestamp - 109, // 188: qdrant.DatetimeRange.lte:type_name -> google.protobuf.Timestamp - 93, // 189: qdrant.GeoBoundingBox.top_left:type_name -> qdrant.GeoPoint - 93, // 190: qdrant.GeoBoundingBox.bottom_right:type_name -> qdrant.GeoPoint - 93, // 191: qdrant.GeoRadius.center:type_name -> qdrant.GeoPoint - 93, // 192: qdrant.GeoLineString.points:type_name -> qdrant.GeoPoint - 87, // 193: qdrant.GeoPolygon.exterior:type_name -> qdrant.GeoLineString - 87, // 194: qdrant.GeoPolygon.interiors:type_name -> qdrant.GeoLineString - 91, // 195: qdrant.PointsSelector.points:type_name -> qdrant.PointsIdsList - 72, // 196: qdrant.PointsSelector.filter:type_name -> qdrant.Filter - 8, // 197: qdrant.PointsIdsList.ids:type_name -> qdrant.PointId - 8, // 198: qdrant.PointStruct.id:type_name -> qdrant.PointId - 106, // 199: qdrant.PointStruct.payload:type_name -> qdrant.PointStruct.PayloadEntry - 27, // 200: qdrant.PointStruct.vectors:type_name -> qdrant.Vectors - 110, // 201: qdrant.SetPayloadPoints.PayloadEntry.value:type_name -> qdrant.Value - 10, // 202: qdrant.NamedVectors.VectorsEntry.value:type_name -> qdrant.Vector - 92, // 203: qdrant.PointsUpdateOperation.PointStructList.points:type_name -> qdrant.PointStruct - 11, // 204: qdrant.PointsUpdateOperation.PointStructList.shard_key_selector:type_name -> qdrant.ShardKeySelector - 103, // 205: qdrant.PointsUpdateOperation.SetPayload.payload:type_name -> qdrant.PointsUpdateOperation.SetPayload.PayloadEntry - 90, // 206: qdrant.PointsUpdateOperation.SetPayload.points_selector:type_name -> qdrant.PointsSelector - 11, // 207: qdrant.PointsUpdateOperation.SetPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 208: qdrant.PointsUpdateOperation.DeletePayload.points_selector:type_name -> qdrant.PointsSelector - 11, // 209: qdrant.PointsUpdateOperation.DeletePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 16, // 210: qdrant.PointsUpdateOperation.UpdateVectors.points:type_name -> qdrant.PointVectors - 11, // 211: qdrant.PointsUpdateOperation.UpdateVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 212: qdrant.PointsUpdateOperation.DeleteVectors.points_selector:type_name -> qdrant.PointsSelector - 28, // 213: qdrant.PointsUpdateOperation.DeleteVectors.vectors:type_name -> qdrant.VectorsSelector - 11, // 214: qdrant.PointsUpdateOperation.DeleteVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 215: qdrant.PointsUpdateOperation.DeletePoints.points:type_name -> qdrant.PointsSelector - 11, // 216: qdrant.PointsUpdateOperation.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector - 90, // 217: qdrant.PointsUpdateOperation.ClearPayload.points:type_name -> qdrant.PointsSelector - 11, // 218: qdrant.PointsUpdateOperation.ClearPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector - 110, // 219: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry.value:type_name -> qdrant.Value - 110, // 220: qdrant.ScoredPoint.PayloadEntry.value:type_name -> qdrant.Value - 110, // 221: qdrant.RetrievedPoint.PayloadEntry.value:type_name -> qdrant.Value - 110, // 222: qdrant.PointStruct.PayloadEntry.value:type_name -> qdrant.Value - 223, // [223:223] is the sub-list for method output_type - 223, // [223:223] is the sub-list for method input_type - 223, // [223:223] is the sub-list for extension type_name - 223, // [223:223] is the sub-list for extension extendee - 0, // [0:223] is the sub-list for field type_name + 10, // 2: qdrant.Vector.indices:type_name -> qdrant.SparseIndices + 12, // 3: qdrant.MultiDenseVector.vectors:type_name -> qdrant.DenseVector + 9, // 4: qdrant.VectorInput.id:type_name -> qdrant.PointId + 12, // 5: qdrant.VectorInput.dense:type_name -> qdrant.DenseVector + 13, // 6: qdrant.VectorInput.sparse:type_name -> qdrant.SparseVector + 14, // 7: qdrant.VectorInput.multi_dense:type_name -> qdrant.MultiDenseVector + 125, // 8: qdrant.ShardKeySelector.shard_keys:type_name -> qdrant.ShardKey + 108, // 9: qdrant.UpsertPoints.points:type_name -> qdrant.PointStruct + 7, // 10: qdrant.UpsertPoints.ordering:type_name -> qdrant.WriteOrdering + 16, // 11: qdrant.UpsertPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 12: qdrant.DeletePoints.points:type_name -> qdrant.PointsSelector + 7, // 13: qdrant.DeletePoints.ordering:type_name -> qdrant.WriteOrdering + 16, // 14: qdrant.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 9, // 15: qdrant.GetPoints.ids:type_name -> qdrant.PointId + 30, // 16: qdrant.GetPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 34, // 17: qdrant.GetPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 8, // 18: qdrant.GetPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 19: qdrant.GetPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 21, // 20: qdrant.UpdatePointVectors.points:type_name -> qdrant.PointVectors + 7, // 21: qdrant.UpdatePointVectors.ordering:type_name -> qdrant.WriteOrdering + 16, // 22: qdrant.UpdatePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 9, // 23: qdrant.PointVectors.id:type_name -> qdrant.PointId + 32, // 24: qdrant.PointVectors.vectors:type_name -> qdrant.Vectors + 106, // 25: qdrant.DeletePointVectors.points_selector:type_name -> qdrant.PointsSelector + 33, // 26: qdrant.DeletePointVectors.vectors:type_name -> qdrant.VectorsSelector + 7, // 27: qdrant.DeletePointVectors.ordering:type_name -> qdrant.WriteOrdering + 16, // 28: qdrant.DeletePointVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 110, // 29: qdrant.SetPayloadPoints.payload:type_name -> qdrant.SetPayloadPoints.PayloadEntry + 106, // 30: qdrant.SetPayloadPoints.points_selector:type_name -> qdrant.PointsSelector + 7, // 31: qdrant.SetPayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 16, // 32: qdrant.SetPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 33: qdrant.DeletePayloadPoints.points_selector:type_name -> qdrant.PointsSelector + 7, // 34: qdrant.DeletePayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 16, // 35: qdrant.DeletePayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 36: qdrant.ClearPayloadPoints.points:type_name -> qdrant.PointsSelector + 7, // 37: qdrant.ClearPayloadPoints.ordering:type_name -> qdrant.WriteOrdering + 16, // 38: qdrant.ClearPayloadPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 2, // 39: qdrant.CreateFieldIndexCollection.field_type:type_name -> qdrant.FieldType + 126, // 40: qdrant.CreateFieldIndexCollection.field_index_params:type_name -> qdrant.PayloadIndexParams + 7, // 41: qdrant.CreateFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering + 7, // 42: qdrant.DeleteFieldIndexCollection.ordering:type_name -> qdrant.WriteOrdering + 28, // 43: qdrant.WithPayloadSelector.include:type_name -> qdrant.PayloadIncludeSelector + 29, // 44: qdrant.WithPayloadSelector.exclude:type_name -> qdrant.PayloadExcludeSelector + 111, // 45: qdrant.NamedVectors.vectors:type_name -> qdrant.NamedVectors.VectorsEntry + 11, // 46: qdrant.Vectors.vector:type_name -> qdrant.Vector + 31, // 47: qdrant.Vectors.vectors:type_name -> qdrant.NamedVectors + 33, // 48: qdrant.WithVectorsSelector.include:type_name -> qdrant.VectorsSelector + 35, // 49: qdrant.SearchParams.quantization:type_name -> qdrant.QuantizationSearchParams + 88, // 50: qdrant.SearchPoints.filter:type_name -> qdrant.Filter + 30, // 51: qdrant.SearchPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 36, // 52: qdrant.SearchPoints.params:type_name -> qdrant.SearchParams + 34, // 53: qdrant.SearchPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 8, // 54: qdrant.SearchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 55: qdrant.SearchPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 10, // 56: qdrant.SearchPoints.sparse_indices:type_name -> qdrant.SparseIndices + 37, // 57: qdrant.SearchBatchPoints.search_points:type_name -> qdrant.SearchPoints + 8, // 58: qdrant.SearchBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 30, // 59: qdrant.WithLookup.with_payload:type_name -> qdrant.WithPayloadSelector + 34, // 60: qdrant.WithLookup.with_vectors:type_name -> qdrant.WithVectorsSelector + 88, // 61: qdrant.SearchPointGroups.filter:type_name -> qdrant.Filter + 30, // 62: qdrant.SearchPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector + 36, // 63: qdrant.SearchPointGroups.params:type_name -> qdrant.SearchParams + 34, // 64: qdrant.SearchPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector + 8, // 65: qdrant.SearchPointGroups.read_consistency:type_name -> qdrant.ReadConsistency + 39, // 66: qdrant.SearchPointGroups.with_lookup:type_name -> qdrant.WithLookup + 16, // 67: qdrant.SearchPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector + 10, // 68: qdrant.SearchPointGroups.sparse_indices:type_name -> qdrant.SparseIndices + 127, // 69: qdrant.StartFrom.timestamp:type_name -> google.protobuf.Timestamp + 3, // 70: qdrant.OrderBy.direction:type_name -> qdrant.Direction + 41, // 71: qdrant.OrderBy.start_from:type_name -> qdrant.StartFrom + 88, // 72: qdrant.ScrollPoints.filter:type_name -> qdrant.Filter + 9, // 73: qdrant.ScrollPoints.offset:type_name -> qdrant.PointId + 30, // 74: qdrant.ScrollPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 34, // 75: qdrant.ScrollPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 8, // 76: qdrant.ScrollPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 77: qdrant.ScrollPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 42, // 78: qdrant.ScrollPoints.order_by:type_name -> qdrant.OrderBy + 16, // 79: qdrant.LookupLocation.shard_key_selector:type_name -> qdrant.ShardKeySelector + 9, // 80: qdrant.RecommendPoints.positive:type_name -> qdrant.PointId + 9, // 81: qdrant.RecommendPoints.negative:type_name -> qdrant.PointId + 88, // 82: qdrant.RecommendPoints.filter:type_name -> qdrant.Filter + 30, // 83: qdrant.RecommendPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 36, // 84: qdrant.RecommendPoints.params:type_name -> qdrant.SearchParams + 34, // 85: qdrant.RecommendPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 44, // 86: qdrant.RecommendPoints.lookup_from:type_name -> qdrant.LookupLocation + 8, // 87: qdrant.RecommendPoints.read_consistency:type_name -> qdrant.ReadConsistency + 4, // 88: qdrant.RecommendPoints.strategy:type_name -> qdrant.RecommendStrategy + 11, // 89: qdrant.RecommendPoints.positive_vectors:type_name -> qdrant.Vector + 11, // 90: qdrant.RecommendPoints.negative_vectors:type_name -> qdrant.Vector + 16, // 91: qdrant.RecommendPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 45, // 92: qdrant.RecommendBatchPoints.recommend_points:type_name -> qdrant.RecommendPoints + 8, // 93: qdrant.RecommendBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 9, // 94: qdrant.RecommendPointGroups.positive:type_name -> qdrant.PointId + 9, // 95: qdrant.RecommendPointGroups.negative:type_name -> qdrant.PointId + 88, // 96: qdrant.RecommendPointGroups.filter:type_name -> qdrant.Filter + 30, // 97: qdrant.RecommendPointGroups.with_payload:type_name -> qdrant.WithPayloadSelector + 36, // 98: qdrant.RecommendPointGroups.params:type_name -> qdrant.SearchParams + 34, // 99: qdrant.RecommendPointGroups.with_vectors:type_name -> qdrant.WithVectorsSelector + 44, // 100: qdrant.RecommendPointGroups.lookup_from:type_name -> qdrant.LookupLocation + 8, // 101: qdrant.RecommendPointGroups.read_consistency:type_name -> qdrant.ReadConsistency + 39, // 102: qdrant.RecommendPointGroups.with_lookup:type_name -> qdrant.WithLookup + 4, // 103: qdrant.RecommendPointGroups.strategy:type_name -> qdrant.RecommendStrategy + 11, // 104: qdrant.RecommendPointGroups.positive_vectors:type_name -> qdrant.Vector + 11, // 105: qdrant.RecommendPointGroups.negative_vectors:type_name -> qdrant.Vector + 16, // 106: qdrant.RecommendPointGroups.shard_key_selector:type_name -> qdrant.ShardKeySelector + 49, // 107: qdrant.TargetVector.single:type_name -> qdrant.VectorExample + 9, // 108: qdrant.VectorExample.id:type_name -> qdrant.PointId + 11, // 109: qdrant.VectorExample.vector:type_name -> qdrant.Vector + 49, // 110: qdrant.ContextExamplePair.positive:type_name -> qdrant.VectorExample + 49, // 111: qdrant.ContextExamplePair.negative:type_name -> qdrant.VectorExample + 48, // 112: qdrant.DiscoverPoints.target:type_name -> qdrant.TargetVector + 50, // 113: qdrant.DiscoverPoints.context:type_name -> qdrant.ContextExamplePair + 88, // 114: qdrant.DiscoverPoints.filter:type_name -> qdrant.Filter + 30, // 115: qdrant.DiscoverPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 36, // 116: qdrant.DiscoverPoints.params:type_name -> qdrant.SearchParams + 34, // 117: qdrant.DiscoverPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 44, // 118: qdrant.DiscoverPoints.lookup_from:type_name -> qdrant.LookupLocation + 8, // 119: qdrant.DiscoverPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 120: qdrant.DiscoverPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 51, // 121: qdrant.DiscoverBatchPoints.discover_points:type_name -> qdrant.DiscoverPoints + 8, // 122: qdrant.DiscoverBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 88, // 123: qdrant.CountPoints.filter:type_name -> qdrant.Filter + 8, // 124: qdrant.CountPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 125: qdrant.CountPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 15, // 126: qdrant.RecommendInput.positive:type_name -> qdrant.VectorInput + 15, // 127: qdrant.RecommendInput.negative:type_name -> qdrant.VectorInput + 4, // 128: qdrant.RecommendInput.strategy:type_name -> qdrant.RecommendStrategy + 15, // 129: qdrant.ContextInputPair.positive:type_name -> qdrant.VectorInput + 15, // 130: qdrant.ContextInputPair.negative:type_name -> qdrant.VectorInput + 15, // 131: qdrant.DiscoverInput.target:type_name -> qdrant.VectorInput + 57, // 132: qdrant.DiscoverInput.context:type_name -> qdrant.ContextInput + 55, // 133: qdrant.ContextInput.pairs:type_name -> qdrant.ContextInputPair + 15, // 134: qdrant.Query.nearest:type_name -> qdrant.VectorInput + 54, // 135: qdrant.Query.recommend:type_name -> qdrant.RecommendInput + 56, // 136: qdrant.Query.discover:type_name -> qdrant.DiscoverInput + 57, // 137: qdrant.Query.context:type_name -> qdrant.ContextInput + 42, // 138: qdrant.Query.order_by:type_name -> qdrant.OrderBy + 5, // 139: qdrant.Query.fusion:type_name -> qdrant.Fusion + 59, // 140: qdrant.PrefetchQuery.prefetch:type_name -> qdrant.PrefetchQuery + 58, // 141: qdrant.PrefetchQuery.query:type_name -> qdrant.Query + 88, // 142: qdrant.PrefetchQuery.filter:type_name -> qdrant.Filter + 36, // 143: qdrant.PrefetchQuery.params:type_name -> qdrant.SearchParams + 44, // 144: qdrant.PrefetchQuery.lookup_from:type_name -> qdrant.LookupLocation + 59, // 145: qdrant.QueryPoints.prefetch:type_name -> qdrant.PrefetchQuery + 58, // 146: qdrant.QueryPoints.query:type_name -> qdrant.Query + 88, // 147: qdrant.QueryPoints.filter:type_name -> qdrant.Filter + 36, // 148: qdrant.QueryPoints.params:type_name -> qdrant.SearchParams + 34, // 149: qdrant.QueryPoints.with_vectors:type_name -> qdrant.WithVectorsSelector + 30, // 150: qdrant.QueryPoints.with_payload:type_name -> qdrant.WithPayloadSelector + 8, // 151: qdrant.QueryPoints.read_consistency:type_name -> qdrant.ReadConsistency + 16, // 152: qdrant.QueryPoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 44, // 153: qdrant.QueryPoints.lookup_from:type_name -> qdrant.LookupLocation + 60, // 154: qdrant.QueryBatchPoints.query_points:type_name -> qdrant.QueryPoints + 8, // 155: qdrant.QueryBatchPoints.read_consistency:type_name -> qdrant.ReadConsistency + 112, // 156: qdrant.PointsUpdateOperation.upsert:type_name -> qdrant.PointsUpdateOperation.PointStructList + 106, // 157: qdrant.PointsUpdateOperation.delete_deprecated:type_name -> qdrant.PointsSelector + 113, // 158: qdrant.PointsUpdateOperation.set_payload:type_name -> qdrant.PointsUpdateOperation.SetPayload + 114, // 159: qdrant.PointsUpdateOperation.overwrite_payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload + 115, // 160: qdrant.PointsUpdateOperation.delete_payload:type_name -> qdrant.PointsUpdateOperation.DeletePayload + 106, // 161: qdrant.PointsUpdateOperation.clear_payload_deprecated:type_name -> qdrant.PointsSelector + 116, // 162: qdrant.PointsUpdateOperation.update_vectors:type_name -> qdrant.PointsUpdateOperation.UpdateVectors + 117, // 163: qdrant.PointsUpdateOperation.delete_vectors:type_name -> qdrant.PointsUpdateOperation.DeleteVectors + 118, // 164: qdrant.PointsUpdateOperation.delete_points:type_name -> qdrant.PointsUpdateOperation.DeletePoints + 119, // 165: qdrant.PointsUpdateOperation.clear_payload:type_name -> qdrant.PointsUpdateOperation.ClearPayload + 62, // 166: qdrant.UpdateBatchPoints.operations:type_name -> qdrant.PointsUpdateOperation + 7, // 167: qdrant.UpdateBatchPoints.ordering:type_name -> qdrant.WriteOrdering + 65, // 168: qdrant.PointsOperationResponse.result:type_name -> qdrant.UpdateResult + 6, // 169: qdrant.UpdateResult.status:type_name -> qdrant.UpdateStatus + 9, // 170: qdrant.ScoredPoint.id:type_name -> qdrant.PointId + 122, // 171: qdrant.ScoredPoint.payload:type_name -> qdrant.ScoredPoint.PayloadEntry + 32, // 172: qdrant.ScoredPoint.vectors:type_name -> qdrant.Vectors + 125, // 173: qdrant.ScoredPoint.shard_key:type_name -> qdrant.ShardKey + 66, // 174: qdrant.ScoredPoint.order_value:type_name -> qdrant.OrderValue + 68, // 175: qdrant.PointGroup.id:type_name -> qdrant.GroupId + 67, // 176: qdrant.PointGroup.hits:type_name -> qdrant.ScoredPoint + 80, // 177: qdrant.PointGroup.lookup:type_name -> qdrant.RetrievedPoint + 69, // 178: qdrant.GroupsResult.groups:type_name -> qdrant.PointGroup + 67, // 179: qdrant.SearchResponse.result:type_name -> qdrant.ScoredPoint + 67, // 180: qdrant.QueryResponse.result:type_name -> qdrant.ScoredPoint + 74, // 181: qdrant.QueryBatchResponse.result:type_name -> qdrant.BatchResult + 67, // 182: qdrant.BatchResult.result:type_name -> qdrant.ScoredPoint + 74, // 183: qdrant.SearchBatchResponse.result:type_name -> qdrant.BatchResult + 70, // 184: qdrant.SearchGroupsResponse.result:type_name -> qdrant.GroupsResult + 79, // 185: qdrant.CountResponse.result:type_name -> qdrant.CountResult + 9, // 186: qdrant.ScrollResponse.next_page_offset:type_name -> qdrant.PointId + 80, // 187: qdrant.ScrollResponse.result:type_name -> qdrant.RetrievedPoint + 9, // 188: qdrant.RetrievedPoint.id:type_name -> qdrant.PointId + 123, // 189: qdrant.RetrievedPoint.payload:type_name -> qdrant.RetrievedPoint.PayloadEntry + 32, // 190: qdrant.RetrievedPoint.vectors:type_name -> qdrant.Vectors + 125, // 191: qdrant.RetrievedPoint.shard_key:type_name -> qdrant.ShardKey + 66, // 192: qdrant.RetrievedPoint.order_value:type_name -> qdrant.OrderValue + 80, // 193: qdrant.GetResponse.result:type_name -> qdrant.RetrievedPoint + 67, // 194: qdrant.RecommendResponse.result:type_name -> qdrant.ScoredPoint + 74, // 195: qdrant.RecommendBatchResponse.result:type_name -> qdrant.BatchResult + 67, // 196: qdrant.DiscoverResponse.result:type_name -> qdrant.ScoredPoint + 74, // 197: qdrant.DiscoverBatchResponse.result:type_name -> qdrant.BatchResult + 70, // 198: qdrant.RecommendGroupsResponse.result:type_name -> qdrant.GroupsResult + 65, // 199: qdrant.UpdateBatchResponse.result:type_name -> qdrant.UpdateResult + 90, // 200: qdrant.Filter.should:type_name -> qdrant.Condition + 90, // 201: qdrant.Filter.must:type_name -> qdrant.Condition + 90, // 202: qdrant.Filter.must_not:type_name -> qdrant.Condition + 89, // 203: qdrant.Filter.min_should:type_name -> qdrant.MinShould + 90, // 204: qdrant.MinShould.conditions:type_name -> qdrant.Condition + 95, // 205: qdrant.Condition.field:type_name -> qdrant.FieldCondition + 91, // 206: qdrant.Condition.is_empty:type_name -> qdrant.IsEmptyCondition + 93, // 207: qdrant.Condition.has_id:type_name -> qdrant.HasIdCondition + 88, // 208: qdrant.Condition.filter:type_name -> qdrant.Filter + 92, // 209: qdrant.Condition.is_null:type_name -> qdrant.IsNullCondition + 94, // 210: qdrant.Condition.nested:type_name -> qdrant.NestedCondition + 9, // 211: qdrant.HasIdCondition.has_id:type_name -> qdrant.PointId + 88, // 212: qdrant.NestedCondition.filter:type_name -> qdrant.Filter + 96, // 213: qdrant.FieldCondition.match:type_name -> qdrant.Match + 99, // 214: qdrant.FieldCondition.range:type_name -> qdrant.Range + 101, // 215: qdrant.FieldCondition.geo_bounding_box:type_name -> qdrant.GeoBoundingBox + 102, // 216: qdrant.FieldCondition.geo_radius:type_name -> qdrant.GeoRadius + 105, // 217: qdrant.FieldCondition.values_count:type_name -> qdrant.ValuesCount + 104, // 218: qdrant.FieldCondition.geo_polygon:type_name -> qdrant.GeoPolygon + 100, // 219: qdrant.FieldCondition.datetime_range:type_name -> qdrant.DatetimeRange + 97, // 220: qdrant.Match.keywords:type_name -> qdrant.RepeatedStrings + 98, // 221: qdrant.Match.integers:type_name -> qdrant.RepeatedIntegers + 98, // 222: qdrant.Match.except_integers:type_name -> qdrant.RepeatedIntegers + 97, // 223: qdrant.Match.except_keywords:type_name -> qdrant.RepeatedStrings + 127, // 224: qdrant.DatetimeRange.lt:type_name -> google.protobuf.Timestamp + 127, // 225: qdrant.DatetimeRange.gt:type_name -> google.protobuf.Timestamp + 127, // 226: qdrant.DatetimeRange.gte:type_name -> google.protobuf.Timestamp + 127, // 227: qdrant.DatetimeRange.lte:type_name -> google.protobuf.Timestamp + 109, // 228: qdrant.GeoBoundingBox.top_left:type_name -> qdrant.GeoPoint + 109, // 229: qdrant.GeoBoundingBox.bottom_right:type_name -> qdrant.GeoPoint + 109, // 230: qdrant.GeoRadius.center:type_name -> qdrant.GeoPoint + 109, // 231: qdrant.GeoLineString.points:type_name -> qdrant.GeoPoint + 103, // 232: qdrant.GeoPolygon.exterior:type_name -> qdrant.GeoLineString + 103, // 233: qdrant.GeoPolygon.interiors:type_name -> qdrant.GeoLineString + 107, // 234: qdrant.PointsSelector.points:type_name -> qdrant.PointsIdsList + 88, // 235: qdrant.PointsSelector.filter:type_name -> qdrant.Filter + 9, // 236: qdrant.PointsIdsList.ids:type_name -> qdrant.PointId + 9, // 237: qdrant.PointStruct.id:type_name -> qdrant.PointId + 124, // 238: qdrant.PointStruct.payload:type_name -> qdrant.PointStruct.PayloadEntry + 32, // 239: qdrant.PointStruct.vectors:type_name -> qdrant.Vectors + 128, // 240: qdrant.SetPayloadPoints.PayloadEntry.value:type_name -> qdrant.Value + 11, // 241: qdrant.NamedVectors.VectorsEntry.value:type_name -> qdrant.Vector + 108, // 242: qdrant.PointsUpdateOperation.PointStructList.points:type_name -> qdrant.PointStruct + 16, // 243: qdrant.PointsUpdateOperation.PointStructList.shard_key_selector:type_name -> qdrant.ShardKeySelector + 120, // 244: qdrant.PointsUpdateOperation.SetPayload.payload:type_name -> qdrant.PointsUpdateOperation.SetPayload.PayloadEntry + 106, // 245: qdrant.PointsUpdateOperation.SetPayload.points_selector:type_name -> qdrant.PointsSelector + 16, // 246: qdrant.PointsUpdateOperation.SetPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 121, // 247: qdrant.PointsUpdateOperation.OverwritePayload.payload:type_name -> qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry + 106, // 248: qdrant.PointsUpdateOperation.OverwritePayload.points_selector:type_name -> qdrant.PointsSelector + 16, // 249: qdrant.PointsUpdateOperation.OverwritePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 250: qdrant.PointsUpdateOperation.DeletePayload.points_selector:type_name -> qdrant.PointsSelector + 16, // 251: qdrant.PointsUpdateOperation.DeletePayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 21, // 252: qdrant.PointsUpdateOperation.UpdateVectors.points:type_name -> qdrant.PointVectors + 16, // 253: qdrant.PointsUpdateOperation.UpdateVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 254: qdrant.PointsUpdateOperation.DeleteVectors.points_selector:type_name -> qdrant.PointsSelector + 33, // 255: qdrant.PointsUpdateOperation.DeleteVectors.vectors:type_name -> qdrant.VectorsSelector + 16, // 256: qdrant.PointsUpdateOperation.DeleteVectors.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 257: qdrant.PointsUpdateOperation.DeletePoints.points:type_name -> qdrant.PointsSelector + 16, // 258: qdrant.PointsUpdateOperation.DeletePoints.shard_key_selector:type_name -> qdrant.ShardKeySelector + 106, // 259: qdrant.PointsUpdateOperation.ClearPayload.points:type_name -> qdrant.PointsSelector + 16, // 260: qdrant.PointsUpdateOperation.ClearPayload.shard_key_selector:type_name -> qdrant.ShardKeySelector + 128, // 261: qdrant.PointsUpdateOperation.SetPayload.PayloadEntry.value:type_name -> qdrant.Value + 128, // 262: qdrant.PointsUpdateOperation.OverwritePayload.PayloadEntry.value:type_name -> qdrant.Value + 128, // 263: qdrant.ScoredPoint.PayloadEntry.value:type_name -> qdrant.Value + 128, // 264: qdrant.RetrievedPoint.PayloadEntry.value:type_name -> qdrant.Value + 128, // 265: qdrant.PointStruct.PayloadEntry.value:type_name -> qdrant.Value + 266, // [266:266] is the sub-list for method output_type + 266, // [266:266] is the sub-list for method input_type + 266, // [266:266] is the sub-list for extension type_name + 266, // [266:266] is the sub-list for extension extendee + 0, // [0:266] is the sub-list for field type_name } func init() { file_points_proto_init() } @@ -9121,7 +10690,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShardKeySelector); i { + switch v := v.(*DenseVector); i { case 0: return &v.state case 1: @@ -9133,7 +10702,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertPoints); i { + switch v := v.(*SparseVector); i { case 0: return &v.state case 1: @@ -9145,7 +10714,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePoints); i { + switch v := v.(*MultiDenseVector); i { case 0: return &v.state case 1: @@ -9157,7 +10726,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPoints); i { + switch v := v.(*VectorInput); i { case 0: return &v.state case 1: @@ -9169,7 +10738,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdatePointVectors); i { + switch v := v.(*ShardKeySelector); i { case 0: return &v.state case 1: @@ -9181,7 +10750,7 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PointVectors); i { + switch v := v.(*UpsertPoints); i { case 0: return &v.state case 1: @@ -9193,6 +10762,54 @@ func file_points_proto_init() { } } file_points_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeletePoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePointVectors); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PointVectors); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePointVectors); i { case 0: return &v.state @@ -9204,8 +10821,140 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetPayloadPoints); i { + file_points_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetPayloadPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeletePayloadPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClearPayloadPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateFieldIndexCollection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteFieldIndexCollection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadIncludeSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadExcludeSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithPayloadSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamedVectors); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Vectors); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VectorsSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithVectorsSelector); i { case 0: return &v.state case 1: @@ -9216,8 +10965,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePayloadPoints); i { + file_points_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QuantizationSearchParams); i { case 0: return &v.state case 1: @@ -9228,8 +10977,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClearPayloadPoints); i { + file_points_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchParams); i { case 0: return &v.state case 1: @@ -9240,8 +10989,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateFieldIndexCollection); i { + file_points_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchPoints); i { case 0: return &v.state case 1: @@ -9252,8 +11001,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteFieldIndexCollection); i { + file_points_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchBatchPoints); i { case 0: return &v.state case 1: @@ -9264,8 +11013,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadIncludeSelector); i { + file_points_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithLookup); i { case 0: return &v.state case 1: @@ -9276,8 +11025,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadExcludeSelector); i { + file_points_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchPointGroups); i { case 0: return &v.state case 1: @@ -9288,8 +11037,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithPayloadSelector); i { + file_points_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartFrom); i { case 0: return &v.state case 1: @@ -9300,8 +11049,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NamedVectors); i { + file_points_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrderBy); i { case 0: return &v.state case 1: @@ -9312,8 +11061,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Vectors); i { + file_points_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScrollPoints); i { case 0: return &v.state case 1: @@ -9324,8 +11073,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VectorsSelector); i { + file_points_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LookupLocation); i { case 0: return &v.state case 1: @@ -9336,8 +11085,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithVectorsSelector); i { + file_points_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendPoints); i { case 0: return &v.state case 1: @@ -9348,8 +11097,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuantizationSearchParams); i { + file_points_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendBatchPoints); i { case 0: return &v.state case 1: @@ -9360,8 +11109,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchParams); i { + file_points_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendPointGroups); i { case 0: return &v.state case 1: @@ -9372,8 +11121,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchPoints); i { + file_points_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TargetVector); i { case 0: return &v.state case 1: @@ -9384,8 +11133,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchBatchPoints); i { + file_points_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VectorExample); i { case 0: return &v.state case 1: @@ -9396,8 +11145,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithLookup); i { + file_points_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextExamplePair); i { case 0: return &v.state case 1: @@ -9408,8 +11157,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchPointGroups); i { + file_points_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverPoints); i { case 0: return &v.state case 1: @@ -9420,8 +11169,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartFrom); i { + file_points_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverBatchPoints); i { case 0: return &v.state case 1: @@ -9432,8 +11181,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderBy); i { + file_points_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CountPoints); i { case 0: return &v.state case 1: @@ -9444,8 +11193,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScrollPoints); i { + file_points_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecommendInput); i { case 0: return &v.state case 1: @@ -9456,8 +11205,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LookupLocation); i { + file_points_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInputPair); i { case 0: return &v.state case 1: @@ -9468,8 +11217,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecommendPoints); i { + file_points_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverInput); i { case 0: return &v.state case 1: @@ -9480,8 +11229,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecommendBatchPoints); i { + file_points_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContextInput); i { case 0: return &v.state case 1: @@ -9492,8 +11241,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecommendPointGroups); i { + file_points_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Query); i { case 0: return &v.state case 1: @@ -9504,8 +11253,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TargetVector); i { + file_points_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrefetchQuery); i { case 0: return &v.state case 1: @@ -9516,8 +11265,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VectorExample); i { + file_points_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryPoints); i { case 0: return &v.state case 1: @@ -9528,8 +11277,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContextExamplePair); i { + file_points_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryBatchPoints); i { case 0: return &v.state case 1: @@ -9540,8 +11289,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoverPoints); i { + file_points_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PointsUpdateOperation); i { case 0: return &v.state case 1: @@ -9552,8 +11301,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoverBatchPoints); i { + file_points_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateBatchPoints); i { case 0: return &v.state case 1: @@ -9564,8 +11313,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountPoints); i { + file_points_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PointsOperationResponse); i { case 0: return &v.state case 1: @@ -9576,8 +11325,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PointsUpdateOperation); i { + file_points_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateResult); i { case 0: return &v.state case 1: @@ -9588,8 +11337,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateBatchPoints); i { + file_points_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrderValue); i { case 0: return &v.state case 1: @@ -9600,8 +11349,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PointsOperationResponse); i { + file_points_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScoredPoint); i { case 0: return &v.state case 1: @@ -9612,8 +11361,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateResult); i { + file_points_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupId); i { case 0: return &v.state case 1: @@ -9624,8 +11373,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScoredPoint); i { + file_points_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PointGroup); i { case 0: return &v.state case 1: @@ -9636,8 +11385,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupId); i { + file_points_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupsResult); i { case 0: return &v.state case 1: @@ -9648,8 +11397,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PointGroup); i { + file_points_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchResponse); i { case 0: return &v.state case 1: @@ -9660,8 +11409,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupsResult); i { + file_points_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryResponse); i { case 0: return &v.state case 1: @@ -9672,8 +11421,8 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchResponse); i { + file_points_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryBatchResponse); i { case 0: return &v.state case 1: @@ -9684,7 +11433,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchResult); i { case 0: return &v.state @@ -9696,7 +11445,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchBatchResponse); i { case 0: return &v.state @@ -9708,7 +11457,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchGroupsResponse); i { case 0: return &v.state @@ -9720,7 +11469,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CountResponse); i { case 0: return &v.state @@ -9732,7 +11481,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScrollResponse); i { case 0: return &v.state @@ -9744,7 +11493,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CountResult); i { case 0: return &v.state @@ -9756,7 +11505,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetrievedPoint); i { case 0: return &v.state @@ -9768,7 +11517,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetResponse); i { case 0: return &v.state @@ -9780,7 +11529,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecommendResponse); i { case 0: return &v.state @@ -9792,7 +11541,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecommendBatchResponse); i { case 0: return &v.state @@ -9804,7 +11553,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DiscoverResponse); i { case 0: return &v.state @@ -9816,7 +11565,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DiscoverBatchResponse); i { case 0: return &v.state @@ -9828,7 +11577,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecommendGroupsResponse); i { case 0: return &v.state @@ -9840,7 +11589,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateBatchResponse); i { case 0: return &v.state @@ -9852,7 +11601,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Filter); i { case 0: return &v.state @@ -9864,7 +11613,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MinShould); i { case 0: return &v.state @@ -9876,7 +11625,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Condition); i { case 0: return &v.state @@ -9888,7 +11637,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsEmptyCondition); i { case 0: return &v.state @@ -9900,7 +11649,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsNullCondition); i { case 0: return &v.state @@ -9912,7 +11661,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HasIdCondition); i { case 0: return &v.state @@ -9924,7 +11673,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NestedCondition); i { case 0: return &v.state @@ -9936,7 +11685,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FieldCondition); i { case 0: return &v.state @@ -9948,7 +11697,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Match); i { case 0: return &v.state @@ -9960,7 +11709,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepeatedStrings); i { case 0: return &v.state @@ -9972,7 +11721,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepeatedIntegers); i { case 0: return &v.state @@ -9984,7 +11733,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Range); i { case 0: return &v.state @@ -9996,7 +11745,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DatetimeRange); i { case 0: return &v.state @@ -10008,7 +11757,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeoBoundingBox); i { case 0: return &v.state @@ -10020,7 +11769,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeoRadius); i { case 0: return &v.state @@ -10032,7 +11781,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeoLineString); i { case 0: return &v.state @@ -10044,7 +11793,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeoPolygon); i { case 0: return &v.state @@ -10056,7 +11805,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValuesCount); i { case 0: return &v.state @@ -10068,7 +11817,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsSelector); i { case 0: return &v.state @@ -10080,7 +11829,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsIdsList); i { case 0: return &v.state @@ -10092,7 +11841,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointStruct); i { case 0: return &v.state @@ -10104,7 +11853,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeoPoint); i { case 0: return &v.state @@ -10116,7 +11865,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_PointStructList); i { case 0: return &v.state @@ -10128,7 +11877,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_SetPayload); i { case 0: return &v.state @@ -10140,7 +11889,19 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PointsUpdateOperation_OverwritePayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_points_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_DeletePayload); i { case 0: return &v.state @@ -10152,7 +11913,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_UpdateVectors); i { case 0: return &v.state @@ -10164,7 +11925,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_DeleteVectors); i { case 0: return &v.state @@ -10176,7 +11937,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_DeletePoints); i { case 0: return &v.state @@ -10188,7 +11949,7 @@ func file_points_proto_init() { return nil } } - file_points_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_points_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PointsUpdateOperation_ClearPayload); i { case 0: return &v.state @@ -10210,62 +11971,80 @@ func file_points_proto_init() { (*PointId_Uuid)(nil), } file_points_proto_msgTypes[4].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[6].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[7].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[8].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*VectorInput_Id)(nil), + (*VectorInput_Dense)(nil), + (*VectorInput_Sparse)(nil), + (*VectorInput_MultiDense)(nil), + } + file_points_proto_msgTypes[10].OneofWrappers = []interface{}{} file_points_proto_msgTypes[11].OneofWrappers = []interface{}{} file_points_proto_msgTypes[12].OneofWrappers = []interface{}{} file_points_proto_msgTypes[13].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[14].OneofWrappers = []interface{}{} file_points_proto_msgTypes[15].OneofWrappers = []interface{}{} file_points_proto_msgTypes[16].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[19].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[17].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[19].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[23].OneofWrappers = []interface{}{ (*WithPayloadSelector_Enable)(nil), (*WithPayloadSelector_Include)(nil), (*WithPayloadSelector_Exclude)(nil), } - file_points_proto_msgTypes[21].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[25].OneofWrappers = []interface{}{ (*Vectors_Vector)(nil), (*Vectors_Vectors)(nil), } - file_points_proto_msgTypes[23].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[27].OneofWrappers = []interface{}{ (*WithVectorsSelector_Enable)(nil), (*WithVectorsSelector_Include)(nil), } - file_points_proto_msgTypes[24].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[25].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[27].OneofWrappers = []interface{}{} file_points_proto_msgTypes[28].OneofWrappers = []interface{}{} file_points_proto_msgTypes[29].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[30].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[30].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[31].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[32].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[33].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[34].OneofWrappers = []interface{}{ (*StartFrom_Float)(nil), (*StartFrom_Integer)(nil), (*StartFrom_Timestamp)(nil), (*StartFrom_Datetime)(nil), } - file_points_proto_msgTypes[31].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[32].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[33].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[34].OneofWrappers = []interface{}{} file_points_proto_msgTypes[35].OneofWrappers = []interface{}{} file_points_proto_msgTypes[36].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[37].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[37].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[38].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[39].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[40].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[41].OneofWrappers = []interface{}{ (*TargetVector_Single)(nil), } - file_points_proto_msgTypes[38].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[42].OneofWrappers = []interface{}{ (*VectorExample_Id)(nil), (*VectorExample_Vector)(nil), } - file_points_proto_msgTypes[40].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[41].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[42].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[43].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[44].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[45].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[46].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[47].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[51].OneofWrappers = []interface{}{ + (*Query_Nearest)(nil), + (*Query_Recommend)(nil), + (*Query_Discover)(nil), + (*Query_Context)(nil), + (*Query_OrderBy)(nil), + (*Query_Fusion)(nil), + } + file_points_proto_msgTypes[52].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[53].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[54].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[55].OneofWrappers = []interface{}{ (*PointsUpdateOperation_Upsert)(nil), (*PointsUpdateOperation_DeleteDeprecated)(nil), (*PointsUpdateOperation_SetPayload_)(nil), - (*PointsUpdateOperation_OverwritePayload)(nil), + (*PointsUpdateOperation_OverwritePayload_)(nil), (*PointsUpdateOperation_DeletePayload_)(nil), (*PointsUpdateOperation_ClearPayloadDeprecated)(nil), (*PointsUpdateOperation_UpdateVectors_)(nil), @@ -10273,18 +12052,22 @@ func file_points_proto_init() { (*PointsUpdateOperation_DeletePoints_)(nil), (*PointsUpdateOperation_ClearPayload_)(nil), } - file_points_proto_msgTypes[44].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[46].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[47].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[48].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[56].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[58].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[59].OneofWrappers = []interface{}{ + (*OrderValue_Int)(nil), + (*OrderValue_Float)(nil), + } + file_points_proto_msgTypes[60].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[61].OneofWrappers = []interface{}{ (*GroupId_UnsignedValue)(nil), (*GroupId_IntegerValue)(nil), (*GroupId_StringValue)(nil), } - file_points_proto_msgTypes[56].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[58].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[66].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[68].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[71].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[73].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[81].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[83].OneofWrappers = []interface{}{ (*Condition_Field)(nil), (*Condition_IsEmpty)(nil), (*Condition_HasId)(nil), @@ -10292,7 +12075,7 @@ func file_points_proto_init() { (*Condition_IsNull)(nil), (*Condition_Nested)(nil), } - file_points_proto_msgTypes[74].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[89].OneofWrappers = []interface{}{ (*Match_Keyword)(nil), (*Match_Integer)(nil), (*Match_Boolean)(nil), @@ -10302,28 +12085,29 @@ func file_points_proto_init() { (*Match_ExceptIntegers)(nil), (*Match_ExceptKeywords)(nil), } - file_points_proto_msgTypes[77].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[78].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[83].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[84].OneofWrappers = []interface{}{ + file_points_proto_msgTypes[92].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[93].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[98].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[99].OneofWrappers = []interface{}{ (*PointsSelector_Points)(nil), (*PointsSelector_Filter)(nil), } - file_points_proto_msgTypes[86].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[90].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[91].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[92].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[93].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[94].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[95].OneofWrappers = []interface{}{} - file_points_proto_msgTypes[96].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[101].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[105].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[106].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[107].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[108].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[109].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[110].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[111].OneofWrappers = []interface{}{} + file_points_proto_msgTypes[112].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_points_proto_rawDesc, - NumEnums: 6, - NumMessages: 101, + NumEnums: 7, + NumMessages: 118, NumExtensions: 0, NumServices: 0, }, diff --git a/qdrant/points_service.pb.go b/qdrant/points_service.pb.go index f7e69ed..f5469af 100644 --- a/qdrant/points_service.pb.go +++ b/qdrant/points_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: points_service.proto package go_client @@ -24,7 +24,7 @@ var File_points_service_proto protoreflect.FileDescriptor var file_points_service_proto_rawDesc = []byte{ 0x0a, 0x14, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x1a, 0x0c, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd1, 0x0c, 0x0a, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xce, 0x0d, 0x0a, 0x06, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x14, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x1f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, @@ -126,7 +126,15 @@ var file_points_service_proto_rawDesc = []byte{ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x1b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x35, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x15, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, + 0x1a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_points_service_proto_goTypes = []interface{}{ @@ -151,19 +159,23 @@ var file_points_service_proto_goTypes = []interface{}{ (*DiscoverBatchPoints)(nil), // 18: qdrant.DiscoverBatchPoints (*CountPoints)(nil), // 19: qdrant.CountPoints (*UpdateBatchPoints)(nil), // 20: qdrant.UpdateBatchPoints - (*PointsOperationResponse)(nil), // 21: qdrant.PointsOperationResponse - (*GetResponse)(nil), // 22: qdrant.GetResponse - (*SearchResponse)(nil), // 23: qdrant.SearchResponse - (*SearchBatchResponse)(nil), // 24: qdrant.SearchBatchResponse - (*SearchGroupsResponse)(nil), // 25: qdrant.SearchGroupsResponse - (*ScrollResponse)(nil), // 26: qdrant.ScrollResponse - (*RecommendResponse)(nil), // 27: qdrant.RecommendResponse - (*RecommendBatchResponse)(nil), // 28: qdrant.RecommendBatchResponse - (*RecommendGroupsResponse)(nil), // 29: qdrant.RecommendGroupsResponse - (*DiscoverResponse)(nil), // 30: qdrant.DiscoverResponse - (*DiscoverBatchResponse)(nil), // 31: qdrant.DiscoverBatchResponse - (*CountResponse)(nil), // 32: qdrant.CountResponse - (*UpdateBatchResponse)(nil), // 33: qdrant.UpdateBatchResponse + (*QueryPoints)(nil), // 21: qdrant.QueryPoints + (*QueryBatchPoints)(nil), // 22: qdrant.QueryBatchPoints + (*PointsOperationResponse)(nil), // 23: qdrant.PointsOperationResponse + (*GetResponse)(nil), // 24: qdrant.GetResponse + (*SearchResponse)(nil), // 25: qdrant.SearchResponse + (*SearchBatchResponse)(nil), // 26: qdrant.SearchBatchResponse + (*SearchGroupsResponse)(nil), // 27: qdrant.SearchGroupsResponse + (*ScrollResponse)(nil), // 28: qdrant.ScrollResponse + (*RecommendResponse)(nil), // 29: qdrant.RecommendResponse + (*RecommendBatchResponse)(nil), // 30: qdrant.RecommendBatchResponse + (*RecommendGroupsResponse)(nil), // 31: qdrant.RecommendGroupsResponse + (*DiscoverResponse)(nil), // 32: qdrant.DiscoverResponse + (*DiscoverBatchResponse)(nil), // 33: qdrant.DiscoverBatchResponse + (*CountResponse)(nil), // 34: qdrant.CountResponse + (*UpdateBatchResponse)(nil), // 35: qdrant.UpdateBatchResponse + (*QueryResponse)(nil), // 36: qdrant.QueryResponse + (*QueryBatchResponse)(nil), // 37: qdrant.QueryBatchResponse } var file_points_service_proto_depIdxs = []int32{ 0, // 0: qdrant.Points.Upsert:input_type -> qdrant.UpsertPoints @@ -188,30 +200,34 @@ var file_points_service_proto_depIdxs = []int32{ 18, // 19: qdrant.Points.DiscoverBatch:input_type -> qdrant.DiscoverBatchPoints 19, // 20: qdrant.Points.Count:input_type -> qdrant.CountPoints 20, // 21: qdrant.Points.UpdateBatch:input_type -> qdrant.UpdateBatchPoints - 21, // 22: qdrant.Points.Upsert:output_type -> qdrant.PointsOperationResponse - 21, // 23: qdrant.Points.Delete:output_type -> qdrant.PointsOperationResponse - 22, // 24: qdrant.Points.Get:output_type -> qdrant.GetResponse - 21, // 25: qdrant.Points.UpdateVectors:output_type -> qdrant.PointsOperationResponse - 21, // 26: qdrant.Points.DeleteVectors:output_type -> qdrant.PointsOperationResponse - 21, // 27: qdrant.Points.SetPayload:output_type -> qdrant.PointsOperationResponse - 21, // 28: qdrant.Points.OverwritePayload:output_type -> qdrant.PointsOperationResponse - 21, // 29: qdrant.Points.DeletePayload:output_type -> qdrant.PointsOperationResponse - 21, // 30: qdrant.Points.ClearPayload:output_type -> qdrant.PointsOperationResponse - 21, // 31: qdrant.Points.CreateFieldIndex:output_type -> qdrant.PointsOperationResponse - 21, // 32: qdrant.Points.DeleteFieldIndex:output_type -> qdrant.PointsOperationResponse - 23, // 33: qdrant.Points.Search:output_type -> qdrant.SearchResponse - 24, // 34: qdrant.Points.SearchBatch:output_type -> qdrant.SearchBatchResponse - 25, // 35: qdrant.Points.SearchGroups:output_type -> qdrant.SearchGroupsResponse - 26, // 36: qdrant.Points.Scroll:output_type -> qdrant.ScrollResponse - 27, // 37: qdrant.Points.Recommend:output_type -> qdrant.RecommendResponse - 28, // 38: qdrant.Points.RecommendBatch:output_type -> qdrant.RecommendBatchResponse - 29, // 39: qdrant.Points.RecommendGroups:output_type -> qdrant.RecommendGroupsResponse - 30, // 40: qdrant.Points.Discover:output_type -> qdrant.DiscoverResponse - 31, // 41: qdrant.Points.DiscoverBatch:output_type -> qdrant.DiscoverBatchResponse - 32, // 42: qdrant.Points.Count:output_type -> qdrant.CountResponse - 33, // 43: qdrant.Points.UpdateBatch:output_type -> qdrant.UpdateBatchResponse - 22, // [22:44] is the sub-list for method output_type - 0, // [0:22] is the sub-list for method input_type + 21, // 22: qdrant.Points.Query:input_type -> qdrant.QueryPoints + 22, // 23: qdrant.Points.QueryBatch:input_type -> qdrant.QueryBatchPoints + 23, // 24: qdrant.Points.Upsert:output_type -> qdrant.PointsOperationResponse + 23, // 25: qdrant.Points.Delete:output_type -> qdrant.PointsOperationResponse + 24, // 26: qdrant.Points.Get:output_type -> qdrant.GetResponse + 23, // 27: qdrant.Points.UpdateVectors:output_type -> qdrant.PointsOperationResponse + 23, // 28: qdrant.Points.DeleteVectors:output_type -> qdrant.PointsOperationResponse + 23, // 29: qdrant.Points.SetPayload:output_type -> qdrant.PointsOperationResponse + 23, // 30: qdrant.Points.OverwritePayload:output_type -> qdrant.PointsOperationResponse + 23, // 31: qdrant.Points.DeletePayload:output_type -> qdrant.PointsOperationResponse + 23, // 32: qdrant.Points.ClearPayload:output_type -> qdrant.PointsOperationResponse + 23, // 33: qdrant.Points.CreateFieldIndex:output_type -> qdrant.PointsOperationResponse + 23, // 34: qdrant.Points.DeleteFieldIndex:output_type -> qdrant.PointsOperationResponse + 25, // 35: qdrant.Points.Search:output_type -> qdrant.SearchResponse + 26, // 36: qdrant.Points.SearchBatch:output_type -> qdrant.SearchBatchResponse + 27, // 37: qdrant.Points.SearchGroups:output_type -> qdrant.SearchGroupsResponse + 28, // 38: qdrant.Points.Scroll:output_type -> qdrant.ScrollResponse + 29, // 39: qdrant.Points.Recommend:output_type -> qdrant.RecommendResponse + 30, // 40: qdrant.Points.RecommendBatch:output_type -> qdrant.RecommendBatchResponse + 31, // 41: qdrant.Points.RecommendGroups:output_type -> qdrant.RecommendGroupsResponse + 32, // 42: qdrant.Points.Discover:output_type -> qdrant.DiscoverResponse + 33, // 43: qdrant.Points.DiscoverBatch:output_type -> qdrant.DiscoverBatchResponse + 34, // 44: qdrant.Points.Count:output_type -> qdrant.CountResponse + 35, // 45: qdrant.Points.UpdateBatch:output_type -> qdrant.UpdateBatchResponse + 36, // 46: qdrant.Points.Query:output_type -> qdrant.QueryResponse + 37, // 47: qdrant.Points.QueryBatch:output_type -> qdrant.QueryBatchResponse + 24, // [24:48] is the sub-list for method output_type + 0, // [0:24] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/qdrant/points_service_grpc.pb.go b/qdrant/points_service_grpc.pb.go index d297a36..94dd84b 100644 --- a/qdrant/points_service_grpc.pb.go +++ b/qdrant/points_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc v4.22.2 // source: points_service.proto package go_client @@ -80,6 +80,10 @@ type PointsClient interface { Count(ctx context.Context, in *CountPoints, opts ...grpc.CallOption) (*CountResponse, error) // Perform multiple update operations in one request UpdateBatch(ctx context.Context, in *UpdateBatchPoints, opts ...grpc.CallOption) (*UpdateBatchResponse, error) + // Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + Query(ctx context.Context, in *QueryPoints, opts ...grpc.CallOption) (*QueryResponse, error) + // Universally query points in a batch fashion. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + QueryBatch(ctx context.Context, in *QueryBatchPoints, opts ...grpc.CallOption) (*QueryBatchResponse, error) } type pointsClient struct { @@ -288,6 +292,24 @@ func (c *pointsClient) UpdateBatch(ctx context.Context, in *UpdateBatchPoints, o return out, nil } +func (c *pointsClient) Query(ctx context.Context, in *QueryPoints, opts ...grpc.CallOption) (*QueryResponse, error) { + out := new(QueryResponse) + err := c.cc.Invoke(ctx, "/qdrant.Points/Query", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pointsClient) QueryBatch(ctx context.Context, in *QueryBatchPoints, opts ...grpc.CallOption) (*QueryBatchResponse, error) { + out := new(QueryBatchResponse) + err := c.cc.Invoke(ctx, "/qdrant.Points/QueryBatch", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // PointsServer is the server API for Points service. // All implementations must embed UnimplementedPointsServer // for forward compatibility @@ -350,6 +372,10 @@ type PointsServer interface { Count(context.Context, *CountPoints) (*CountResponse, error) // Perform multiple update operations in one request UpdateBatch(context.Context, *UpdateBatchPoints) (*UpdateBatchResponse, error) + // Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + Query(context.Context, *QueryPoints) (*QueryResponse, error) + // Universally query points in a batch fashion. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + QueryBatch(context.Context, *QueryBatchPoints) (*QueryBatchResponse, error) mustEmbedUnimplementedPointsServer() } @@ -423,6 +449,12 @@ func (UnimplementedPointsServer) Count(context.Context, *CountPoints) (*CountRes func (UnimplementedPointsServer) UpdateBatch(context.Context, *UpdateBatchPoints) (*UpdateBatchResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateBatch not implemented") } +func (UnimplementedPointsServer) Query(context.Context, *QueryPoints) (*QueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Query not implemented") +} +func (UnimplementedPointsServer) QueryBatch(context.Context, *QueryBatchPoints) (*QueryBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryBatch not implemented") +} func (UnimplementedPointsServer) mustEmbedUnimplementedPointsServer() {} // UnsafePointsServer may be embedded to opt out of forward compatibility for this service. @@ -832,6 +864,42 @@ func _Points_UpdateBatch_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Points_Query_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).Query(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/qdrant.Points/Query", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).Query(ctx, req.(*QueryPoints)) + } + return interceptor(ctx, in, info, handler) +} + +func _Points_QueryBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryBatchPoints) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PointsServer).QueryBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/qdrant.Points/QueryBatch", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PointsServer).QueryBatch(ctx, req.(*QueryBatchPoints)) + } + return interceptor(ctx, in, info, handler) +} + // Points_ServiceDesc is the grpc.ServiceDesc for Points service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -927,6 +995,14 @@ var Points_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateBatch", Handler: _Points_UpdateBatch_Handler, }, + { + MethodName: "Query", + Handler: _Points_Query_Handler, + }, + { + MethodName: "QueryBatch", + Handler: _Points_QueryBatch_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "points_service.proto", diff --git a/qdrant/qdrant.pb.go b/qdrant/qdrant.pb.go index 0eba625..d3a9775 100644 --- a/qdrant/qdrant.pb.go +++ b/qdrant/qdrant.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: qdrant.proto package go_client diff --git a/qdrant/qdrant_grpc.pb.go b/qdrant/qdrant_grpc.pb.go index 506285e..5fa4769 100644 --- a/qdrant/qdrant_grpc.pb.go +++ b/qdrant/qdrant_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc v4.22.2 // source: qdrant.proto package go_client diff --git a/qdrant/snapshots_service.pb.go b/qdrant/snapshots_service.pb.go index 1feee0c..efc2c07 100644 --- a/qdrant/snapshots_service.pb.go +++ b/qdrant/snapshots_service.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.22.2 // source: snapshots_service.proto package go_client diff --git a/qdrant/snapshots_service_grpc.pb.go b/qdrant/snapshots_service_grpc.pb.go index 1d1cbc3..ffe2d74 100644 --- a/qdrant/snapshots_service_grpc.pb.go +++ b/qdrant/snapshots_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc v4.22.2 // source: snapshots_service.proto package go_client