From 70fa6ffa229a30c9abc0b20d27873b4003879322 Mon Sep 17 00:00:00 2001 From: warmans <> Date: Sat, 28 Sep 2024 19:19:59 +0100 Subject: [PATCH] Added improved transcript navigation controls --- gui/src/assets/swagger.json | 31 + .../gen/api/open-api/transcript.swagger.json | 31 + server/gen/api/transcript.pb.go | 1774 +++++++++-------- server/pkg/discord/bot.go | 241 ++- server/proto/transcript.proto | 11 +- server/service/grpc/transcript.go | 27 +- 6 files changed, 1186 insertions(+), 929 deletions(-) diff --git a/gui/src/assets/swagger.json b/gui/src/assets/swagger.json index de2fe011..78f9f3f1 100644 --- a/gui/src/assets/swagger.json +++ b/gui/src/assets/swagger.json @@ -1567,6 +1567,20 @@ "required": false, "type": "integer", "format": "int32" + }, + { + "name": "range.start", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "range.end", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -2297,6 +2311,19 @@ } } }, + "rskDialogRange": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "format": "int32" + }, + "end": { + "type": "integer", + "format": "int32" + } + } + }, "rskDialogResult": { "type": "object", "properties": { @@ -3121,6 +3148,10 @@ "items": { "$ref": "#/definitions/rskDialog" } + }, + "maxDialogPosition": { + "type": "integer", + "format": "int32" } } }, diff --git a/server/gen/api/open-api/transcript.swagger.json b/server/gen/api/open-api/transcript.swagger.json index 23461073..ae47b04b 100644 --- a/server/gen/api/open-api/transcript.swagger.json +++ b/server/gen/api/open-api/transcript.swagger.json @@ -729,6 +729,20 @@ "required": false, "type": "integer", "format": "int32" + }, + { + "name": "range.start", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "range.end", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" } ], "tags": [ @@ -1085,6 +1099,19 @@ } } }, + "rskDialogRange": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "format": "int32" + }, + "end": { + "type": "integer", + "format": "int32" + } + } + }, "rskMedia": { "type": "object", "properties": { @@ -1466,6 +1493,10 @@ "items": { "$ref": "#/definitions/rskDialog" } + }, + "maxDialogPosition": { + "type": "integer", + "format": "int32" } } }, diff --git a/server/gen/api/transcript.pb.go b/server/gen/api/transcript.pb.go index 85426c1a..87611120 100644 --- a/server/gen/api/transcript.pb.go +++ b/server/gen/api/transcript.pb.go @@ -1223,20 +1223,78 @@ func (x *GetTranscriptRequest) GetWithRaw() bool { return false } +type DialogRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` +} + +func (x *DialogRange) Reset() { + *x = DialogRange{} + if protoimpl.UnsafeEnabled { + mi := &file_transcript_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DialogRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DialogRange) ProtoMessage() {} + +func (x *DialogRange) ProtoReflect() protoreflect.Message { + mi := &file_transcript_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 DialogRange.ProtoReflect.Descriptor instead. +func (*DialogRange) Descriptor() ([]byte, []int) { + return file_transcript_proto_rawDescGZIP(), []int{8} +} + +func (x *DialogRange) GetStart() int32 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *DialogRange) GetEnd() int32 { + if x != nil { + return x.End + } + return 0 +} + type GetTranscriptDialogRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Epid string `protobuf:"bytes,1,opt,name=epid,proto3" json:"epid,omitempty"` - Pos int32 `protobuf:"varint,2,opt,name=pos,proto3" json:"pos,omitempty"` - NumContextLines int32 `protobuf:"varint,3,opt,name=num_context_lines,json=numContextLines,proto3" json:"num_context_lines,omitempty"` + Epid string `protobuf:"bytes,1,opt,name=epid,proto3" json:"epid,omitempty"` + // Deprecated: Marked as deprecated in transcript.proto. + Pos int32 `protobuf:"varint,2,opt,name=pos,proto3" json:"pos,omitempty"` + // Deprecated: Marked as deprecated in transcript.proto. + NumContextLines int32 `protobuf:"varint,3,opt,name=num_context_lines,json=numContextLines,proto3" json:"num_context_lines,omitempty"` + Range *DialogRange `protobuf:"bytes,4,opt,name=range,proto3" json:"range,omitempty"` } func (x *GetTranscriptDialogRequest) Reset() { *x = GetTranscriptDialogRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[8] + mi := &file_transcript_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1249,7 +1307,7 @@ func (x *GetTranscriptDialogRequest) String() string { func (*GetTranscriptDialogRequest) ProtoMessage() {} func (x *GetTranscriptDialogRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[8] + mi := &file_transcript_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1262,7 +1320,7 @@ func (x *GetTranscriptDialogRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTranscriptDialogRequest.ProtoReflect.Descriptor instead. func (*GetTranscriptDialogRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{8} + return file_transcript_proto_rawDescGZIP(), []int{9} } func (x *GetTranscriptDialogRequest) GetEpid() string { @@ -1272,6 +1330,7 @@ func (x *GetTranscriptDialogRequest) GetEpid() string { return "" } +// Deprecated: Marked as deprecated in transcript.proto. func (x *GetTranscriptDialogRequest) GetPos() int32 { if x != nil { return x.Pos @@ -1279,6 +1338,7 @@ func (x *GetTranscriptDialogRequest) GetPos() int32 { return 0 } +// Deprecated: Marked as deprecated in transcript.proto. func (x *GetTranscriptDialogRequest) GetNumContextLines() int32 { if x != nil { return x.NumContextLines @@ -1286,6 +1346,13 @@ func (x *GetTranscriptDialogRequest) GetNumContextLines() int32 { return 0 } +func (x *GetTranscriptDialogRequest) GetRange() *DialogRange { + if x != nil { + return x.Range + } + return nil +} + type ListTranscriptsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1295,7 +1362,7 @@ type ListTranscriptsRequest struct { func (x *ListTranscriptsRequest) Reset() { *x = ListTranscriptsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[9] + mi := &file_transcript_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1308,7 +1375,7 @@ func (x *ListTranscriptsRequest) String() string { func (*ListTranscriptsRequest) ProtoMessage() {} func (x *ListTranscriptsRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[9] + mi := &file_transcript_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1321,7 +1388,7 @@ func (x *ListTranscriptsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTranscriptsRequest.ProtoReflect.Descriptor instead. func (*ListTranscriptsRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{9} + return file_transcript_proto_rawDescGZIP(), []int{10} } type TranscriptList struct { @@ -1335,7 +1402,7 @@ type TranscriptList struct { func (x *TranscriptList) Reset() { *x = TranscriptList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[10] + mi := &file_transcript_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1348,7 +1415,7 @@ func (x *TranscriptList) String() string { func (*TranscriptList) ProtoMessage() {} func (x *TranscriptList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[10] + mi := &file_transcript_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1361,7 +1428,7 @@ func (x *TranscriptList) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptList.ProtoReflect.Descriptor instead. func (*TranscriptList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{10} + return file_transcript_proto_rawDescGZIP(), []int{11} } func (x *TranscriptList) GetEpisodes() []*ShortTranscript { @@ -1382,7 +1449,7 @@ type ChunkStates struct { func (x *ChunkStates) Reset() { *x = ChunkStates{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[11] + mi := &file_transcript_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1395,7 +1462,7 @@ func (x *ChunkStates) String() string { func (*ChunkStates) ProtoMessage() {} func (x *ChunkStates) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[11] + mi := &file_transcript_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1408,7 +1475,7 @@ func (x *ChunkStates) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkStates.ProtoReflect.Descriptor instead. func (*ChunkStates) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{11} + return file_transcript_proto_rawDescGZIP(), []int{12} } func (x *ChunkStates) GetStates() []ContributionState { @@ -1440,7 +1507,7 @@ type ChunkedTranscriptStats struct { func (x *ChunkedTranscriptStats) Reset() { *x = ChunkedTranscriptStats{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[12] + mi := &file_transcript_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1520,7 @@ func (x *ChunkedTranscriptStats) String() string { func (*ChunkedTranscriptStats) ProtoMessage() {} func (x *ChunkedTranscriptStats) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[12] + mi := &file_transcript_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1533,7 @@ func (x *ChunkedTranscriptStats) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkedTranscriptStats.ProtoReflect.Descriptor instead. func (*ChunkedTranscriptStats) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{12} + return file_transcript_proto_rawDescGZIP(), []int{13} } func (x *ChunkedTranscriptStats) GetId() string { @@ -1564,7 +1631,7 @@ type ChunkedTranscriptList struct { func (x *ChunkedTranscriptList) Reset() { *x = ChunkedTranscriptList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[13] + mi := &file_transcript_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1577,7 +1644,7 @@ func (x *ChunkedTranscriptList) String() string { func (*ChunkedTranscriptList) ProtoMessage() {} func (x *ChunkedTranscriptList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[13] + mi := &file_transcript_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1590,7 +1657,7 @@ func (x *ChunkedTranscriptList) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkedTranscriptList.ProtoReflect.Descriptor instead. func (*ChunkedTranscriptList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{13} + return file_transcript_proto_rawDescGZIP(), []int{14} } func (x *ChunkedTranscriptList) GetChunked() []*ChunkedTranscriptStats { @@ -1613,7 +1680,7 @@ type ChunkStats struct { func (x *ChunkStats) Reset() { *x = ChunkStats{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[14] + mi := &file_transcript_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1693,7 @@ func (x *ChunkStats) String() string { func (*ChunkStats) ProtoMessage() {} func (x *ChunkStats) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[14] + mi := &file_transcript_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1706,7 @@ func (x *ChunkStats) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkStats.ProtoReflect.Descriptor instead. func (*ChunkStats) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{14} + return file_transcript_proto_rawDescGZIP(), []int{15} } func (x *ChunkStats) GetNumPending() int32 { @@ -1674,7 +1741,7 @@ type GetTranscriptChunkRequest struct { func (x *GetTranscriptChunkRequest) Reset() { *x = GetTranscriptChunkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[15] + mi := &file_transcript_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1687,7 +1754,7 @@ func (x *GetTranscriptChunkRequest) String() string { func (*GetTranscriptChunkRequest) ProtoMessage() {} func (x *GetTranscriptChunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[15] + mi := &file_transcript_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1700,7 +1767,7 @@ func (x *GetTranscriptChunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTranscriptChunkRequest.ProtoReflect.Descriptor instead. func (*GetTranscriptChunkRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{15} + return file_transcript_proto_rawDescGZIP(), []int{16} } func (x *GetTranscriptChunkRequest) GetId() string { @@ -1729,7 +1796,7 @@ type Chunk struct { func (x *Chunk) Reset() { *x = Chunk{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[16] + mi := &file_transcript_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1742,7 +1809,7 @@ func (x *Chunk) String() string { func (*Chunk) ProtoMessage() {} func (x *Chunk) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[16] + mi := &file_transcript_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1755,7 +1822,7 @@ func (x *Chunk) ProtoReflect() protoreflect.Message { // Deprecated: Use Chunk.ProtoReflect.Descriptor instead. func (*Chunk) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{16} + return file_transcript_proto_rawDescGZIP(), []int{17} } func (x *Chunk) GetId() string { @@ -1831,7 +1898,7 @@ type ListTranscriptChunksRequest struct { func (x *ListTranscriptChunksRequest) Reset() { *x = ListTranscriptChunksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[17] + mi := &file_transcript_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1844,7 +1911,7 @@ func (x *ListTranscriptChunksRequest) String() string { func (*ListTranscriptChunksRequest) ProtoMessage() {} func (x *ListTranscriptChunksRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[17] + mi := &file_transcript_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1857,7 +1924,7 @@ func (x *ListTranscriptChunksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTranscriptChunksRequest.ProtoReflect.Descriptor instead. func (*ListTranscriptChunksRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{17} + return file_transcript_proto_rawDescGZIP(), []int{18} } func (x *ListTranscriptChunksRequest) GetChunkedTranscriptId() string { @@ -1913,7 +1980,7 @@ type TranscriptChunkList struct { func (x *TranscriptChunkList) Reset() { *x = TranscriptChunkList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[18] + mi := &file_transcript_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1926,7 +1993,7 @@ func (x *TranscriptChunkList) String() string { func (*TranscriptChunkList) ProtoMessage() {} func (x *TranscriptChunkList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[18] + mi := &file_transcript_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1939,7 +2006,7 @@ func (x *TranscriptChunkList) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptChunkList.ProtoReflect.Descriptor instead. func (*TranscriptChunkList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{18} + return file_transcript_proto_rawDescGZIP(), []int{19} } func (x *TranscriptChunkList) GetChunks() []*Chunk { @@ -1964,7 +2031,7 @@ type ListChunkContributionsRequest struct { func (x *ListChunkContributionsRequest) Reset() { *x = ListChunkContributionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[19] + mi := &file_transcript_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1977,7 +2044,7 @@ func (x *ListChunkContributionsRequest) String() string { func (*ListChunkContributionsRequest) ProtoMessage() {} func (x *ListChunkContributionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[19] + mi := &file_transcript_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1990,7 +2057,7 @@ func (x *ListChunkContributionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListChunkContributionsRequest.ProtoReflect.Descriptor instead. func (*ListChunkContributionsRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{19} + return file_transcript_proto_rawDescGZIP(), []int{20} } func (x *ListChunkContributionsRequest) GetFilter() string { @@ -2039,7 +2106,7 @@ type ChunkContributionList struct { func (x *ChunkContributionList) Reset() { *x = ChunkContributionList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[20] + mi := &file_transcript_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2052,7 +2119,7 @@ func (x *ChunkContributionList) String() string { func (*ChunkContributionList) ProtoMessage() {} func (x *ChunkContributionList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[20] + mi := &file_transcript_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2065,7 +2132,7 @@ func (x *ChunkContributionList) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkContributionList.ProtoReflect.Descriptor instead. func (*ChunkContributionList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{20} + return file_transcript_proto_rawDescGZIP(), []int{21} } func (x *ChunkContributionList) GetContributions() []*ChunkContribution { @@ -2092,7 +2159,7 @@ type ChunkContribution struct { func (x *ChunkContribution) Reset() { *x = ChunkContribution{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[21] + mi := &file_transcript_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2105,7 +2172,7 @@ func (x *ChunkContribution) String() string { func (*ChunkContribution) ProtoMessage() {} func (x *ChunkContribution) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[21] + mi := &file_transcript_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2118,7 +2185,7 @@ func (x *ChunkContribution) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkContribution.ProtoReflect.Descriptor instead. func (*ChunkContribution) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{21} + return file_transcript_proto_rawDescGZIP(), []int{22} } func (x *ChunkContribution) GetId() string { @@ -2185,7 +2252,7 @@ type ShortChunkContribution struct { func (x *ShortChunkContribution) Reset() { *x = ShortChunkContribution{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[22] + mi := &file_transcript_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +2265,7 @@ func (x *ShortChunkContribution) String() string { func (*ShortChunkContribution) ProtoMessage() {} func (x *ShortChunkContribution) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[22] + mi := &file_transcript_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2278,7 @@ func (x *ShortChunkContribution) ProtoReflect() protoreflect.Message { // Deprecated: Use ShortChunkContribution.ProtoReflect.Descriptor instead. func (*ShortChunkContribution) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{22} + return file_transcript_proto_rawDescGZIP(), []int{23} } func (x *ShortChunkContribution) GetId() string { @@ -2260,7 +2327,7 @@ type ChunkChunkContributionList struct { func (x *ChunkChunkContributionList) Reset() { *x = ChunkChunkContributionList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[23] + mi := &file_transcript_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2273,7 +2340,7 @@ func (x *ChunkChunkContributionList) String() string { func (*ChunkChunkContributionList) ProtoMessage() {} func (x *ChunkChunkContributionList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[23] + mi := &file_transcript_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2286,7 +2353,7 @@ func (x *ChunkChunkContributionList) ProtoReflect() protoreflect.Message { // Deprecated: Use ChunkChunkContributionList.ProtoReflect.Descriptor instead. func (*ChunkChunkContributionList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{23} + return file_transcript_proto_rawDescGZIP(), []int{24} } func (x *ChunkChunkContributionList) GetContributions() []*ShortChunkContribution { @@ -2307,7 +2374,7 @@ type GetChunkContributionRequest struct { func (x *GetChunkContributionRequest) Reset() { *x = GetChunkContributionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[24] + mi := &file_transcript_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2320,7 +2387,7 @@ func (x *GetChunkContributionRequest) String() string { func (*GetChunkContributionRequest) ProtoMessage() {} func (x *GetChunkContributionRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[24] + mi := &file_transcript_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2333,7 +2400,7 @@ func (x *GetChunkContributionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChunkContributionRequest.ProtoReflect.Descriptor instead. func (*GetChunkContributionRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{24} + return file_transcript_proto_rawDescGZIP(), []int{25} } func (x *GetChunkContributionRequest) GetContributionId() string { @@ -2355,7 +2422,7 @@ type CreateChunkContributionRequest struct { func (x *CreateChunkContributionRequest) Reset() { *x = CreateChunkContributionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[25] + mi := &file_transcript_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2368,7 +2435,7 @@ func (x *CreateChunkContributionRequest) String() string { func (*CreateChunkContributionRequest) ProtoMessage() {} func (x *CreateChunkContributionRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[25] + mi := &file_transcript_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2381,7 +2448,7 @@ func (x *CreateChunkContributionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateChunkContributionRequest.ProtoReflect.Descriptor instead. func (*CreateChunkContributionRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{25} + return file_transcript_proto_rawDescGZIP(), []int{26} } func (x *CreateChunkContributionRequest) GetChunkId() string { @@ -2411,7 +2478,7 @@ type UpdateChunkContributionRequest struct { func (x *UpdateChunkContributionRequest) Reset() { *x = UpdateChunkContributionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[26] + mi := &file_transcript_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2424,7 +2491,7 @@ func (x *UpdateChunkContributionRequest) String() string { func (*UpdateChunkContributionRequest) ProtoMessage() {} func (x *UpdateChunkContributionRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[26] + mi := &file_transcript_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2437,7 +2504,7 @@ func (x *UpdateChunkContributionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateChunkContributionRequest.ProtoReflect.Descriptor instead. func (*UpdateChunkContributionRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{26} + return file_transcript_proto_rawDescGZIP(), []int{27} } func (x *UpdateChunkContributionRequest) GetContributionId() string { @@ -2472,7 +2539,7 @@ type DeleteChunkContributionRequest struct { func (x *DeleteChunkContributionRequest) Reset() { *x = DeleteChunkContributionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[27] + mi := &file_transcript_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2485,7 +2552,7 @@ func (x *DeleteChunkContributionRequest) String() string { func (*DeleteChunkContributionRequest) ProtoMessage() {} func (x *DeleteChunkContributionRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[27] + mi := &file_transcript_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2498,7 +2565,7 @@ func (x *DeleteChunkContributionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteChunkContributionRequest.ProtoReflect.Descriptor instead. func (*DeleteChunkContributionRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{27} + return file_transcript_proto_rawDescGZIP(), []int{28} } func (x *DeleteChunkContributionRequest) GetContributionId() string { @@ -2521,7 +2588,7 @@ type RequestChunkContributionStateRequest struct { func (x *RequestChunkContributionStateRequest) Reset() { *x = RequestChunkContributionStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[28] + mi := &file_transcript_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2534,7 +2601,7 @@ func (x *RequestChunkContributionStateRequest) String() string { func (*RequestChunkContributionStateRequest) ProtoMessage() {} func (x *RequestChunkContributionStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[28] + mi := &file_transcript_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2547,7 +2614,7 @@ func (x *RequestChunkContributionStateRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use RequestChunkContributionStateRequest.ProtoReflect.Descriptor instead. func (*RequestChunkContributionStateRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{28} + return file_transcript_proto_rawDescGZIP(), []int{29} } func (x *RequestChunkContributionStateRequest) GetContributionId() string { @@ -2585,7 +2652,7 @@ type CreateTranscriptChangeRequest struct { func (x *CreateTranscriptChangeRequest) Reset() { *x = CreateTranscriptChangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[29] + mi := &file_transcript_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2598,7 +2665,7 @@ func (x *CreateTranscriptChangeRequest) String() string { func (*CreateTranscriptChangeRequest) ProtoMessage() {} func (x *CreateTranscriptChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[29] + mi := &file_transcript_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2611,7 +2678,7 @@ func (x *CreateTranscriptChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTranscriptChangeRequest.ProtoReflect.Descriptor instead. func (*CreateTranscriptChangeRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{29} + return file_transcript_proto_rawDescGZIP(), []int{30} } func (x *CreateTranscriptChangeRequest) GetEpid() string { @@ -2657,7 +2724,7 @@ type ListTranscriptChangesRequest struct { func (x *ListTranscriptChangesRequest) Reset() { *x = ListTranscriptChangesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[30] + mi := &file_transcript_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2670,7 +2737,7 @@ func (x *ListTranscriptChangesRequest) String() string { func (*ListTranscriptChangesRequest) ProtoMessage() {} func (x *ListTranscriptChangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[30] + mi := &file_transcript_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2683,7 +2750,7 @@ func (x *ListTranscriptChangesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTranscriptChangesRequest.ProtoReflect.Descriptor instead. func (*ListTranscriptChangesRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{30} + return file_transcript_proto_rawDescGZIP(), []int{31} } func (x *ListTranscriptChangesRequest) GetFilter() string { @@ -2736,7 +2803,7 @@ type UpdateTranscriptChangeRequest struct { func (x *UpdateTranscriptChangeRequest) Reset() { *x = UpdateTranscriptChangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[31] + mi := &file_transcript_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2749,7 +2816,7 @@ func (x *UpdateTranscriptChangeRequest) String() string { func (*UpdateTranscriptChangeRequest) ProtoMessage() {} func (x *UpdateTranscriptChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[31] + mi := &file_transcript_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2762,7 +2829,7 @@ func (x *UpdateTranscriptChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTranscriptChangeRequest.ProtoReflect.Descriptor instead. func (*UpdateTranscriptChangeRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{31} + return file_transcript_proto_rawDescGZIP(), []int{32} } func (x *UpdateTranscriptChangeRequest) GetId() string { @@ -2811,7 +2878,7 @@ type DeleteTranscriptChangeRequest struct { func (x *DeleteTranscriptChangeRequest) Reset() { *x = DeleteTranscriptChangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[32] + mi := &file_transcript_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2824,7 +2891,7 @@ func (x *DeleteTranscriptChangeRequest) String() string { func (*DeleteTranscriptChangeRequest) ProtoMessage() {} func (x *DeleteTranscriptChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[32] + mi := &file_transcript_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2837,7 +2904,7 @@ func (x *DeleteTranscriptChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTranscriptChangeRequest.ProtoReflect.Descriptor instead. func (*DeleteTranscriptChangeRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{32} + return file_transcript_proto_rawDescGZIP(), []int{33} } func (x *DeleteTranscriptChangeRequest) GetId() string { @@ -2858,7 +2925,7 @@ type TranscriptChangeList struct { func (x *TranscriptChangeList) Reset() { *x = TranscriptChangeList{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[33] + mi := &file_transcript_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2871,7 +2938,7 @@ func (x *TranscriptChangeList) String() string { func (*TranscriptChangeList) ProtoMessage() {} func (x *TranscriptChangeList) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[33] + mi := &file_transcript_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2884,7 +2951,7 @@ func (x *TranscriptChangeList) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptChangeList.ProtoReflect.Descriptor instead. func (*TranscriptChangeList) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{33} + return file_transcript_proto_rawDescGZIP(), []int{34} } func (x *TranscriptChangeList) GetChanges() []*ShortTranscriptChange { @@ -2914,7 +2981,7 @@ type TranscriptChange struct { func (x *TranscriptChange) Reset() { *x = TranscriptChange{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[34] + mi := &file_transcript_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2927,7 +2994,7 @@ func (x *TranscriptChange) String() string { func (*TranscriptChange) ProtoMessage() {} func (x *TranscriptChange) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[34] + mi := &file_transcript_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2940,7 +3007,7 @@ func (x *TranscriptChange) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptChange.ProtoReflect.Descriptor instead. func (*TranscriptChange) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{34} + return file_transcript_proto_rawDescGZIP(), []int{35} } func (x *TranscriptChange) GetId() string { @@ -3031,7 +3098,7 @@ type ShortTranscriptChange struct { func (x *ShortTranscriptChange) Reset() { *x = ShortTranscriptChange{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[35] + mi := &file_transcript_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3044,7 +3111,7 @@ func (x *ShortTranscriptChange) String() string { func (*ShortTranscriptChange) ProtoMessage() {} func (x *ShortTranscriptChange) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[35] + mi := &file_transcript_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3057,7 +3124,7 @@ func (x *ShortTranscriptChange) ProtoReflect() protoreflect.Message { // Deprecated: Use ShortTranscriptChange.ProtoReflect.Descriptor instead. func (*ShortTranscriptChange) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{35} + return file_transcript_proto_rawDescGZIP(), []int{36} } func (x *ShortTranscriptChange) GetId() string { @@ -3129,7 +3196,7 @@ type RequestTranscriptChangeStateRequest struct { func (x *RequestTranscriptChangeStateRequest) Reset() { *x = RequestTranscriptChangeStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[36] + mi := &file_transcript_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3142,7 +3209,7 @@ func (x *RequestTranscriptChangeStateRequest) String() string { func (*RequestTranscriptChangeStateRequest) ProtoMessage() {} func (x *RequestTranscriptChangeStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[36] + mi := &file_transcript_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3155,7 +3222,7 @@ func (x *RequestTranscriptChangeStateRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use RequestTranscriptChangeStateRequest.ProtoReflect.Descriptor instead. func (*RequestTranscriptChangeStateRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{36} + return file_transcript_proto_rawDescGZIP(), []int{37} } func (x *RequestTranscriptChangeStateRequest) GetId() string { @@ -3190,7 +3257,7 @@ type GetTranscriptChangeRequest struct { func (x *GetTranscriptChangeRequest) Reset() { *x = GetTranscriptChangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[37] + mi := &file_transcript_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3203,7 +3270,7 @@ func (x *GetTranscriptChangeRequest) String() string { func (*GetTranscriptChangeRequest) ProtoMessage() {} func (x *GetTranscriptChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[37] + mi := &file_transcript_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3216,7 +3283,7 @@ func (x *GetTranscriptChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTranscriptChangeRequest.ProtoReflect.Descriptor instead. func (*GetTranscriptChangeRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{37} + return file_transcript_proto_rawDescGZIP(), []int{38} } func (x *GetTranscriptChangeRequest) GetId() string { @@ -3237,7 +3304,7 @@ type GetTranscriptChangeDiffRequest struct { func (x *GetTranscriptChangeDiffRequest) Reset() { *x = GetTranscriptChangeDiffRequest{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[38] + mi := &file_transcript_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3250,7 +3317,7 @@ func (x *GetTranscriptChangeDiffRequest) String() string { func (*GetTranscriptChangeDiffRequest) ProtoMessage() {} func (x *GetTranscriptChangeDiffRequest) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[38] + mi := &file_transcript_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3263,7 +3330,7 @@ func (x *GetTranscriptChangeDiffRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTranscriptChangeDiffRequest.ProtoReflect.Descriptor instead. func (*GetTranscriptChangeDiffRequest) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{38} + return file_transcript_proto_rawDescGZIP(), []int{39} } func (x *GetTranscriptChangeDiffRequest) GetId() string { @@ -3284,7 +3351,7 @@ type TranscriptChangeDiff struct { func (x *TranscriptChangeDiff) Reset() { *x = TranscriptChangeDiff{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[39] + mi := &file_transcript_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3297,7 +3364,7 @@ func (x *TranscriptChangeDiff) String() string { func (*TranscriptChangeDiff) ProtoMessage() {} func (x *TranscriptChangeDiff) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[39] + mi := &file_transcript_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3310,7 +3377,7 @@ func (x *TranscriptChangeDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptChangeDiff.ProtoReflect.Descriptor instead. func (*TranscriptChangeDiff) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{39} + return file_transcript_proto_rawDescGZIP(), []int{40} } func (x *TranscriptChangeDiff) GetDiffs() []string { @@ -3325,14 +3392,15 @@ type TranscriptDialog struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TranscriptMeta *ShortTranscript `protobuf:"bytes,1,opt,name=transcript_meta,json=transcriptMeta,proto3" json:"transcript_meta,omitempty"` - Dialog []*Dialog `protobuf:"bytes,2,rep,name=dialog,proto3" json:"dialog,omitempty"` + TranscriptMeta *ShortTranscript `protobuf:"bytes,1,opt,name=transcript_meta,json=transcriptMeta,proto3" json:"transcript_meta,omitempty"` + Dialog []*Dialog `protobuf:"bytes,2,rep,name=dialog,proto3" json:"dialog,omitempty"` + MaxDialogPosition int32 `protobuf:"varint,3,opt,name=max_dialog_position,json=maxDialogPosition,proto3" json:"max_dialog_position,omitempty"` } func (x *TranscriptDialog) Reset() { *x = TranscriptDialog{} if protoimpl.UnsafeEnabled { - mi := &file_transcript_proto_msgTypes[40] + mi := &file_transcript_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3345,7 +3413,7 @@ func (x *TranscriptDialog) String() string { func (*TranscriptDialog) ProtoMessage() {} func (x *TranscriptDialog) ProtoReflect() protoreflect.Message { - mi := &file_transcript_proto_msgTypes[40] + mi := &file_transcript_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3358,7 +3426,7 @@ func (x *TranscriptDialog) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptDialog.ProtoReflect.Descriptor instead. func (*TranscriptDialog) Descriptor() ([]byte, []int) { - return file_transcript_proto_rawDescGZIP(), []int{40} + return file_transcript_proto_rawDescGZIP(), []int{41} } func (x *TranscriptDialog) GetTranscriptMeta() *ShortTranscript { @@ -3375,6 +3443,13 @@ func (x *TranscriptDialog) GetDialog() []*Dialog { return nil } +func (x *TranscriptDialog) GetMaxDialogPosition() int32 { + if x != nil { + return x.MaxDialogPosition + } + return 0 +} + var File_transcript_proto protoreflect.FileDescriptor var file_transcript_proto_rawDesc = []byte{ @@ -3569,612 +3644,621 @@ var file_transcript_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x70, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x69, 0x74, 0x68, - 0x52, 0x61, 0x77, 0x22, 0x6e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x65, 0x70, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4c, 0x69, - 0x6e, 0x65, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, 0x0a, - 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x30, 0x0a, 0x08, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x08, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, - 0x73, 0x22, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x22, 0xa0, 0x05, 0x0a, 0x16, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, - 0x64, 0x0a, 0x13, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, - 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x12, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, - 0x22, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6e, 0x75, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x6e, 0x75, - 0x6d, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, - 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x5f, - 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6e, 0x75, - 0x6d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x57, 0x0a, 0x17, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, - 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x15, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, - 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x65, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x78, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, - 0x2b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x97, 0x02, 0x0a, - 0x05, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, - 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, - 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x28, 0x0a, 0x0e, - 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x43, - 0x6c, 0x69, 0x70, 0x55, 0x72, 0x69, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, - 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x39, 0x0a, 0x13, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x22, 0x0a, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x06, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, - 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x55, 0x0a, 0x15, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, - 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, - 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfb, 0x01, 0x0a, - 0x11, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x52, 0x61, 0x77, 0x22, 0x35, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x70, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x03, 0x70, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x03, + 0x70, 0x6f, 0x73, 0x12, 0x2e, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4c, 0x69, + 0x6e, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x65, 0x70, 0x69, 0x73, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x73, 0x6b, 0x2e, + 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x08, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x75, + 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0xa0, 0x05, 0x0a, 0x16, 0x43, 0x68, 0x75, + 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x63, 0x68, 0x75, 0x6e, 0x6b, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x63, 0x68, 0x75, 0x6e, 0x6b, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, + 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6e, 0x75, 0x6d, + 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x75, + 0x6d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x22, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x1f, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3c, 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x1a, 0x57, 0x0a, 0x17, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x15, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x0a, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, + 0x6d, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x6e, + 0x75, 0x6d, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, + 0x12, 0x35, 0x0a, 0x17, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x78, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x97, 0x02, 0x0a, 0x05, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, + 0x0a, 0x15, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x72, 0x61, 0x77, 0x12, 0x28, 0x0a, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x6c, + 0x69, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6c, 0x69, 0x70, 0x55, 0x72, 0x69, 0x12, 0x2b, + 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, + 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x1e, + 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x22, 0xe0, + 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x15, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x72, + 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x22, 0x39, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x22, 0xae, 0x01, 0x0a, + 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x55, 0x0a, + 0x15, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, + 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, + 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x04, + 0x10, 0x05, 0x22, 0xb3, 0x01, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5f, 0x0a, 0x1a, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x46, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x5b, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x97, + 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x49, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, + 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, + 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x65, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x70, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xad, 0x01, 0x0a, 0x1c, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, + 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x1d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, + 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x6e, + 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x22, 0x2f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x4c, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x73, + 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x22, 0xe1, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x70, 0x69, 0x73, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x06, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, + 0x73, 0x6b, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0d, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, + 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, + 0x08, 0x05, 0x10, 0x06, 0x22, 0xa6, 0x02, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xb3, 0x01, 0x0a, 0x16, 0x53, - 0x68, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, - 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x22, 0x5f, 0x0a, 0x1a, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x41, - 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, - 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x46, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x49, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x24, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, - 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x70, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x70, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x22, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, - 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, + 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0d, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x2d, + 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x01, + 0x0a, 0x23, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x6e, - 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x2f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4c, 0x0a, 0x14, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xe1, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x72, 0x67, - 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, - 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x64, - 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xa6, 0x02, 0x0a, - 0x15, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x70, 0x69, 0x73, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x23, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, - 0x73, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x6e, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x22, 0x2c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x64, 0x69, 0x66, 0x66, 0x73, 0x22, 0x76, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3d, 0x0a, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x06, 0x64, 0x69, 0x61, 0x6c, - 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x44, - 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x06, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x2a, 0x7f, 0x0a, - 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, - 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, - 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x4a, - 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x19, - 0x0a, 0x15, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, - 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, 0x4f, 0x44, 0x10, 0x03, 0x2a, 0x44, 0x0a, 0x09, 0x4d, 0x65, - 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x44, 0x49, 0x41, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, - 0x44, 0x45, 0x4f, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x10, 0x03, - 0x2a, 0xba, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x1c, - 0x0a, 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, - 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x55, 0x42, 0x4c, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x56, 0x10, - 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x05, 0x32, 0xd6, 0x20, - 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xa2, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x19, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x0f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x22, 0x65, 0x92, 0x41, 0x44, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2b, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x2a, 0x0d, 0x67, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, - 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x2f, 0x7b, 0x65, 0x70, 0x69, 0x64, 0x7d, 0x12, 0xc6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x12, 0x1f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x77, 0x92, 0x41, 0x49, 0x0a, 0x06, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x73, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x20, 0x62, 0x79, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x2a, 0x13, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x7b, 0x65, - 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x2f, 0x7b, 0x70, 0x6f, 0x73, - 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x55, 0x92, 0x41, 0x3b, 0x0a, 0x06, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x12, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x6c, 0x69, 0x73, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x70, - 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x2a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0xd5, - 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x1a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x86, 0x01, - 0x92, 0x41, 0x64, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x42, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x2e, 0x2a, - 0x16, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x12, 0xd0, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, - 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x0f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x22, 0x84, 0x01, 0x92, 0x41, 0x55, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x12, 0x2b, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, - 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x2a, 0x1e, 0x67, - 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x73, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0xeb, 0x01, 0x0a, 0x14, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, - 0x6b, 0x73, 0x12, 0x20, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x96, - 0x01, 0x92, 0x41, 0x55, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x35, 0x4c, 0x69, - 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x65, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, - 0x49, 0x44, 0x2e, 0x2a, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, - 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x7b, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, - 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x1e, + 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x4f, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x22, + 0x2c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x30, 0x0a, + 0x1e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x2c, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x22, 0xa6, 0x01, + 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x12, 0x3d, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x73, + 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x12, 0x23, 0x0a, 0x06, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x06, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x7f, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, + 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x4a, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x4a, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, + 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x55, 0x44, 0x49, 0x4f, + 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, 0x4f, + 0x44, 0x10, 0x03, 0x2a, 0x44, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, + 0x4f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x02, 0x12, 0x09, + 0x0a, 0x05, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x10, 0x03, 0x2a, 0xba, 0x01, 0x0a, 0x0f, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, + 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, + 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x52, 0x41, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x44, 0x43, + 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x10, + 0x03, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x56, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x55, + 0x42, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, + 0x54, 0x48, 0x45, 0x52, 0x10, 0x05, 0x32, 0xd6, 0x20, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa2, 0x01, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x19, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, - 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x7c, 0x92, 0x41, 0x4f, 0x0a, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x31, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x2a, 0x12, 0x67, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x7b, 0x92, 0x41, 0x45, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x12, 0x23, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x2a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x65, 0x92, 0x41, 0x44, 0x0a, + 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x61, + 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x2a, 0x0d, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x7b, 0x65, 0x70, 0x69, 0x64, + 0x7d, 0x12, 0xc6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x1f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, + 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x22, 0x77, 0x92, 0x41, 0x49, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6c, + 0x69, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x20, 0x62, 0x79, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2a, 0x13, 0x67, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x7b, 0x65, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x2f, 0x7b, 0x70, 0x6f, 0x73, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x0f, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x1b, + 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x73, + 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0x55, 0x92, 0x41, 0x3b, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x20, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x2a, + 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x72, 0x73, 0x6b, + 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x86, 0x01, 0x92, 0x41, 0x64, 0x0a, 0x06, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x12, 0x42, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x65, + 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, + 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x2e, 0x2a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, + 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x12, + 0xd0, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0f, 0x2e, 0x72, 0x73, 0x6b, + 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x84, 0x01, 0x92, 0x41, + 0x55, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2b, 0x47, 0x65, 0x74, 0x20, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x20, 0x62, + 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x2a, 0x1e, 0x67, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2f, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2d, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x12, 0xeb, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x20, 0x2e, 0x72, 0x73, + 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, + 0x75, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x96, 0x01, 0x92, 0x41, 0x55, 0x0a, 0x06, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x35, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x20, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x49, 0x44, 0x2e, 0x2a, 0x14, 0x6c, 0x69, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, + 0x64, 0x2f, 0x7b, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, + 0x12, 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x1e, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, + 0x75, 0x6e, 0x6b, 0x22, 0x7c, 0x92, 0x41, 0x4f, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x31, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x68, 0x75, + 0x6e, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x2e, 0x2a, 0x12, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x72, + 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x7b, 0x92, 0x41, + 0x45, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x23, 0x6c, 0x69, 0x73, 0x74, 0x73, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x2a, 0x16, + 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, + 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x17, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, + 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x90, 0x01, 0x92, 0x41, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x2a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x29, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2e, 0x2a, 0x17, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, + 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x7b, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xe6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, + 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x92, 0x41, 0x4c, 0x0a, 0x06, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2c, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6e, + 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x2a, 0x14, 0x67, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, + 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xf0, + 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x72, 0x73, 0x6b, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, 0x01, 0x92, 0x41, 0x4d, 0x0a, 0x06, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x6e, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x2a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, + 0x3a, 0x01, 0x2a, 0x32, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0xe9, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x72, - 0x73, 0x6b, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x90, 0x01, 0x92, 0x41, 0x4d, 0x0a, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x20, - 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x28, 0x6f, 0x72, 0x20, - 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x29, 0x20, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x2e, 0x2a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x7b, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xe6, 0x01, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, + 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xd7, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7f, 0x92, 0x41, 0x38, 0x0a, + 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x15, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2a, 0x17, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x88, 0x02, 0x0a, 0x1d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x93, 0x01, 0x92, 0x41, 0x4c, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2c, 0x6c, - 0x69, 0x73, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2a, 0x14, 0x67, 0x65, 0x74, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, - 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xf0, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, - 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x97, - 0x01, 0x92, 0x41, 0x4d, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, - 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x2a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x32, 0x3c, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd7, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x7f, 0x92, 0x41, 0x38, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x15, - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2a, 0x17, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, - 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x88, 0x02, 0x0a, 0x1d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, - 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, 0x01, 0x92, 0x41, 0x53, 0x0a, 0x06, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x2e, 0x2a, 0x1d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, 0x32, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, - 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0xbf, 0x01, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x73, 0x6b, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x68, 0x92, 0x41, 0x47, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x12, 0x26, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6e, 0x65, - 0x77, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2e, 0x2a, 0x15, 0x6c, 0x69, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0xb1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, - 0x62, 0x92, 0x41, 0x3c, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1d, 0x47, 0x65, - 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x13, 0x67, 0x65, 0x74, + 0x22, 0xa3, 0x01, 0x92, 0x41, 0x53, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x62, + 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2e, 0x2a, 0x1d, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, + 0x01, 0x2a, 0x32, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x2f, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0xbf, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x21, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x68, + 0x92, 0x41, 0x47, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x26, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x2e, 0x2a, 0x15, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, + 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, - 0x23, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x22, - 0x68, 0x92, 0x41, 0x3d, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1a, 0x47, 0x65, - 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x17, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, - 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x12, 0xc8, 0x01, 0x0a, 0x16, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, - 0x73, 0x92, 0x41, 0x48, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x26, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x2e, 0x2a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x7b, 0x65, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x22, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x66, 0x92, 0x41, 0x3d, 0x0a, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x12, 0x1f, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x62, 0x92, 0x41, 0x3c, 0x0a, 0x06, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1d, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x13, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, + 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc3, 0x01, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x23, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x22, 0x68, 0x92, 0x41, 0x3d, 0x0a, 0x06, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, + 0x69, 0x66, 0x66, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x2e, 0x2a, 0x17, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x69, 0x66, 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, + 0x66, 0x66, 0x12, 0xc8, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, - 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x73, 0x6b, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x59, 0x92, 0x41, 0x33, 0x0a, 0x06, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, - 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xdf, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7d, 0x92, 0x41, 0x4e, 0x0a, 0x06, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x12, 0x26, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x20, 0x62, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2e, 0x2a, 0x1c, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, - 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0xa2, 0x01, 0x92, 0x41, 0x71, 0x12, 0x05, 0x32, 0x03, - 0x31, 0x2e, 0x30, 0x2a, 0x01, 0x01, 0x72, 0x65, 0x0a, 0x4c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x68, 0x61, 0x73, - 0x20, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x76, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x73, 0x2e, 0x12, 0x15, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, - 0x73, 0x63, 0x72, 0x69, 0x6d, 0x70, 0x74, 0x6f, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x5a, 0x2c, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x77, 0x61, 0x72, 0x6d, 0x61, 0x6e, - 0x73, 0x2f, 0x72, 0x73, 0x6b, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x73, 0x92, 0x41, 0x48, 0x0a, 0x06, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x26, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x61, + 0x20, 0x6e, 0x65, 0x77, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, + 0x61, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2e, 0x2a, 0x16, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, + 0x7b, 0x65, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xbb, 0x01, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, + 0x73, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x22, 0x66, 0x92, 0x41, 0x3d, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x12, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x2a, 0x16, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x16, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x59, 0x92, 0x41, 0x33, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, + 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x2e, 0x2a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x2a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xdf, 0x01, + 0x0a, 0x1c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, + 0x2e, 0x72, 0x73, 0x6b, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x7d, 0x92, 0x41, 0x4e, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x26, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x2e, 0x2a, 0x1c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, + 0xa2, 0x01, 0x92, 0x41, 0x71, 0x12, 0x05, 0x32, 0x03, 0x31, 0x2e, 0x30, 0x2a, 0x01, 0x01, 0x72, + 0x65, 0x0a, 0x4c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x76, + 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2e, 0x12, + 0x15, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x70, 0x74, + 0x6f, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x77, 0x61, 0x72, 0x6d, 0x61, 0x6e, 0x73, 0x2f, 0x72, 0x73, 0x6b, 0x2d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4190,7 +4274,7 @@ func file_transcript_proto_rawDescGZIP() []byte { } var file_transcript_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_transcript_proto_msgTypes = make([]protoimpl.MessageInfo, 45) +var file_transcript_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_transcript_proto_goTypes = []interface{}{ (ContributionState)(0), // 0: rsk.ContributionState (AudioQuality)(0), // 1: rsk.AudioQuality @@ -4205,48 +4289,49 @@ var file_transcript_proto_goTypes = []interface{}{ (*Trivia)(nil), // 10: rsk.Trivia (*Tag)(nil), // 11: rsk.Tag (*GetTranscriptRequest)(nil), // 12: rsk.GetTranscriptRequest - (*GetTranscriptDialogRequest)(nil), // 13: rsk.GetTranscriptDialogRequest - (*ListTranscriptsRequest)(nil), // 14: rsk.ListTranscriptsRequest - (*TranscriptList)(nil), // 15: rsk.TranscriptList - (*ChunkStates)(nil), // 16: rsk.ChunkStates - (*ChunkedTranscriptStats)(nil), // 17: rsk.ChunkedTranscriptStats - (*ChunkedTranscriptList)(nil), // 18: rsk.ChunkedTranscriptList - (*ChunkStats)(nil), // 19: rsk.ChunkStats - (*GetTranscriptChunkRequest)(nil), // 20: rsk.GetTranscriptChunkRequest - (*Chunk)(nil), // 21: rsk.Chunk - (*ListTranscriptChunksRequest)(nil), // 22: rsk.ListTranscriptChunksRequest - (*TranscriptChunkList)(nil), // 23: rsk.TranscriptChunkList - (*ListChunkContributionsRequest)(nil), // 24: rsk.ListChunkContributionsRequest - (*ChunkContributionList)(nil), // 25: rsk.ChunkContributionList - (*ChunkContribution)(nil), // 26: rsk.ChunkContribution - (*ShortChunkContribution)(nil), // 27: rsk.ShortChunkContribution - (*ChunkChunkContributionList)(nil), // 28: rsk.ChunkChunkContributionList - (*GetChunkContributionRequest)(nil), // 29: rsk.GetChunkContributionRequest - (*CreateChunkContributionRequest)(nil), // 30: rsk.CreateChunkContributionRequest - (*UpdateChunkContributionRequest)(nil), // 31: rsk.UpdateChunkContributionRequest - (*DeleteChunkContributionRequest)(nil), // 32: rsk.DeleteChunkContributionRequest - (*RequestChunkContributionStateRequest)(nil), // 33: rsk.RequestChunkContributionStateRequest - (*CreateTranscriptChangeRequest)(nil), // 34: rsk.CreateTranscriptChangeRequest - (*ListTranscriptChangesRequest)(nil), // 35: rsk.ListTranscriptChangesRequest - (*UpdateTranscriptChangeRequest)(nil), // 36: rsk.UpdateTranscriptChangeRequest - (*DeleteTranscriptChangeRequest)(nil), // 37: rsk.DeleteTranscriptChangeRequest - (*TranscriptChangeList)(nil), // 38: rsk.TranscriptChangeList - (*TranscriptChange)(nil), // 39: rsk.TranscriptChange - (*ShortTranscriptChange)(nil), // 40: rsk.ShortTranscriptChange - (*RequestTranscriptChangeStateRequest)(nil), // 41: rsk.RequestTranscriptChangeStateRequest - (*GetTranscriptChangeRequest)(nil), // 42: rsk.GetTranscriptChangeRequest - (*GetTranscriptChangeDiffRequest)(nil), // 43: rsk.GetTranscriptChangeDiffRequest - (*TranscriptChangeDiff)(nil), // 44: rsk.TranscriptChangeDiff - (*TranscriptDialog)(nil), // 45: rsk.TranscriptDialog - nil, // 46: rsk.Transcript.MetadataEntry - nil, // 47: rsk.ShortTranscript.MetadataEntry - nil, // 48: rsk.Dialog.MetadataEntry - nil, // 49: rsk.ChunkedTranscriptStats.ChunkContributionsEntry - (*Author)(nil), // 50: rsk.Author - (*emptypb.Empty)(nil), // 51: google.protobuf.Empty + (*DialogRange)(nil), // 13: rsk.DialogRange + (*GetTranscriptDialogRequest)(nil), // 14: rsk.GetTranscriptDialogRequest + (*ListTranscriptsRequest)(nil), // 15: rsk.ListTranscriptsRequest + (*TranscriptList)(nil), // 16: rsk.TranscriptList + (*ChunkStates)(nil), // 17: rsk.ChunkStates + (*ChunkedTranscriptStats)(nil), // 18: rsk.ChunkedTranscriptStats + (*ChunkedTranscriptList)(nil), // 19: rsk.ChunkedTranscriptList + (*ChunkStats)(nil), // 20: rsk.ChunkStats + (*GetTranscriptChunkRequest)(nil), // 21: rsk.GetTranscriptChunkRequest + (*Chunk)(nil), // 22: rsk.Chunk + (*ListTranscriptChunksRequest)(nil), // 23: rsk.ListTranscriptChunksRequest + (*TranscriptChunkList)(nil), // 24: rsk.TranscriptChunkList + (*ListChunkContributionsRequest)(nil), // 25: rsk.ListChunkContributionsRequest + (*ChunkContributionList)(nil), // 26: rsk.ChunkContributionList + (*ChunkContribution)(nil), // 27: rsk.ChunkContribution + (*ShortChunkContribution)(nil), // 28: rsk.ShortChunkContribution + (*ChunkChunkContributionList)(nil), // 29: rsk.ChunkChunkContributionList + (*GetChunkContributionRequest)(nil), // 30: rsk.GetChunkContributionRequest + (*CreateChunkContributionRequest)(nil), // 31: rsk.CreateChunkContributionRequest + (*UpdateChunkContributionRequest)(nil), // 32: rsk.UpdateChunkContributionRequest + (*DeleteChunkContributionRequest)(nil), // 33: rsk.DeleteChunkContributionRequest + (*RequestChunkContributionStateRequest)(nil), // 34: rsk.RequestChunkContributionStateRequest + (*CreateTranscriptChangeRequest)(nil), // 35: rsk.CreateTranscriptChangeRequest + (*ListTranscriptChangesRequest)(nil), // 36: rsk.ListTranscriptChangesRequest + (*UpdateTranscriptChangeRequest)(nil), // 37: rsk.UpdateTranscriptChangeRequest + (*DeleteTranscriptChangeRequest)(nil), // 38: rsk.DeleteTranscriptChangeRequest + (*TranscriptChangeList)(nil), // 39: rsk.TranscriptChangeList + (*TranscriptChange)(nil), // 40: rsk.TranscriptChange + (*ShortTranscriptChange)(nil), // 41: rsk.ShortTranscriptChange + (*RequestTranscriptChangeStateRequest)(nil), // 42: rsk.RequestTranscriptChangeStateRequest + (*GetTranscriptChangeRequest)(nil), // 43: rsk.GetTranscriptChangeRequest + (*GetTranscriptChangeDiffRequest)(nil), // 44: rsk.GetTranscriptChangeDiffRequest + (*TranscriptChangeDiff)(nil), // 45: rsk.TranscriptChangeDiff + (*TranscriptDialog)(nil), // 46: rsk.TranscriptDialog + nil, // 47: rsk.Transcript.MetadataEntry + nil, // 48: rsk.ShortTranscript.MetadataEntry + nil, // 49: rsk.Dialog.MetadataEntry + nil, // 50: rsk.ChunkedTranscriptStats.ChunkContributionsEntry + (*Author)(nil), // 51: rsk.Author + (*emptypb.Empty)(nil), // 52: google.protobuf.Empty } var file_transcript_proto_depIdxs = []int32{ - 46, // 0: rsk.Transcript.metadata:type_name -> rsk.Transcript.MetadataEntry + 47, // 0: rsk.Transcript.metadata:type_name -> rsk.Transcript.MetadataEntry 8, // 1: rsk.Transcript.transcript:type_name -> rsk.Dialog 9, // 2: rsk.Transcript.synopses:type_name -> rsk.Synopsis 10, // 3: rsk.Transcript.trivia:type_name -> rsk.Trivia @@ -4255,80 +4340,81 @@ var file_transcript_proto_depIdxs = []int32{ 6, // 6: rsk.Transcript.media:type_name -> rsk.Media 3, // 7: rsk.Transcript.publication_type:type_name -> rsk.PublicationType 9, // 8: rsk.ShortTranscript.synopsis:type_name -> rsk.Synopsis - 47, // 9: rsk.ShortTranscript.metadata:type_name -> rsk.ShortTranscript.MetadataEntry + 48, // 9: rsk.ShortTranscript.metadata:type_name -> rsk.ShortTranscript.MetadataEntry 1, // 10: rsk.ShortTranscript.audio_quality:type_name -> rsk.AudioQuality 2, // 11: rsk.ShortTranscript.media_type:type_name -> rsk.MediaType 6, // 12: rsk.ShortTranscript.media:type_name -> rsk.Media 3, // 13: rsk.ShortTranscript.publication_type:type_name -> rsk.PublicationType 4, // 14: rsk.Dialog.type:type_name -> rsk.Dialog.DialogType - 48, // 15: rsk.Dialog.metadata:type_name -> rsk.Dialog.MetadataEntry - 7, // 16: rsk.TranscriptList.episodes:type_name -> rsk.ShortTranscript - 0, // 17: rsk.ChunkStates.states:type_name -> rsk.ContributionState - 49, // 18: rsk.ChunkedTranscriptStats.chunk_contributions:type_name -> rsk.ChunkedTranscriptStats.ChunkContributionsEntry - 17, // 19: rsk.ChunkedTranscriptList.chunked:type_name -> rsk.ChunkedTranscriptStats - 21, // 20: rsk.TranscriptChunkList.chunks:type_name -> rsk.Chunk - 26, // 21: rsk.ChunkContributionList.contributions:type_name -> rsk.ChunkContribution - 0, // 22: rsk.ChunkContribution.state:type_name -> rsk.ContributionState - 50, // 23: rsk.ChunkContribution.author:type_name -> rsk.Author - 0, // 24: rsk.ShortChunkContribution.state:type_name -> rsk.ContributionState - 27, // 25: rsk.ChunkChunkContributionList.contributions:type_name -> rsk.ShortChunkContribution - 0, // 26: rsk.UpdateChunkContributionRequest.state:type_name -> rsk.ContributionState - 0, // 27: rsk.RequestChunkContributionStateRequest.request_state:type_name -> rsk.ContributionState - 0, // 28: rsk.UpdateTranscriptChangeRequest.state:type_name -> rsk.ContributionState - 40, // 29: rsk.TranscriptChangeList.changes:type_name -> rsk.ShortTranscriptChange - 0, // 30: rsk.TranscriptChange.state:type_name -> rsk.ContributionState - 50, // 31: rsk.TranscriptChange.author:type_name -> rsk.Author - 0, // 32: rsk.ShortTranscriptChange.state:type_name -> rsk.ContributionState - 50, // 33: rsk.ShortTranscriptChange.author:type_name -> rsk.Author - 0, // 34: rsk.RequestTranscriptChangeStateRequest.state:type_name -> rsk.ContributionState - 7, // 35: rsk.TranscriptDialog.transcript_meta:type_name -> rsk.ShortTranscript - 8, // 36: rsk.TranscriptDialog.dialog:type_name -> rsk.Dialog - 16, // 37: rsk.ChunkedTranscriptStats.ChunkContributionsEntry.value:type_name -> rsk.ChunkStates - 12, // 38: rsk.TranscriptService.GetTranscript:input_type -> rsk.GetTranscriptRequest - 13, // 39: rsk.TranscriptService.GetTranscriptDialog:input_type -> rsk.GetTranscriptDialogRequest - 14, // 40: rsk.TranscriptService.ListTranscripts:input_type -> rsk.ListTranscriptsRequest - 51, // 41: rsk.TranscriptService.ListChunkedTranscripts:input_type -> google.protobuf.Empty - 51, // 42: rsk.TranscriptService.GetChunkedTranscriptChunkStats:input_type -> google.protobuf.Empty - 22, // 43: rsk.TranscriptService.ListTranscriptChunks:input_type -> rsk.ListTranscriptChunksRequest - 20, // 44: rsk.TranscriptService.GetTranscriptChunk:input_type -> rsk.GetTranscriptChunkRequest - 24, // 45: rsk.TranscriptService.ListChunkContributions:input_type -> rsk.ListChunkContributionsRequest - 30, // 46: rsk.TranscriptService.CreateChunkContribution:input_type -> rsk.CreateChunkContributionRequest - 29, // 47: rsk.TranscriptService.GetChunkContribution:input_type -> rsk.GetChunkContributionRequest - 31, // 48: rsk.TranscriptService.UpdateChunkContribution:input_type -> rsk.UpdateChunkContributionRequest - 32, // 49: rsk.TranscriptService.DeleteChunkContribution:input_type -> rsk.DeleteChunkContributionRequest - 33, // 50: rsk.TranscriptService.RequestChunkContributionState:input_type -> rsk.RequestChunkContributionStateRequest - 35, // 51: rsk.TranscriptService.ListTranscriptChanges:input_type -> rsk.ListTranscriptChangesRequest - 42, // 52: rsk.TranscriptService.GetTranscriptChange:input_type -> rsk.GetTranscriptChangeRequest - 43, // 53: rsk.TranscriptService.GetTranscriptChangeDiff:input_type -> rsk.GetTranscriptChangeDiffRequest - 34, // 54: rsk.TranscriptService.CreateTranscriptChange:input_type -> rsk.CreateTranscriptChangeRequest - 36, // 55: rsk.TranscriptService.UpdateTranscriptChange:input_type -> rsk.UpdateTranscriptChangeRequest - 37, // 56: rsk.TranscriptService.DeleteTranscriptChange:input_type -> rsk.DeleteTranscriptChangeRequest - 41, // 57: rsk.TranscriptService.RequestTranscriptChangeState:input_type -> rsk.RequestTranscriptChangeStateRequest - 5, // 58: rsk.TranscriptService.GetTranscript:output_type -> rsk.Transcript - 45, // 59: rsk.TranscriptService.GetTranscriptDialog:output_type -> rsk.TranscriptDialog - 15, // 60: rsk.TranscriptService.ListTranscripts:output_type -> rsk.TranscriptList - 18, // 61: rsk.TranscriptService.ListChunkedTranscripts:output_type -> rsk.ChunkedTranscriptList - 19, // 62: rsk.TranscriptService.GetChunkedTranscriptChunkStats:output_type -> rsk.ChunkStats - 23, // 63: rsk.TranscriptService.ListTranscriptChunks:output_type -> rsk.TranscriptChunkList - 21, // 64: rsk.TranscriptService.GetTranscriptChunk:output_type -> rsk.Chunk - 25, // 65: rsk.TranscriptService.ListChunkContributions:output_type -> rsk.ChunkContributionList - 26, // 66: rsk.TranscriptService.CreateChunkContribution:output_type -> rsk.ChunkContribution - 26, // 67: rsk.TranscriptService.GetChunkContribution:output_type -> rsk.ChunkContribution - 26, // 68: rsk.TranscriptService.UpdateChunkContribution:output_type -> rsk.ChunkContribution - 51, // 69: rsk.TranscriptService.DeleteChunkContribution:output_type -> google.protobuf.Empty - 26, // 70: rsk.TranscriptService.RequestChunkContributionState:output_type -> rsk.ChunkContribution - 38, // 71: rsk.TranscriptService.ListTranscriptChanges:output_type -> rsk.TranscriptChangeList - 39, // 72: rsk.TranscriptService.GetTranscriptChange:output_type -> rsk.TranscriptChange - 44, // 73: rsk.TranscriptService.GetTranscriptChangeDiff:output_type -> rsk.TranscriptChangeDiff - 39, // 74: rsk.TranscriptService.CreateTranscriptChange:output_type -> rsk.TranscriptChange - 39, // 75: rsk.TranscriptService.UpdateTranscriptChange:output_type -> rsk.TranscriptChange - 51, // 76: rsk.TranscriptService.DeleteTranscriptChange:output_type -> google.protobuf.Empty - 51, // 77: rsk.TranscriptService.RequestTranscriptChangeState:output_type -> google.protobuf.Empty - 58, // [58:78] is the sub-list for method output_type - 38, // [38:58] is the sub-list for method input_type - 38, // [38:38] is the sub-list for extension type_name - 38, // [38:38] is the sub-list for extension extendee - 0, // [0:38] is the sub-list for field type_name + 49, // 15: rsk.Dialog.metadata:type_name -> rsk.Dialog.MetadataEntry + 13, // 16: rsk.GetTranscriptDialogRequest.range:type_name -> rsk.DialogRange + 7, // 17: rsk.TranscriptList.episodes:type_name -> rsk.ShortTranscript + 0, // 18: rsk.ChunkStates.states:type_name -> rsk.ContributionState + 50, // 19: rsk.ChunkedTranscriptStats.chunk_contributions:type_name -> rsk.ChunkedTranscriptStats.ChunkContributionsEntry + 18, // 20: rsk.ChunkedTranscriptList.chunked:type_name -> rsk.ChunkedTranscriptStats + 22, // 21: rsk.TranscriptChunkList.chunks:type_name -> rsk.Chunk + 27, // 22: rsk.ChunkContributionList.contributions:type_name -> rsk.ChunkContribution + 0, // 23: rsk.ChunkContribution.state:type_name -> rsk.ContributionState + 51, // 24: rsk.ChunkContribution.author:type_name -> rsk.Author + 0, // 25: rsk.ShortChunkContribution.state:type_name -> rsk.ContributionState + 28, // 26: rsk.ChunkChunkContributionList.contributions:type_name -> rsk.ShortChunkContribution + 0, // 27: rsk.UpdateChunkContributionRequest.state:type_name -> rsk.ContributionState + 0, // 28: rsk.RequestChunkContributionStateRequest.request_state:type_name -> rsk.ContributionState + 0, // 29: rsk.UpdateTranscriptChangeRequest.state:type_name -> rsk.ContributionState + 41, // 30: rsk.TranscriptChangeList.changes:type_name -> rsk.ShortTranscriptChange + 0, // 31: rsk.TranscriptChange.state:type_name -> rsk.ContributionState + 51, // 32: rsk.TranscriptChange.author:type_name -> rsk.Author + 0, // 33: rsk.ShortTranscriptChange.state:type_name -> rsk.ContributionState + 51, // 34: rsk.ShortTranscriptChange.author:type_name -> rsk.Author + 0, // 35: rsk.RequestTranscriptChangeStateRequest.state:type_name -> rsk.ContributionState + 7, // 36: rsk.TranscriptDialog.transcript_meta:type_name -> rsk.ShortTranscript + 8, // 37: rsk.TranscriptDialog.dialog:type_name -> rsk.Dialog + 17, // 38: rsk.ChunkedTranscriptStats.ChunkContributionsEntry.value:type_name -> rsk.ChunkStates + 12, // 39: rsk.TranscriptService.GetTranscript:input_type -> rsk.GetTranscriptRequest + 14, // 40: rsk.TranscriptService.GetTranscriptDialog:input_type -> rsk.GetTranscriptDialogRequest + 15, // 41: rsk.TranscriptService.ListTranscripts:input_type -> rsk.ListTranscriptsRequest + 52, // 42: rsk.TranscriptService.ListChunkedTranscripts:input_type -> google.protobuf.Empty + 52, // 43: rsk.TranscriptService.GetChunkedTranscriptChunkStats:input_type -> google.protobuf.Empty + 23, // 44: rsk.TranscriptService.ListTranscriptChunks:input_type -> rsk.ListTranscriptChunksRequest + 21, // 45: rsk.TranscriptService.GetTranscriptChunk:input_type -> rsk.GetTranscriptChunkRequest + 25, // 46: rsk.TranscriptService.ListChunkContributions:input_type -> rsk.ListChunkContributionsRequest + 31, // 47: rsk.TranscriptService.CreateChunkContribution:input_type -> rsk.CreateChunkContributionRequest + 30, // 48: rsk.TranscriptService.GetChunkContribution:input_type -> rsk.GetChunkContributionRequest + 32, // 49: rsk.TranscriptService.UpdateChunkContribution:input_type -> rsk.UpdateChunkContributionRequest + 33, // 50: rsk.TranscriptService.DeleteChunkContribution:input_type -> rsk.DeleteChunkContributionRequest + 34, // 51: rsk.TranscriptService.RequestChunkContributionState:input_type -> rsk.RequestChunkContributionStateRequest + 36, // 52: rsk.TranscriptService.ListTranscriptChanges:input_type -> rsk.ListTranscriptChangesRequest + 43, // 53: rsk.TranscriptService.GetTranscriptChange:input_type -> rsk.GetTranscriptChangeRequest + 44, // 54: rsk.TranscriptService.GetTranscriptChangeDiff:input_type -> rsk.GetTranscriptChangeDiffRequest + 35, // 55: rsk.TranscriptService.CreateTranscriptChange:input_type -> rsk.CreateTranscriptChangeRequest + 37, // 56: rsk.TranscriptService.UpdateTranscriptChange:input_type -> rsk.UpdateTranscriptChangeRequest + 38, // 57: rsk.TranscriptService.DeleteTranscriptChange:input_type -> rsk.DeleteTranscriptChangeRequest + 42, // 58: rsk.TranscriptService.RequestTranscriptChangeState:input_type -> rsk.RequestTranscriptChangeStateRequest + 5, // 59: rsk.TranscriptService.GetTranscript:output_type -> rsk.Transcript + 46, // 60: rsk.TranscriptService.GetTranscriptDialog:output_type -> rsk.TranscriptDialog + 16, // 61: rsk.TranscriptService.ListTranscripts:output_type -> rsk.TranscriptList + 19, // 62: rsk.TranscriptService.ListChunkedTranscripts:output_type -> rsk.ChunkedTranscriptList + 20, // 63: rsk.TranscriptService.GetChunkedTranscriptChunkStats:output_type -> rsk.ChunkStats + 24, // 64: rsk.TranscriptService.ListTranscriptChunks:output_type -> rsk.TranscriptChunkList + 22, // 65: rsk.TranscriptService.GetTranscriptChunk:output_type -> rsk.Chunk + 26, // 66: rsk.TranscriptService.ListChunkContributions:output_type -> rsk.ChunkContributionList + 27, // 67: rsk.TranscriptService.CreateChunkContribution:output_type -> rsk.ChunkContribution + 27, // 68: rsk.TranscriptService.GetChunkContribution:output_type -> rsk.ChunkContribution + 27, // 69: rsk.TranscriptService.UpdateChunkContribution:output_type -> rsk.ChunkContribution + 52, // 70: rsk.TranscriptService.DeleteChunkContribution:output_type -> google.protobuf.Empty + 27, // 71: rsk.TranscriptService.RequestChunkContributionState:output_type -> rsk.ChunkContribution + 39, // 72: rsk.TranscriptService.ListTranscriptChanges:output_type -> rsk.TranscriptChangeList + 40, // 73: rsk.TranscriptService.GetTranscriptChange:output_type -> rsk.TranscriptChange + 45, // 74: rsk.TranscriptService.GetTranscriptChangeDiff:output_type -> rsk.TranscriptChangeDiff + 40, // 75: rsk.TranscriptService.CreateTranscriptChange:output_type -> rsk.TranscriptChange + 40, // 76: rsk.TranscriptService.UpdateTranscriptChange:output_type -> rsk.TranscriptChange + 52, // 77: rsk.TranscriptService.DeleteTranscriptChange:output_type -> google.protobuf.Empty + 52, // 78: rsk.TranscriptService.RequestTranscriptChangeState:output_type -> google.protobuf.Empty + 59, // [59:79] is the sub-list for method output_type + 39, // [39:59] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_transcript_proto_init() } @@ -4435,7 +4521,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTranscriptDialogRequest); i { + switch v := v.(*DialogRange); i { case 0: return &v.state case 1: @@ -4447,7 +4533,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTranscriptsRequest); i { + switch v := v.(*GetTranscriptDialogRequest); i { case 0: return &v.state case 1: @@ -4459,7 +4545,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TranscriptList); i { + switch v := v.(*ListTranscriptsRequest); i { case 0: return &v.state case 1: @@ -4471,7 +4557,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkStates); i { + switch v := v.(*TranscriptList); i { case 0: return &v.state case 1: @@ -4483,7 +4569,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkedTranscriptStats); i { + switch v := v.(*ChunkStates); i { case 0: return &v.state case 1: @@ -4495,7 +4581,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkedTranscriptList); i { + switch v := v.(*ChunkedTranscriptStats); i { case 0: return &v.state case 1: @@ -4507,7 +4593,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkStats); i { + switch v := v.(*ChunkedTranscriptList); i { case 0: return &v.state case 1: @@ -4519,7 +4605,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTranscriptChunkRequest); i { + switch v := v.(*ChunkStats); i { case 0: return &v.state case 1: @@ -4531,7 +4617,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Chunk); i { + switch v := v.(*GetTranscriptChunkRequest); i { case 0: return &v.state case 1: @@ -4543,7 +4629,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTranscriptChunksRequest); i { + switch v := v.(*Chunk); i { case 0: return &v.state case 1: @@ -4555,7 +4641,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TranscriptChunkList); i { + switch v := v.(*ListTranscriptChunksRequest); i { case 0: return &v.state case 1: @@ -4567,7 +4653,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListChunkContributionsRequest); i { + switch v := v.(*TranscriptChunkList); i { case 0: return &v.state case 1: @@ -4579,7 +4665,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkContributionList); i { + switch v := v.(*ListChunkContributionsRequest); i { case 0: return &v.state case 1: @@ -4591,7 +4677,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkContribution); i { + switch v := v.(*ChunkContributionList); i { case 0: return &v.state case 1: @@ -4603,7 +4689,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShortChunkContribution); i { + switch v := v.(*ChunkContribution); i { case 0: return &v.state case 1: @@ -4615,7 +4701,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChunkChunkContributionList); i { + switch v := v.(*ShortChunkContribution); i { case 0: return &v.state case 1: @@ -4627,7 +4713,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChunkContributionRequest); i { + switch v := v.(*ChunkChunkContributionList); i { case 0: return &v.state case 1: @@ -4639,7 +4725,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateChunkContributionRequest); i { + switch v := v.(*GetChunkContributionRequest); i { case 0: return &v.state case 1: @@ -4651,7 +4737,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateChunkContributionRequest); i { + switch v := v.(*CreateChunkContributionRequest); i { case 0: return &v.state case 1: @@ -4663,7 +4749,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteChunkContributionRequest); i { + switch v := v.(*UpdateChunkContributionRequest); i { case 0: return &v.state case 1: @@ -4675,7 +4761,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestChunkContributionStateRequest); i { + switch v := v.(*DeleteChunkContributionRequest); i { case 0: return &v.state case 1: @@ -4687,7 +4773,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTranscriptChangeRequest); i { + switch v := v.(*RequestChunkContributionStateRequest); i { case 0: return &v.state case 1: @@ -4699,7 +4785,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTranscriptChangesRequest); i { + switch v := v.(*CreateTranscriptChangeRequest); i { case 0: return &v.state case 1: @@ -4711,7 +4797,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTranscriptChangeRequest); i { + switch v := v.(*ListTranscriptChangesRequest); i { case 0: return &v.state case 1: @@ -4723,7 +4809,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTranscriptChangeRequest); i { + switch v := v.(*UpdateTranscriptChangeRequest); i { case 0: return &v.state case 1: @@ -4735,7 +4821,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TranscriptChangeList); i { + switch v := v.(*DeleteTranscriptChangeRequest); i { case 0: return &v.state case 1: @@ -4747,7 +4833,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TranscriptChange); i { + switch v := v.(*TranscriptChangeList); i { case 0: return &v.state case 1: @@ -4759,7 +4845,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShortTranscriptChange); i { + switch v := v.(*TranscriptChange); i { case 0: return &v.state case 1: @@ -4771,7 +4857,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestTranscriptChangeStateRequest); i { + switch v := v.(*ShortTranscriptChange); i { case 0: return &v.state case 1: @@ -4783,7 +4869,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTranscriptChangeRequest); i { + switch v := v.(*RequestTranscriptChangeStateRequest); i { case 0: return &v.state case 1: @@ -4795,7 +4881,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTranscriptChangeDiffRequest); i { + switch v := v.(*GetTranscriptChangeRequest); i { case 0: return &v.state case 1: @@ -4807,7 +4893,7 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TranscriptChangeDiff); i { + switch v := v.(*GetTranscriptChangeDiffRequest); i { case 0: return &v.state case 1: @@ -4819,6 +4905,18 @@ func file_transcript_proto_init() { } } file_transcript_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TranscriptChangeDiff); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transcript_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TranscriptDialog); i { case 0: return &v.state @@ -4837,7 +4935,7 @@ func file_transcript_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_transcript_proto_rawDesc, NumEnums: 5, - NumMessages: 45, + NumMessages: 46, NumExtensions: 0, NumServices: 1, }, diff --git a/server/pkg/discord/bot.go b/server/pkg/discord/bot.go index d28e6a02..fb714217 100644 --- a/server/pkg/discord/bot.go +++ b/server/pkg/discord/bot.go @@ -31,21 +31,21 @@ func withModifier(mod ContentModifier) customIDOpt { } } -func withNumContextLines(num int) customIDOpt { +func withStartLine(pos int32) customIDOpt { return func(c *CustomID) { - c.NumContextLines = num + c.StartLine = pos } } - -func withPosition(pos int) customIDOpt { +func withEndLine(pos int32) customIDOpt { return func(c *CustomID) { - c.Position = pos + c.EndLine = pos } } type CustomID struct { EpisodeID string `json:"e,omitempty"` - Position int `json:"p,omitempty"` + StartLine int32 `json:"s,omitempty"` + EndLine int32 `json:"f,omitempty"` NumContextLines int `json:"c,omitempty"` ContentModifier ContentModifier `json:"t,omitempty"` } @@ -63,7 +63,8 @@ func (c CustomID) String() string { func (c CustomID) withOption(options ...customIDOpt) CustomID { clone := &CustomID{ EpisodeID: c.EpisodeID, - Position: c.Position, + StartLine: c.StartLine, + EndLine: c.EndLine, NumContextLines: c.NumContextLines, ContentModifier: c.ContentModifier, } @@ -265,7 +266,8 @@ func (b *Bot) queryBegin(s *discordgo.Session, i *discordgo.InteractionCreate) { Name: util.TrimToN(fmt.Sprintf("%s: %s", v.Actor, v.Line), 100), Value: (&CustomID{ EpisodeID: v.Epid, - Position: int(v.Pos), + StartLine: v.Pos, + EndLine: v.Pos, NumContextLines: defaultContext, ContentModifier: ContentModifierTextOnly, }).String(), @@ -299,14 +301,14 @@ func (b *Bot) updatePreview( username = i.Member.DisplayName() } - interactionResponse, err, cleanup := b.audioFileResponse(customID, username) + interactionResponse, maxDialogOffset, err, cleanup := b.audioFileResponse(customID, username) if err != nil { b.respondError(s, i, err) return } defer cleanup() - interactionResponse.Data.Components = b.buttons(customID) + interactionResponse.Data.Components = b.buttons(customID, maxDialogOffset) interactionResponse.Data.Flags = discordgo.MessageFlagsEphemeral if err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ @@ -328,7 +330,7 @@ func (b *Bot) beginAudioResponse( username = i.Member.DisplayName() } - interactionResponse, err, cleanup := b.audioFileResponse(customID, username) + interactionResponse, maxDialogOffset, err, cleanup := b.audioFileResponse(customID, username) if err != nil { b.respondError(s, i, err) return err @@ -336,7 +338,7 @@ func (b *Bot) beginAudioResponse( defer cleanup() interactionResponse.Data.Flags = discordgo.MessageFlagsEphemeral - interactionResponse.Data.Components = b.buttons(customID) + interactionResponse.Data.Components = b.buttons(customID, maxDialogOffset) err = s.InteractionRespond(i.Interaction, interactionResponse) if err != nil { b.logger.Error("failed to respond", zap.Error(err)) @@ -344,7 +346,7 @@ func (b *Bot) beginAudioResponse( return nil } -func (b *Bot) buttons(customID CustomID) []discordgo.MessageComponent { +func (b *Bot) buttons(customID CustomID, maxDialogOffset int32) []discordgo.MessageComponent { audioButton := discordgo.Button{ // Label is what the user will see on the button. @@ -365,70 +367,143 @@ func (b *Bot) buttons(customID CustomID) []discordgo.MessageComponent { audioButton.CustomID = encodeCustomIDForAction("up", customID.withOption(withModifier(ContentModifierTextOnly))) } - editRow := []discordgo.MessageComponent{audioButton} - if customID.NumContextLines < 10 { - editRow = append(editRow, discordgo.Button{ + editRow1 := []discordgo.MessageComponent{} + if customID.StartLine > 0 { + editRow1 = append(editRow1, discordgo.Button{ // Label is what the user will see on the button. - Label: "More Context", + Label: "Shift Dialog Backwards", Emoji: &discordgo.ComponentEmoji{ - Name: "➕", + Name: "⏪", }, // Style provides coloring of the button. There are not so many styles tho. Style: discordgo.SecondaryButton, // CustomID is a thing telling Discord which data to send when this button will be pressed. - CustomID: encodeCustomIDForAction("up", customID.withOption(withNumContextLines(customID.NumContextLines+1))), + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withStartLine(customID.StartLine-1), + withEndLine(customID.EndLine-1), + ), + ), }) } - if customID.NumContextLines > 0 { - editRow = append(editRow, discordgo.Button{ + if customID.StartLine+1 < maxDialogOffset { + editRow1 = append(editRow1, discordgo.Button{ // Label is what the user will see on the button. - Label: "Less Context", + Label: "Shift Dialog Forward", Emoji: &discordgo.ComponentEmoji{ - Name: "➖", + Name: "⏩", }, // Style provides coloring of the button. There are not so many styles tho. Style: discordgo.SecondaryButton, // CustomID is a thing telling Discord which data to send when this button will be pressed. - CustomID: encodeCustomIDForAction("up", customID.withOption(withNumContextLines(max(0, customID.NumContextLines-1)))), + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withStartLine(customID.StartLine+1), + withEndLine(min(maxDialogOffset, customID.EndLine+1)), + ), + ), }) } + if customID.EndLine-customID.EndLine < 25 { + if customID.StartLine > 0 { + editRow1 = append(editRow1, discordgo.Button{ + // Label is what the user will see on the button. + Label: "Add Leading Dialog", + Emoji: &discordgo.ComponentEmoji{ + Name: "➕", + }, + // Style provides coloring of the button. There are not so many styles tho. + Style: discordgo.SecondaryButton, + // CustomID is a thing telling Discord which data to send when this button will be pressed. + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withStartLine(customID.StartLine-1), + ), + ), + }) + } + if customID.EndLine+1 < maxDialogOffset { + editRow1 = append(editRow1, discordgo.Button{ + // Label is what the user will see on the button. + Label: "Add Following Dialog", + Emoji: &discordgo.ComponentEmoji{ + Name: "➕", + }, + // Style provides coloring of the button. There are not so many styles tho. + Style: discordgo.SecondaryButton, + // CustomID is a thing telling Discord which data to send when this button will be pressed. + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withEndLine(customID.EndLine+1), + ), + ), + }) + } + } - editRow = append(editRow, discordgo.Button{ - // Label is what the user will see on the button. - Label: "Previous Line", - Emoji: &discordgo.ComponentEmoji{ - Name: "⏪", - }, - // Style provides coloring of the button. There are not so many styles tho. - Style: discordgo.SecondaryButton, - // CustomID is a thing telling Discord which data to send when this button will be pressed. - CustomID: encodeCustomIDForAction("up", customID.withOption(withPosition(customID.Position-1))), - }, discordgo.Button{ - // Label is what the user will see on the button. - Label: "Next Line", - Emoji: &discordgo.ComponentEmoji{ - Name: "⏩", - }, - // Style provides coloring of the button. There are not so many styles tho. - Style: discordgo.SecondaryButton, - // CustomID is a thing telling Discord which data to send when this button will be pressed. - CustomID: encodeCustomIDForAction("up", customID.withOption(withPosition(customID.Position+1))), - }) + editRow2 := []discordgo.MessageComponent{} + if customID.EndLine-customID.StartLine > 0 { + editRow2 = append(editRow2, discordgo.Button{ + // Label is what the user will see on the button. + Label: "Trim Leading Dialog", + Emoji: &discordgo.ComponentEmoji{ + Name: "✂", + }, + // Style provides coloring of the button. There are not so many styles tho. + Style: discordgo.SecondaryButton, + // CustomID is a thing telling Discord which data to send when this button will be pressed. + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withStartLine(customID.StartLine+1), + ), + ), + }) + editRow2 = append(editRow2, discordgo.Button{ + // Label is what the user will see on the button. + Label: "Trim Trailing Dialog", + Emoji: &discordgo.ComponentEmoji{ + Name: "✂", + }, + // Style provides coloring of the button. There are not so many styles tho. + Style: discordgo.SecondaryButton, + // CustomID is a thing telling Discord which data to send when this button will be pressed. + CustomID: encodeCustomIDForAction( + "up", + customID.withOption( + withEndLine(customID.EndLine-1), + ), + ), + }) + } - return []discordgo.MessageComponent{ - discordgo.ActionsRow{ - Components: editRow, - }, - discordgo.ActionsRow{ - Components: []discordgo.MessageComponent{ - discordgo.Button{ - Label: "Post", - Style: discordgo.SuccessButton, - CustomID: encodeCustomIDForAction("cfm", customID), - }, + buttons := []discordgo.MessageComponent{} + if len(editRow1) > 0 { + buttons = append(buttons, discordgo.ActionsRow{ + Components: editRow1, + }) + } + if len(editRow2) > 0 { + buttons = append(buttons, discordgo.ActionsRow{ + Components: editRow2, + }) + } + buttons = append(buttons, discordgo.ActionsRow{ + Components: []discordgo.MessageComponent{ + discordgo.Button{ + Label: "Post", + Style: discordgo.SuccessButton, + CustomID: encodeCustomIDForAction("cfm", customID), }, + audioButton, }, - } + }) + + return buttons } func (b *Bot) queryComplete(s *discordgo.Session, i *discordgo.InteractionCreate, customIDPayload string) { @@ -453,7 +528,7 @@ func (b *Bot) queryComplete(s *discordgo.Session, i *discordgo.InteractionCreate } // respond audio - interactionResponse, err, cleanup := b.audioFileResponse(customID, username) + interactionResponse, _, err, cleanup := b.audioFileResponse(customID, username) defer cleanup() if err != nil { b.respondError(s, i, err) @@ -465,20 +540,21 @@ func (b *Bot) queryComplete(s *discordgo.Session, i *discordgo.InteractionCreate return } -func (b *Bot) audioFileResponse(customID CustomID, username string) (*discordgo.InteractionResponse, error, func()) { +func (b *Bot) audioFileResponse(customID CustomID, username string) (*discordgo.InteractionResponse, int32, error, func()) { dialog, err := b.transcriptApiClient.GetTranscriptDialog(context.Background(), &api.GetTranscriptDialogRequest{ - Epid: customID.EpisodeID, - Pos: int32(customID.Position), - NumContextLines: int32(customID.NumContextLines), + Epid: customID.EpisodeID, + Range: &api.DialogRange{ + Start: customID.StartLine, + End: customID.EndLine, + }, }) if err != nil { - return nil, fmt.Errorf("failed to fetch selected line"), func() {} + return nil, 0, fmt.Errorf("failed to fetch selected line"), func() {} } dialogFormatted := strings.Builder{} - var matchedDialogRow *api.Dialog - for k, d := range dialog.Dialog { + for _, d := range dialog.Dialog { switch d.Type { case api.Dialog_CHAT: if d.Actor == "" { @@ -495,29 +571,29 @@ func (b *Bot) audioFileResponse(customID CustomID, username string) (*discordgo. case api.Dialog_SONG: dialogFormatted.WriteString(fmt.Sprintf("\n> **SONG:** %s", d.Content)) } - if d.IsMatchedRow { - matchedDialogRow = dialog.Dialog[k] - } - } - if matchedDialogRow == nil { - return nil, fmt.Errorf("no line was matched"), func() {} } var files []*discordgo.File cancelFunc := func() {} if customID.ContentModifier != ContentModifierTextOnly { - audioFileURL := fmt.Sprintf("%s/dl/media/%s.mp3?pos=%d", b.webUrl, dialog.TranscriptMeta.ShortId, matchedDialogRow.Pos) + audioFileURL := fmt.Sprintf( + "%s/dl/media/%s.mp3?ts=%d-%d", + b.webUrl, + dialog.TranscriptMeta.ShortId, + dialog.Dialog[0].OffsetMs, + dialog.Dialog[len(dialog.Dialog)-1].OffsetMs+dialog.Dialog[len(dialog.Dialog)-1].DurationMs, + ) resp, err := http.Get(audioFileURL) if err != nil { - return nil, fmt.Errorf("failed to fetch selected line"), func() {} + return nil, 0, fmt.Errorf("failed to fetch selected line"), func() {} } if resp.StatusCode != http.StatusOK { b.logger.Error("failed to fetch audio", zap.Error(err), zap.String("url", audioFileURL), zap.Int("status_code", resp.StatusCode)) - return nil, fmt.Errorf("failed to fetch audio: %s", resp.Status), func() {} + return nil, 0, fmt.Errorf("failed to fetch audio: %s", resp.Status), func() {} } files = append(files, &discordgo.File{ - Name: createFileName(dialog, matchedDialogRow, "mp3"), + Name: createFileName(dialog, "mp3"), ContentType: "audio/mpeg", Reader: resp.Body, }) @@ -531,11 +607,12 @@ func (b *Bot) audioFileResponse(customID CustomID, username string) (*discordgo. "%s\n\n %s", dialogFormatted.String(), fmt.Sprintf( - "`%s` @ `%s` | [%s](%s) | Posted by %s", + "`%s` @ `%s - %s` | [%s](%s) | Posted by %s", dialog.TranscriptMeta.Id, - (time.Millisecond*time.Duration(matchedDialogRow.OffsetMs)).String(), + (time.Duration(dialog.Dialog[0].OffsetMs)).String(), + (time.Duration(dialog.Dialog[len(dialog.Dialog)-1].OffsetMs+dialog.Dialog[len(dialog.Dialog)-1].DurationMs)).String(), strings.TrimPrefix(b.webUrl, "https://"), - fmt.Sprintf("%s/ep/%s#pos-%d", b.webUrl, customID.EpisodeID, customID.Position), + fmt.Sprintf("%s/ep/%s#pos-%d-%d", b.webUrl, customID.EpisodeID, customID.StartLine, customID.EndLine), username, ), ) @@ -549,7 +626,7 @@ func (b *Bot) audioFileResponse(customID CustomID, username string) (*discordgo. Files: files, Attachments: util.ToPtr([]*discordgo.MessageAttachment{}), }, - }, nil, cancelFunc + }, dialog.MaxDialogPosition, nil, cancelFunc } func (b *Bot) respondError(s *discordgo.Session, i *discordgo.InteractionCreate, err error) { @@ -576,11 +653,11 @@ func decodeCustomIDPayload(data string) (CustomID, error) { return *decoded, json.Unmarshal([]byte(data), decoded) } -func createFileName(dialog *api.TranscriptDialog, matchedDialogRow *api.Dialog, suffix string) string { - if contentFilename := contentToFilename(matchedDialogRow.Content); contentFilename != "" { +func createFileName(dialog *api.TranscriptDialog, suffix string) string { + if contentFilename := contentToFilename(dialog.Dialog[0].Content); contentFilename != "" { return fmt.Sprintf("%s.%s", contentFilename, suffix) } - return fmt.Sprintf("%s-%d.%s", dialog.TranscriptMeta.Id, matchedDialogRow.Pos, suffix) + return fmt.Sprintf("%s-%d.%s", dialog.TranscriptMeta.Id, dialog.Dialog[0].Pos, suffix) } func contentToFilename(rawContent string) string { diff --git a/server/proto/transcript.proto b/server/proto/transcript.proto index f312c931..5fccaf48 100644 --- a/server/proto/transcript.proto +++ b/server/proto/transcript.proto @@ -404,10 +404,16 @@ message GetTranscriptRequest { bool with_raw = 2; } +message DialogRange { + int32 start = 1; + int32 end = 2; +} + message GetTranscriptDialogRequest { string epid = 1; - int32 pos = 2; - int32 num_context_lines = 3; + int32 pos = 2 [deprecated = true]; + int32 num_context_lines = 3 [deprecated = true]; + DialogRange range = 4; } message ListTranscriptsRequest { @@ -620,4 +626,5 @@ message TranscriptChangeDiff { message TranscriptDialog { ShortTranscript transcript_meta = 1; repeated Dialog dialog = 2; + int32 max_dialog_position = 3; } \ No newline at end of file diff --git a/server/service/grpc/transcript.go b/server/service/grpc/transcript.go index e9cf083a..634220b0 100644 --- a/server/service/grpc/transcript.go +++ b/server/service/grpc/transcript.go @@ -90,20 +90,33 @@ func (s *TranscriptService) GetTranscriptDialog(ctx context.Context, request *ap return nil, ErrNotFound(request.Epid) } dialog := []*api.Dialog{} - for _, d := range ep.Transcript { - if d.Position >= int64(request.Pos-request.NumContextLines) && d.Position <= int64(request.Pos+request.NumContextLines) { - dialog = append(dialog, d.Proto(request.Pos == int32(d.Position))) + if request.Pos > 0 { + for _, d := range ep.Transcript { + if d.Position >= int64(request.Pos-request.NumContextLines) && d.Position <= int64(request.Pos+request.NumContextLines) { + dialog = append(dialog, d.Proto(request.Pos == int32(d.Position))) + } + if d.Position > int64(request.Pos+request.NumContextLines) { + break + } } - if d.Position > int64(request.Pos+request.NumContextLines) { - break + } else { + for _, d := range ep.Transcript { + if d.Position >= int64(request.Range.Start) && d.Position <= int64(request.Range.End) { + dialog = append(dialog, d.Proto(false)) + } + if d.Position >= int64(request.Range.End) { + break + } } } + if len(dialog) == 0 { return nil, ErrNotFound(request.Epid) } return &api.TranscriptDialog{ - TranscriptMeta: ep.ShortProto(fmt.Sprintf(s.srvCfg.AudioUriPattern, ep.ShortID())), - Dialog: dialog, + TranscriptMeta: ep.ShortProto(fmt.Sprintf(s.srvCfg.AudioUriPattern, ep.ShortID())), + Dialog: dialog, + MaxDialogPosition: int32(ep.Transcript[len(ep.Transcript)-1].Position), }, nil }