Repository: google/trillian
Pull request #2422 (2021-03-22 16:30:52)

Remove the unused GetSequencedLeafCount API.
Part of #2245.

codecov[bot]: # [Codecov](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=h1) Report
> Merging [#2422](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=desc) (6348d4f) into [master](https://codecov.io/gh/google/trillian/commit/63ecab22c037dc2d29ff70be736cb4265d84b64f?el=desc) (63ecab2) will **decrease** coverage by `0.03%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/google/trillian/pull/2422/graphs/tree.svg?width=650&height=150&src=pr&token=QwofUwmvAs)](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #2422      +/-   ##
==========================================
- Coverage   65.32%   65.28%   -0.04%     
==========================================
  Files         104      104              
  Lines        7475     7458      -17     
==========================================
- Hits         4883     4869      -14     
+ Misses       2073     2070       -3     
  Partials      519      519              
```


| [Impacted Files](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [server/interceptor/interceptor.go](https://codecov.io/gh/google/trillian/pull/2422/diff?src=pr&el=tree#diff-c2VydmVyL2ludGVyY2VwdG9yL2ludGVyY2VwdG9yLmdv) | `83.91% <ø> (+0.83%)` | :arrow_up: |
| [server/log\_rpc\_server.go](https://codecov.io/gh/google/trillian/pull/2422/diff?src=pr&el=tree#diff-c2VydmVyL2xvZ19ycGNfc2VydmVyLmdv) | `82.29% <ø> (-0.67%)` | :arrow_down: |
| [client/log\_client.go](https://codecov.io/gh/google/trillian/pull/2422/diff?src=pr&el=tree#diff-Y2xpZW50L2xvZ19jbGllbnQuZ28=) | `71.51% <0.00%> (-0.59%)` | :arrow_down: |
| [log/operation\_manager.go](https://codecov.io/gh/google/trillian/pull/2422/diff?src=pr&el=tree#diff-bG9nL29wZXJhdGlvbl9tYW5hZ2VyLmdv) | `88.35% <0.00%> (+1.05%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=footer). Last update [63ecab2...6348d4f](https://codecov.io/gh/google/trillian/pull/2422?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/docs/api.md b/docs/api.md
index 492325a4..b6ee6c8f 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -23,8 +23,6 @@
     - [GetLeavesByIndexResponse](#trillian.GetLeavesByIndexResponse)
     - [GetLeavesByRangeRequest](#trillian.GetLeavesByRangeRequest)
     - [GetLeavesByRangeResponse](#trillian.GetLeavesByRangeResponse)
-    - [GetSequencedLeafCountRequest](#trillian.GetSequencedLeafCountRequest)
-    - [GetSequencedLeafCountResponse](#trillian.GetSequencedLeafCountResponse)
     - [InitLogRequest](#trillian.InitLogRequest)
     - [InitLogResponse](#trillian.InitLogResponse)
     - [LogLeaf](#trillian.LogLeaf)
@@ -388,40 +386,6 @@ As an example, a Certificate Transparency frontend might set the following user
 
 
 
-<a name="trillian.GetSequencedLeafCountRequest"></a>
-
-### GetSequencedLeafCountRequest
-DO NOT USE - FOR DEBUGGING/TEST ONLY
-
-(Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-use the tree size field within.)
-
-
-| Field | Type | Label | Description |
-| ----- | ---- | ----- | ----------- |
-| log_id | [int64](#int64) |  |  |
-| charge_to | [ChargeTo](#trillian.ChargeTo) |  |  |
-
-
-
-
-
-
-<a name="trillian.GetSequencedLeafCountResponse"></a>
-
-### GetSequencedLeafCountResponse
-
-
-
-| Field | Type | Label | Description |
-| ----- | ---- | ----- | ----------- |
-| leaf_count | [int64](#int64) |  |  |
-
-
-
-
-
-
 <a name="trillian.InitLogRequest"></a>
 
 ### InitLogRequest
@@ -625,11 +589,6 @@ If the requested tree size is larger than the server is aware of, the response w
 | GetLatestSignedLogRoot | [GetLatestSignedLogRootRequest](#trillian.GetLatestSignedLogRootRequest) | [GetLatestSignedLogRootResponse](#trillian.GetLatestSignedLogRootResponse) | GetLatestSignedLogRoot returns the latest signed log root for a given tree, and optionally also includes a consistency proof from an earlier tree size to the new size of the tree.
 
 If the earlier tree size is larger than the server is aware of, an InvalidArgument error is returned. |
-| GetSequencedLeafCount | [GetSequencedLeafCountRequest](#trillian.GetSequencedLeafCountRequest) | [GetSequencedLeafCountResponse](#trillian.GetSequencedLeafCountResponse) | GetSequencedLeafCount returns the total number of leaves that have been integrated into the given tree.
-
-DO NOT USE - FOR DEBUGGING/TEST ONLY
-
-(Use GetLatestSignedLogRoot then de-serialize the Log Root and use use the tree size field within.) |
 | GetEntryAndProof | [GetEntryAndProofRequest](#trillian.GetEntryAndProofRequest) | [GetEntryAndProofResponse](#trillian.GetEntryAndProofResponse) | GetEntryAndProof returns a log leaf and the corresponding inclusion proof to a specified tree size, for a given leaf index in a particular tree.
 
 If the requested tree size is unavailable but the leaf is in scope for the current tree, the returned proof will be for the current tree size rather than the requested tree size. |
diff --git a/server/interceptor/interceptor.go b/server/interceptor/interceptor.go
index ece9ba91..c5572a00 100644
--- a/server/interceptor/interceptor.go
+++ b/server/interceptor/interceptor.go
@@ -397,9 +397,6 @@ func newRPCInfoForRequest(req interface{}) (*rpcInfo, error) {
 		if c := req.GetCount(); c > 1 {
 			info.tokens = int(c)
 		}
-	case *trillian.GetSequencedLeafCountRequest:
-		info.treeTypes = []trillian.TreeType{trillian.TreeType_LOG, trillian.TreeType_PREORDERED_LOG}
-
 	// Log / readwrite
 	case *trillian.QueueLeafRequest:
 		info.readonly = false
diff --git a/server/log_rpc_server.go b/server/log_rpc_server.go
index 990c9ecd..8bc6d8b6 100644
--- a/server/log_rpc_server.go
+++ b/server/log_rpc_server.go
@@ -463,33 +463,6 @@ func tryGetConsistencyProof(ctx context.Context, firstTreeSize, secondTreeSize,
 	return proof, nil
 }
 
-// GetSequencedLeafCount returns the number of leaves that have been integrated into the Merkle
-// Tree. This can be zero for a log containing no entries.
-func (t *TrillianLogRPCServer) GetSequencedLeafCount(ctx context.Context, req *trillian.GetSequencedLeafCountRequest) (*trillian.GetSequencedLeafCountResponse, error) {
-	ctx, spanEnd := spanFor(ctx, "GetSequencedLeafCount")
-	defer spanEnd()
-	tree, ctx, err := t.getTreeAndContext(ctx, req.LogId, optsLogRead)
-	if err != nil {
-		return nil, err
-	}
-	tx, err := t.snapshotForTree(ctx, tree, "GetSequencedLeafCount")
-	if err != nil {
-		return nil, err
-	}
-	defer t.closeAndLog(ctx, tree.TreeId, tx, "GetSequencedLeafCount")
-
-	leafCount, err := tx.GetSequencedLeafCount(ctx)
-	if err != nil {
-		return nil, err
-	}
-
-	if err := t.commitAndLog(ctx, req.LogId, tx, "GetSequencedLeafCount"); err != nil {
-		return nil, err
-	}
-
-	return &trillian.GetSequencedLeafCountResponse{LeafCount: leafCount}, nil
-}
-
 // GetLeavesByIndex obtains one or more leaves based on their sequence number within the
 // tree. It is not possible to fetch leaves that have been queued but not yet integrated.
 // TODO: Validate indices against published tree size in case we implement write sharding that
diff --git a/trillian_log_api.pb.go b/trillian_log_api.pb.go
index bd6ca0f8..78e6c1c2 100644
--- a/trillian_log_api.pb.go
+++ b/trillian_log_api.pb.go
@@ -860,112 +860,6 @@ func (x *GetLatestSignedLogRootResponse) GetProof() *Proof {
 	return nil
 }
 
-// DO NOT USE - FOR DEBUGGING/TEST ONLY
-//
-// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-// use the tree size field within.)
-type GetSequencedLeafCountRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	LogId    int64     `protobuf:"varint,1,opt,name=log_id,json=logId,proto3" json:"log_id,omitempty"`
-	ChargeTo *ChargeTo `protobuf:"bytes,2,opt,name=charge_to,json=chargeTo,proto3" json:"charge_to,omitempty"`
-}
-
-func (x *GetSequencedLeafCountRequest) Reset() {
-	*x = GetSequencedLeafCountRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetSequencedLeafCountRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSequencedLeafCountRequest) ProtoMessage() {}
-
-func (x *GetSequencedLeafCountRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[13]
-	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 GetSequencedLeafCountRequest.ProtoReflect.Descriptor instead.
-func (*GetSequencedLeafCountRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *GetSequencedLeafCountRequest) GetLogId() int64 {
-	if x != nil {
-		return x.LogId
-	}
-	return 0
-}
-
-func (x *GetSequencedLeafCountRequest) GetChargeTo() *ChargeTo {
-	if x != nil {
-		return x.ChargeTo
-	}
-	return nil
-}
-
-type GetSequencedLeafCountResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	LeafCount int64 `protobuf:"varint,2,opt,name=leaf_count,json=leafCount,proto3" json:"leaf_count,omitempty"`
-}
-
-func (x *GetSequencedLeafCountResponse) Reset() {
-	*x = GetSequencedLeafCountResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetSequencedLeafCountResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSequencedLeafCountResponse) ProtoMessage() {}
-
-func (x *GetSequencedLeafCountResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[14]
-	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 GetSequencedLeafCountResponse.ProtoReflect.Descriptor instead.
-func (*GetSequencedLeafCountResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *GetSequencedLeafCountResponse) GetLeafCount() int64 {
-	if x != nil {
-		return x.LeafCount
-	}
-	return 0
-}
-
 type GetEntryAndProofRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -980,7 +874,7 @@ type GetEntryAndProofRequest struct {
 func (x *GetEntryAndProofRequest) Reset() {
 	*x = GetEntryAndProofRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[15]
+		mi := &file_trillian_log_api_proto_msgTypes[13]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -993,7 +887,7 @@ func (x *GetEntryAndProofRequest) String() string {
 func (*GetEntryAndProofRequest) ProtoMessage() {}
 
 func (x *GetEntryAndProofRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[15]
+	mi := &file_trillian_log_api_proto_msgTypes[13]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1006,7 +900,7 @@ func (x *GetEntryAndProofRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetEntryAndProofRequest.ProtoReflect.Descriptor instead.
 func (*GetEntryAndProofRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{15}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{13}
 }
 
 func (x *GetEntryAndProofRequest) GetLogId() int64 {
@@ -1050,7 +944,7 @@ type GetEntryAndProofResponse struct {
 func (x *GetEntryAndProofResponse) Reset() {
 	*x = GetEntryAndProofResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[16]
+		mi := &file_trillian_log_api_proto_msgTypes[14]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1063,7 +957,7 @@ func (x *GetEntryAndProofResponse) String() string {
 func (*GetEntryAndProofResponse) ProtoMessage() {}
 
 func (x *GetEntryAndProofResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[16]
+	mi := &file_trillian_log_api_proto_msgTypes[14]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1076,7 +970,7 @@ func (x *GetEntryAndProofResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetEntryAndProofResponse.ProtoReflect.Descriptor instead.
 func (*GetEntryAndProofResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{16}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *GetEntryAndProofResponse) GetProof() *Proof {
@@ -1112,7 +1006,7 @@ type InitLogRequest struct {
 func (x *InitLogRequest) Reset() {
 	*x = InitLogRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[17]
+		mi := &file_trillian_log_api_proto_msgTypes[15]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1125,7 +1019,7 @@ func (x *InitLogRequest) String() string {
 func (*InitLogRequest) ProtoMessage() {}
 
 func (x *InitLogRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[17]
+	mi := &file_trillian_log_api_proto_msgTypes[15]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1138,7 +1032,7 @@ func (x *InitLogRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use InitLogRequest.ProtoReflect.Descriptor instead.
 func (*InitLogRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{17}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *InitLogRequest) GetLogId() int64 {
@@ -1166,7 +1060,7 @@ type InitLogResponse struct {
 func (x *InitLogResponse) Reset() {
 	*x = InitLogResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[18]
+		mi := &file_trillian_log_api_proto_msgTypes[16]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1179,7 +1073,7 @@ func (x *InitLogResponse) String() string {
 func (*InitLogResponse) ProtoMessage() {}
 
 func (x *InitLogResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[18]
+	mi := &file_trillian_log_api_proto_msgTypes[16]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1192,7 +1086,7 @@ func (x *InitLogResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use InitLogResponse.ProtoReflect.Descriptor instead.
 func (*InitLogResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{18}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{16}
 }
 
 func (x *InitLogResponse) GetCreated() *SignedLogRoot {
@@ -1215,7 +1109,7 @@ type QueueLeavesRequest struct {
 func (x *QueueLeavesRequest) Reset() {
 	*x = QueueLeavesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[19]
+		mi := &file_trillian_log_api_proto_msgTypes[17]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1228,7 +1122,7 @@ func (x *QueueLeavesRequest) String() string {
 func (*QueueLeavesRequest) ProtoMessage() {}
 
 func (x *QueueLeavesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[19]
+	mi := &file_trillian_log_api_proto_msgTypes[17]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1241,7 +1135,7 @@ func (x *QueueLeavesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use QueueLeavesRequest.ProtoReflect.Descriptor instead.
 func (*QueueLeavesRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{19}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{17}
 }
 
 func (x *QueueLeavesRequest) GetLogId() int64 {
@@ -1277,7 +1171,7 @@ type QueueLeavesResponse struct {
 func (x *QueueLeavesResponse) Reset() {
 	*x = QueueLeavesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[20]
+		mi := &file_trillian_log_api_proto_msgTypes[18]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1290,7 +1184,7 @@ func (x *QueueLeavesResponse) String() string {
 func (*QueueLeavesResponse) ProtoMessage() {}
 
 func (x *QueueLeavesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[20]
+	mi := &file_trillian_log_api_proto_msgTypes[18]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1303,7 +1197,7 @@ func (x *QueueLeavesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use QueueLeavesResponse.ProtoReflect.Descriptor instead.
 func (*QueueLeavesResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{20}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{18}
 }
 
 func (x *QueueLeavesResponse) GetQueuedLeaves() []*QueuedLogLeaf {
@@ -1326,7 +1220,7 @@ type AddSequencedLeavesRequest struct {
 func (x *AddSequencedLeavesRequest) Reset() {
 	*x = AddSequencedLeavesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[21]
+		mi := &file_trillian_log_api_proto_msgTypes[19]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1339,7 +1233,7 @@ func (x *AddSequencedLeavesRequest) String() string {
 func (*AddSequencedLeavesRequest) ProtoMessage() {}
 
 func (x *AddSequencedLeavesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[21]
+	mi := &file_trillian_log_api_proto_msgTypes[19]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1352,7 +1246,7 @@ func (x *AddSequencedLeavesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AddSequencedLeavesRequest.ProtoReflect.Descriptor instead.
 func (*AddSequencedLeavesRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{21}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{19}
 }
 
 func (x *AddSequencedLeavesRequest) GetLogId() int64 {
@@ -1388,7 +1282,7 @@ type AddSequencedLeavesResponse struct {
 func (x *AddSequencedLeavesResponse) Reset() {
 	*x = AddSequencedLeavesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[22]
+		mi := &file_trillian_log_api_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1401,7 +1295,7 @@ func (x *AddSequencedLeavesResponse) String() string {
 func (*AddSequencedLeavesResponse) ProtoMessage() {}
 
 func (x *AddSequencedLeavesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[22]
+	mi := &file_trillian_log_api_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1414,7 +1308,7 @@ func (x *AddSequencedLeavesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AddSequencedLeavesResponse.ProtoReflect.Descriptor instead.
 func (*AddSequencedLeavesResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{22}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{20}
 }
 
 func (x *AddSequencedLeavesResponse) GetResults() []*QueuedLogLeaf {
@@ -1437,7 +1331,7 @@ type GetLeavesByIndexRequest struct {
 func (x *GetLeavesByIndexRequest) Reset() {
 	*x = GetLeavesByIndexRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[23]
+		mi := &file_trillian_log_api_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1450,7 +1344,7 @@ func (x *GetLeavesByIndexRequest) String() string {
 func (*GetLeavesByIndexRequest) ProtoMessage() {}
 
 func (x *GetLeavesByIndexRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[23]
+	mi := &file_trillian_log_api_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1463,7 +1357,7 @@ func (x *GetLeavesByIndexRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetLeavesByIndexRequest.ProtoReflect.Descriptor instead.
 func (*GetLeavesByIndexRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{23}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{21}
 }
 
 func (x *GetLeavesByIndexRequest) GetLogId() int64 {
@@ -1500,7 +1394,7 @@ type GetLeavesByIndexResponse struct {
 func (x *GetLeavesByIndexResponse) Reset() {
 	*x = GetLeavesByIndexResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[24]
+		mi := &file_trillian_log_api_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1513,7 +1407,7 @@ func (x *GetLeavesByIndexResponse) String() string {
 func (*GetLeavesByIndexResponse) ProtoMessage() {}
 
 func (x *GetLeavesByIndexResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[24]
+	mi := &file_trillian_log_api_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1526,7 +1420,7 @@ func (x *GetLeavesByIndexResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetLeavesByIndexResponse.ProtoReflect.Descriptor instead.
 func (*GetLeavesByIndexResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{24}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{22}
 }
 
 func (x *GetLeavesByIndexResponse) GetLeaves() []*LogLeaf {
@@ -1557,7 +1451,7 @@ type GetLeavesByRangeRequest struct {
 func (x *GetLeavesByRangeRequest) Reset() {
 	*x = GetLeavesByRangeRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[25]
+		mi := &file_trillian_log_api_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1570,7 +1464,7 @@ func (x *GetLeavesByRangeRequest) String() string {
 func (*GetLeavesByRangeRequest) ProtoMessage() {}
 
 func (x *GetLeavesByRangeRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[25]
+	mi := &file_trillian_log_api_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1583,7 +1477,7 @@ func (x *GetLeavesByRangeRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetLeavesByRangeRequest.ProtoReflect.Descriptor instead.
 func (*GetLeavesByRangeRequest) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{25}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{23}
 }
 
 func (x *GetLeavesByRangeRequest) GetLogId() int64 {
@@ -1630,7 +1524,7 @@ type GetLeavesByRangeResponse struct {
 func (x *GetLeavesByRangeResponse) Reset() {
 	*x = GetLeavesByRangeResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[26]
+		mi := &file_trillian_log_api_proto_msgTypes[24]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1643,7 +1537,7 @@ func (x *GetLeavesByRangeResponse) String() string {
 func (*GetLeavesByRangeResponse) ProtoMessage() {}
 
 func (x *GetLeavesByRangeResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[26]
+	mi := &file_trillian_log_api_proto_msgTypes[24]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1656,7 +1550,7 @@ func (x *GetLeavesByRangeResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetLeavesByRangeResponse.ProtoReflect.Descriptor instead.
 func (*GetLeavesByRangeResponse) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{26}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{24}
 }
 
 func (x *GetLeavesByRangeResponse) GetLeaves() []*LogLeaf {
@@ -1698,7 +1592,7 @@ type QueuedLogLeaf struct {
 func (x *QueuedLogLeaf) Reset() {
 	*x = QueuedLogLeaf{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[27]
+		mi := &file_trillian_log_api_proto_msgTypes[25]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1711,7 +1605,7 @@ func (x *QueuedLogLeaf) String() string {
 func (*QueuedLogLeaf) ProtoMessage() {}
 
 func (x *QueuedLogLeaf) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[27]
+	mi := &file_trillian_log_api_proto_msgTypes[25]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1724,7 +1618,7 @@ func (x *QueuedLogLeaf) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use QueuedLogLeaf.ProtoReflect.Descriptor instead.
 func (*QueuedLogLeaf) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{27}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{25}
 }
 
 func (x *QueuedLogLeaf) GetLeaf() *LogLeaf {
@@ -1815,7 +1709,7 @@ type LogLeaf struct {
 func (x *LogLeaf) Reset() {
 	*x = LogLeaf{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_trillian_log_api_proto_msgTypes[28]
+		mi := &file_trillian_log_api_proto_msgTypes[26]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1828,7 +1722,7 @@ func (x *LogLeaf) String() string {
 func (*LogLeaf) ProtoMessage() {}
 
 func (x *LogLeaf) ProtoReflect() protoreflect.Message {
-	mi := &file_trillian_log_api_proto_msgTypes[28]
+	mi := &file_trillian_log_api_proto_msgTypes[26]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1841,7 +1735,7 @@ func (x *LogLeaf) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use LogLeaf.ProtoReflect.Descriptor instead.
 func (*LogLeaf) Descriptor() ([]byte, []int) {
-	return file_trillian_log_api_proto_rawDescGZIP(), []int{28}
+	return file_trillian_log_api_proto_rawDescGZIP(), []int{26}
 }
 
 func (x *LogLeaf) GetMerkleLeafHash() []byte {
@@ -2011,249 +1905,229 @@ var file_trillian_log_api_proto_rawDesc = []byte{
 	0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74,
 	0x12, 0x25, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
 	0x0f, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66,
-	0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x66, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x65,
-	0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f,
-	0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61,
-	0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22,
-	0x3e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c,
-	0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
-	0x9d, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50,
-	0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c,
-	0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67,
-	0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x72, 0x65, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f,
-	0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61,
-	0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22,
-	0xa9, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50,
-	0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05,
-	0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x72,
-	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72,
-	0x6f, 0x6f, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x9d, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65,
+	0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x65,
+	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x72,
+	0x65, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65,
+	0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c,
+	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63,
+	0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x50,
+	0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c,
+	0x65, 0x61, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c,
+	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65,
+	0x61, 0x66, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67,
+	0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72,
+	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67,
+	0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52,
+	0x6f, 0x6f, 0x74, 0x22, 0x58, 0x0a, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09,
+	0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67,
+	0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x44, 0x0a,
+	0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x31, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67,
+	0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61,
+	0x74, 0x65, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61,
+	0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f,
+	0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49,
+	0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
 	0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67,
-	0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69,
-	0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69,
-	0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x58, 0x0a, 0x0e, 0x49,
-	0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a,
-	0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c,
-	0x6f, 0x67, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74,
-	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69,
-	0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61,
-	0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x44, 0x0a, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f,
-	0x6f, 0x74, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x12,
-	0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61,
-	0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65,
-	0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74,
-	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69,
-	0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61,
-	0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x53, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65,
-	0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d,
-	0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51,
-	0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x0c, 0x71, 0x75,
-	0x65, 0x75, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x41,
-	0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65,
-	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12,
-	0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65,
-	0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68,
-	0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
-	0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54,
-	0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x4f, 0x0a, 0x1a, 0x41,
-	0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73,
-	0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69,
-	0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c,
-	0x65, 0x61, 0x66, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x80, 0x01, 0x0a,
-	0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12,
-	0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2f,
-	0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61,
-	0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22,
-	0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49,
-	0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06,
-	0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74,
-	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52,
-	0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65,
-	0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e,
-	0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65,
-	0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74,
-	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
-	0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05,
-	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18,
+	0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09,
+	0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67,
+	0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x53, 0x0a,
+	0x13, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x6c,
+	0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72,
+	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67,
+	0x4c, 0x65, 0x61, 0x66, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76,
+	0x65, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
+	0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69,
+	0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76,
+	0x65, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18,
 	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e,
 	0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67,
-	0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65,
-	0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c,
-	0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
-	0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x22, 0x62, 0x0a, 0x0d,
-	0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x25, 0x0a,
-	0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72,
-	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04,
-	0x6c, 0x65, 0x61, 0x66, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70,
-	0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x22, 0xd0, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x28, 0x0a, 0x10,
-	0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x4c, 0x65,
-	0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61,
-	0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e,
-	0x64, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x10, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x73,
-	0x68, 0x12, 0x43, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x54, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72,
-	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
-	0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x32, 0x8e, 0x0d, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e,
-	0x4c, 0x6f, 0x67, 0x12, 0x6e, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66,
-	0x12, 0x1a, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75,
-	0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74,
+	0x65, 0x54, 0x6f, 0x22, 0x4f, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
+	0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x07, 0x72, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76,
+	0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x6c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x65, 0x61,
+	0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65,
+	0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x72, 0x69, 0x6c,
+	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x08, 0x63,
+	0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c,
+	0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
+	0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12,
+	0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f,
+	0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
+	0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f,
+	0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74,
+	0x22, 0x98, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79,
+	0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06,
+	0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x6f,
+	0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x68,
+	0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+	0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54,
+	0x6f, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x18,
+	0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x76,
+	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
+	0x69, 0x61, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x06, 0x6c, 0x65, 0x61,
+	0x76, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f,
+	0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74,
+	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f,
+	0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67,
+	0x52, 0x6f, 0x6f, 0x74, 0x22, 0x62, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4c, 0x6f,
+	0x67, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x4c,
+	0x6f, 0x67, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x2a, 0x0a, 0x06,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x67,
+	0x4c, 0x65, 0x61, 0x66, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x6c,
+	0x65, 0x61, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e,
+	0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a,
+	0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0c, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x12, 0x6c,
+	0x65, 0x61, 0x66, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x73,
+	0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x43, 0x0a, 0x0f, 0x71, 0x75, 0x65,
+	0x75, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e,
+	0x71, 0x75, 0x65, 0x75, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b,
+	0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
+	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xec, 0x0b, 0x0a, 0x0b,
+	0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x4c, 0x6f, 0x67, 0x12, 0x6e, 0x0a, 0x09, 0x51,
+	0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
+	0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x62, 0x65,
+	0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64,
+	0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x10,
+	0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66,
+	0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53,
+	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41,
+	0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22,
+	0x27, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b,
+	0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x73,
+	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x11,
+	0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f,
+	0x66, 0x12, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74,
+	0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e,
+	0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f,
+	0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67,
+	0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65,
+	0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x3a, 0x69,
+	0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xa7,
+	0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50,
+	0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x2e, 0x74, 0x72, 0x69,
+	0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69,
+	0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
+	0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f,
+	0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
+	0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f,
+	0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e,
+	0x5f, 0x62, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74,
+	0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66,
+	0x12, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43,
+	0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61,
+	0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79,
+	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
+	0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x6f,
+	0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12,
+	0x98, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67,
+	0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x72, 0x69,
+	0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53,
+	0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47,
+	0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f,
+	0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
+	0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f,
+	0x6f, 0x74, 0x73, 0x3a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x47,
+	0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12,
+	0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65,
+	0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a,
+	0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c,
+	0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c,
+	0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x12, 0x63, 0x0a, 0x07, 0x49, 0x6e,
+	0x69, 0x74, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e,
+	0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x19, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c,
+	0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67,
+	0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x69, 0x6e, 0x69, 0x74, 0x12,
+	0x4c, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x1c,
+	0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c,
+	0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74,
 	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61,
-	0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73,
-	0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73,
-	0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65,
-	0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
+	0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a,
+	0x12, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61,
+	0x76, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41,
+	0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
 	0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64,
-	0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72,
-	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
-	0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
-	0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
-	0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f,
-	0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64,
-	0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75,
-	0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f,
-	0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
-	0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c,
-	0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62,
-	0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69,
-	0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x7d, 0x3a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e,
-	0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x6e,
-	0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61,
-	0x73, 0x68, 0x12, 0x28, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65,
-	0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42,
-	0x79, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74,
-	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75,
-	0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12,
-	0x2f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b,
-	0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x3a, 0x69,
-	0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68,
-	0x12, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65,
-	0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
-	0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
-	0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25,
-	0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e,
-	0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f,
-	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f,
-	0x67, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63,
-	0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x98, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c,
-	0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f,
-	0x6f, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65,
-	0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67,
-	0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x72,
-	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74,
-	0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f,
-	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f,
-	0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x3a, 0x6c, 0x61, 0x74, 0x65,
-	0x73, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,
-	0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x74,
-	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65,
-	0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
-	0x47, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x66,
-	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,
-	0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x65,
-	0x61, 0x76, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x63,
-	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x6e, 0x64,
-	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74,
-	0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
-	0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x64, 0x7d,
-	0x2f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e,
-	0x64, 0x65, 0x78, 0x7d, 0x12, 0x63, 0x0a, 0x07, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x12,
-	0x18, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c,
-	0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x76,
-	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67,
-	0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x69, 0x6e, 0x69, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x51, 0x75, 0x65,
-	0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c,
-	0x69, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61,
-	0x6e, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x53, 0x65,
-	0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x23, 0x2e,
-	0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x71, 0x75,
-	0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x41, 0x64,
-	0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65,
-	0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21,
-	0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61,
-	0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74,
-	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x65,
-	0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x72,
-	0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73,
-	0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
-	0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61,
-	0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x22, 0x00, 0x42, 0x4e, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x42, 0x13, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x4c, 0x6f, 0x67, 0x41, 0x70,
-	0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
-	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x72, 0x69, 0x6c,
-	0x6c, 0x69, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+	0x12, 0x5b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
+	0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69,
+	0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a,
+	0x10, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67,
+	0x65, 0x12, 0x21, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74,
+	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x2e,
+	0x47, 0x65, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x4e, 0x0a, 0x19, 0x63, 0x6f,
+	0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61,
+	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x13, 0x54, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61,
+	0x6e, 0x4c, 0x6f, 0x67, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x74, 0x72, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
@@ -2268,7 +2142,7 @@ func file_trillian_log_api_proto_rawDescGZIP() []byte {
 	return file_trillian_log_api_proto_rawDescData
 }
 
-var file_trillian_log_api_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
+var file_trillian_log_api_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
 var file_trillian_log_api_proto_goTypes = []interface{}{
 	(*ChargeTo)(nil),                        // 0: trillian.ChargeTo
 	(*QueueLeafRequest)(nil),                // 1: trillian.QueueLeafRequest
@@ -2283,100 +2157,95 @@ var file_trillian_log_api_proto_goTypes = []interface{}{
 	(*GetConsistencyProofResponse)(nil),     // 10: trillian.GetConsistencyProofResponse
 	(*GetLatestSignedLogRootRequest)(nil),   // 11: trillian.GetLatestSignedLogRootRequest
 	(*GetLatestSignedLogRootResponse)(nil),  // 12: trillian.GetLatestSignedLogRootResponse
-	(*GetSequencedLeafCountRequest)(nil),    // 13: trillian.GetSequencedLeafCountRequest
-	(*GetSequencedLeafCountResponse)(nil),   // 14: trillian.GetSequencedLeafCountResponse
-	(*GetEntryAndProofRequest)(nil),         // 15: trillian.GetEntryAndProofRequest
-	(*GetEntryAndProofResponse)(nil),        // 16: trillian.GetEntryAndProofResponse
-	(*InitLogRequest)(nil),                  // 17: trillian.InitLogRequest
-	(*InitLogResponse)(nil),                 // 18: trillian.InitLogResponse
-	(*QueueLeavesRequest)(nil),              // 19: trillian.QueueLeavesRequest
-	(*QueueLeavesResponse)(nil),             // 20: trillian.QueueLeavesResponse
-	(*AddSequencedLeavesRequest)(nil),       // 21: trillian.AddSequencedLeavesRequest
-	(*AddSequencedLeavesResponse)(nil),      // 22: trillian.AddSequencedLeavesResponse
-	(*GetLeavesByIndexRequest)(nil),         // 23: trillian.GetLeavesByIndexRequest
-	(*GetLeavesByIndexResponse)(nil),        // 24: trillian.GetLeavesByIndexResponse
-	(*GetLeavesByRangeRequest)(nil),         // 25: trillian.GetLeavesByRangeRequest
-	(*GetLeavesByRangeResponse)(nil),        // 26: trillian.GetLeavesByRangeResponse
-	(*QueuedLogLeaf)(nil),                   // 27: trillian.QueuedLogLeaf
-	(*LogLeaf)(nil),                         // 28: trillian.LogLeaf
-	(*Proof)(nil),                           // 29: trillian.Proof
-	(*SignedLogRoot)(nil),                   // 30: trillian.SignedLogRoot
-	(*status.Status)(nil),                   // 31: google.rpc.Status
-	(*timestamp.Timestamp)(nil),             // 32: google.protobuf.Timestamp
+	(*GetEntryAndProofRequest)(nil),         // 13: trillian.GetEntryAndProofRequest
+	(*GetEntryAndProofResponse)(nil),        // 14: trillian.GetEntryAndProofResponse
+	(*InitLogRequest)(nil),                  // 15: trillian.InitLogRequest
+	(*InitLogResponse)(nil),                 // 16: trillian.InitLogResponse
+	(*QueueLeavesRequest)(nil),              // 17: trillian.QueueLeavesRequest
+	(*QueueLeavesResponse)(nil),             // 18: trillian.QueueLeavesResponse
+	(*AddSequencedLeavesRequest)(nil),       // 19: trillian.AddSequencedLeavesRequest
+	(*AddSequencedLeavesResponse)(nil),      // 20: trillian.AddSequencedLeavesResponse
+	(*GetLeavesByIndexRequest)(nil),         // 21: trillian.GetLeavesByIndexRequest
+	(*GetLeavesByIndexResponse)(nil),        // 22: trillian.GetLeavesByIndexResponse
+	(*GetLeavesByRangeRequest)(nil),         // 23: trillian.GetLeavesByRangeRequest
+	(*GetLeavesByRangeResponse)(nil),        // 24: trillian.GetLeavesByRangeResponse
+	(*QueuedLogLeaf)(nil),                   // 25: trillian.QueuedLogLeaf
+	(*LogLeaf)(nil),                         // 26: trillian.LogLeaf
+	(*Proof)(nil),                           // 27: trillian.Proof
+	(*SignedLogRoot)(nil),                   // 28: trillian.SignedLogRoot
+	(*status.Status)(nil),                   // 29: google.rpc.Status
+	(*timestamp.Timestamp)(nil),             // 30: google.protobuf.Timestamp
 }
 var file_trillian_log_api_proto_depIdxs = []int32{
-	28, // 0: trillian.QueueLeafRequest.leaf:type_name -> trillian.LogLeaf
+	26, // 0: trillian.QueueLeafRequest.leaf:type_name -> trillian.LogLeaf
 	0,  // 1: trillian.QueueLeafRequest.charge_to:type_name -> trillian.ChargeTo
-	27, // 2: trillian.QueueLeafResponse.queued_leaf:type_name -> trillian.QueuedLogLeaf
-	28, // 3: trillian.AddSequencedLeafRequest.leaf:type_name -> trillian.LogLeaf
+	25, // 2: trillian.QueueLeafResponse.queued_leaf:type_name -> trillian.QueuedLogLeaf
+	26, // 3: trillian.AddSequencedLeafRequest.leaf:type_name -> trillian.LogLeaf
 	0,  // 4: trillian.AddSequencedLeafRequest.charge_to:type_name -> trillian.ChargeTo
-	27, // 5: trillian.AddSequencedLeafResponse.result:type_name -> trillian.QueuedLogLeaf
+	25, // 5: trillian.AddSequencedLeafResponse.result:type_name -> trillian.QueuedLogLeaf
 	0,  // 6: trillian.GetInclusionProofRequest.charge_to:type_name -> trillian.ChargeTo
-	29, // 7: trillian.GetInclusionProofResponse.proof:type_name -> trillian.Proof
-	30, // 8: trillian.GetInclusionProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	27, // 7: trillian.GetInclusionProofResponse.proof:type_name -> trillian.Proof
+	28, // 8: trillian.GetInclusionProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
 	0,  // 9: trillian.GetInclusionProofByHashRequest.charge_to:type_name -> trillian.ChargeTo
-	29, // 10: trillian.GetInclusionProofByHashResponse.proof:type_name -> trillian.Proof
-	30, // 11: trillian.GetInclusionProofByHashResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	27, // 10: trillian.GetInclusionProofByHashResponse.proof:type_name -> trillian.Proof
+	28, // 11: trillian.GetInclusionProofByHashResponse.signed_log_root:type_name -> trillian.SignedLogRoot
 	0,  // 12: trillian.GetConsistencyProofRequest.charge_to:type_name -> trillian.ChargeTo
-	29, // 13: trillian.GetConsistencyProofResponse.proof:type_name -> trillian.Proof
-	30, // 14: trillian.GetConsistencyProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	27, // 13: trillian.GetConsistencyProofResponse.proof:type_name -> trillian.Proof
+	28, // 14: trillian.GetConsistencyProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
 	0,  // 15: trillian.GetLatestSignedLogRootRequest.charge_to:type_name -> trillian.ChargeTo
-	30, // 16: trillian.GetLatestSignedLogRootResponse.signed_log_root:type_name -> trillian.SignedLogRoot
-	29, // 17: trillian.GetLatestSignedLogRootResponse.proof:type_name -> trillian.Proof
-	0,  // 18: trillian.GetSequencedLeafCountRequest.charge_to:type_name -> trillian.ChargeTo
-	0,  // 19: trillian.GetEntryAndProofRequest.charge_to:type_name -> trillian.ChargeTo
-	29, // 20: trillian.GetEntryAndProofResponse.proof:type_name -> trillian.Proof
-	28, // 21: trillian.GetEntryAndProofResponse.leaf:type_name -> trillian.LogLeaf
-	30, // 22: trillian.GetEntryAndProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
-	0,  // 23: trillian.InitLogRequest.charge_to:type_name -> trillian.ChargeTo
-	30, // 24: trillian.InitLogResponse.created:type_name -> trillian.SignedLogRoot
-	28, // 25: trillian.QueueLeavesRequest.leaves:type_name -> trillian.LogLeaf
-	0,  // 26: trillian.QueueLeavesRequest.charge_to:type_name -> trillian.ChargeTo
-	27, // 27: trillian.QueueLeavesResponse.queued_leaves:type_name -> trillian.QueuedLogLeaf
-	28, // 28: trillian.AddSequencedLeavesRequest.leaves:type_name -> trillian.LogLeaf
-	0,  // 29: trillian.AddSequencedLeavesRequest.charge_to:type_name -> trillian.ChargeTo
-	27, // 30: trillian.AddSequencedLeavesResponse.results:type_name -> trillian.QueuedLogLeaf
-	0,  // 31: trillian.GetLeavesByIndexRequest.charge_to:type_name -> trillian.ChargeTo
-	28, // 32: trillian.GetLeavesByIndexResponse.leaves:type_name -> trillian.LogLeaf
-	30, // 33: trillian.GetLeavesByIndexResponse.signed_log_root:type_name -> trillian.SignedLogRoot
-	0,  // 34: trillian.GetLeavesByRangeRequest.charge_to:type_name -> trillian.ChargeTo
-	28, // 35: trillian.GetLeavesByRangeResponse.leaves:type_name -> trillian.LogLeaf
-	30, // 36: trillian.GetLeavesByRangeResponse.signed_log_root:type_name -> trillian.SignedLogRoot
-	28, // 37: trillian.QueuedLogLeaf.leaf:type_name -> trillian.LogLeaf
-	31, // 38: trillian.QueuedLogLeaf.status:type_name -> google.rpc.Status
-	32, // 39: trillian.LogLeaf.queue_timestamp:type_name -> google.protobuf.Timestamp
-	32, // 40: trillian.LogLeaf.integrate_timestamp:type_name -> google.protobuf.Timestamp
-	1,  // 41: trillian.TrillianLog.QueueLeaf:input_type -> trillian.QueueLeafRequest
-	3,  // 42: trillian.TrillianLog.AddSequencedLeaf:input_type -> trillian.AddSequencedLeafRequest
-	5,  // 43: trillian.TrillianLog.GetInclusionProof:input_type -> trillian.GetInclusionProofRequest
-	7,  // 44: trillian.TrillianLog.GetInclusionProofByHash:input_type -> trillian.GetInclusionProofByHashRequest
-	9,  // 45: trillian.TrillianLog.GetConsistencyProof:input_type -> trillian.GetConsistencyProofRequest
-	11, // 46: trillian.TrillianLog.GetLatestSignedLogRoot:input_type -> trillian.GetLatestSignedLogRootRequest
-	13, // 47: trillian.TrillianLog.GetSequencedLeafCount:input_type -> trillian.GetSequencedLeafCountRequest
-	15, // 48: trillian.TrillianLog.GetEntryAndProof:input_type -> trillian.GetEntryAndProofRequest
-	17, // 49: trillian.TrillianLog.InitLog:input_type -> trillian.InitLogRequest
-	19, // 50: trillian.TrillianLog.QueueLeaves:input_type -> trillian.QueueLeavesRequest
-	21, // 51: trillian.TrillianLog.AddSequencedLeaves:input_type -> trillian.AddSequencedLeavesRequest
-	23, // 52: trillian.TrillianLog.GetLeavesByIndex:input_type -> trillian.GetLeavesByIndexRequest
-	25, // 53: trillian.TrillianLog.GetLeavesByRange:input_type -> trillian.GetLeavesByRangeRequest
-	2,  // 54: trillian.TrillianLog.QueueLeaf:output_type -> trillian.QueueLeafResponse
-	4,  // 55: trillian.TrillianLog.AddSequencedLeaf:output_type -> trillian.AddSequencedLeafResponse
-	6,  // 56: trillian.TrillianLog.GetInclusionProof:output_type -> trillian.GetInclusionProofResponse
-	8,  // 57: trillian.TrillianLog.GetInclusionProofByHash:output_type -> trillian.GetInclusionProofByHashResponse
-	10, // 58: trillian.TrillianLog.GetConsistencyProof:output_type -> trillian.GetConsistencyProofResponse
-	12, // 59: trillian.TrillianLog.GetLatestSignedLogRoot:output_type -> trillian.GetLatestSignedLogRootResponse
-	14, // 60: trillian.TrillianLog.GetSequencedLeafCount:output_type -> trillian.GetSequencedLeafCountResponse
-	16, // 61: trillian.TrillianLog.GetEntryAndProof:output_type -> trillian.GetEntryAndProofResponse
-	18, // 62: trillian.TrillianLog.InitLog:output_type -> trillian.InitLogResponse
-	20, // 63: trillian.TrillianLog.QueueLeaves:output_type -> trillian.QueueLeavesResponse
-	22, // 64: trillian.TrillianLog.AddSequencedLeaves:output_type -> trillian.AddSequencedLeavesResponse
-	24, // 65: trillian.TrillianLog.GetLeavesByIndex:output_type -> trillian.GetLeavesByIndexResponse
-	26, // 66: trillian.TrillianLog.GetLeavesByRange:output_type -> trillian.GetLeavesByRangeResponse
-	54, // [54:67] is the sub-list for method output_type
-	41, // [41:54] is the sub-list for method input_type
-	41, // [41:41] is the sub-list for extension type_name
-	41, // [41:41] is the sub-list for extension extendee
-	0,  // [0:41] is the sub-list for field type_name
+	28, // 16: trillian.GetLatestSignedLogRootResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	27, // 17: trillian.GetLatestSignedLogRootResponse.proof:type_name -> trillian.Proof
+	0,  // 18: trillian.GetEntryAndProofRequest.charge_to:type_name -> trillian.ChargeTo
+	27, // 19: trillian.GetEntryAndProofResponse.proof:type_name -> trillian.Proof
+	26, // 20: trillian.GetEntryAndProofResponse.leaf:type_name -> trillian.LogLeaf
+	28, // 21: trillian.GetEntryAndProofResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	0,  // 22: trillian.InitLogRequest.charge_to:type_name -> trillian.ChargeTo
+	28, // 23: trillian.InitLogResponse.created:type_name -> trillian.SignedLogRoot
+	26, // 24: trillian.QueueLeavesRequest.leaves:type_name -> trillian.LogLeaf
+	0,  // 25: trillian.QueueLeavesRequest.charge_to:type_name -> trillian.ChargeTo
+	25, // 26: trillian.QueueLeavesResponse.queued_leaves:type_name -> trillian.QueuedLogLeaf
+	26, // 27: trillian.AddSequencedLeavesRequest.leaves:type_name -> trillian.LogLeaf
+	0,  // 28: trillian.AddSequencedLeavesRequest.charge_to:type_name -> trillian.ChargeTo
+	25, // 29: trillian.AddSequencedLeavesResponse.results:type_name -> trillian.QueuedLogLeaf
+	0,  // 30: trillian.GetLeavesByIndexRequest.charge_to:type_name -> trillian.ChargeTo
+	26, // 31: trillian.GetLeavesByIndexResponse.leaves:type_name -> trillian.LogLeaf
+	28, // 32: trillian.GetLeavesByIndexResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	0,  // 33: trillian.GetLeavesByRangeRequest.charge_to:type_name -> trillian.ChargeTo
+	26, // 34: trillian.GetLeavesByRangeResponse.leaves:type_name -> trillian.LogLeaf
+	28, // 35: trillian.GetLeavesByRangeResponse.signed_log_root:type_name -> trillian.SignedLogRoot
+	26, // 36: trillian.QueuedLogLeaf.leaf:type_name -> trillian.LogLeaf
+	29, // 37: trillian.QueuedLogLeaf.status:type_name -> google.rpc.Status
+	30, // 38: trillian.LogLeaf.queue_timestamp:type_name -> google.protobuf.Timestamp
+	30, // 39: trillian.LogLeaf.integrate_timestamp:type_name -> google.protobuf.Timestamp
+	1,  // 40: trillian.TrillianLog.QueueLeaf:input_type -> trillian.QueueLeafRequest
+	3,  // 41: trillian.TrillianLog.AddSequencedLeaf:input_type -> trillian.AddSequencedLeafRequest
+	5,  // 42: trillian.TrillianLog.GetInclusionProof:input_type -> trillian.GetInclusionProofRequest
+	7,  // 43: trillian.TrillianLog.GetInclusionProofByHash:input_type -> trillian.GetInclusionProofByHashRequest
+	9,  // 44: trillian.TrillianLog.GetConsistencyProof:input_type -> trillian.GetConsistencyProofRequest
+	11, // 45: trillian.TrillianLog.GetLatestSignedLogRoot:input_type -> trillian.GetLatestSignedLogRootRequest
+	13, // 46: trillian.TrillianLog.GetEntryAndProof:input_type -> trillian.GetEntryAndProofRequest
+	15, // 47: trillian.TrillianLog.InitLog:input_type -> trillian.InitLogRequest
+	17, // 48: trillian.TrillianLog.QueueLeaves:input_type -> trillian.QueueLeavesRequest
+	19, // 49: trillian.TrillianLog.AddSequencedLeaves:input_type -> trillian.AddSequencedLeavesRequest
+	21, // 50: trillian.TrillianLog.GetLeavesByIndex:input_type -> trillian.GetLeavesByIndexRequest
+	23, // 51: trillian.TrillianLog.GetLeavesByRange:input_type -> trillian.GetLeavesByRangeRequest
+	2,  // 52: trillian.TrillianLog.QueueLeaf:output_type -> trillian.QueueLeafResponse
+	4,  // 53: trillian.TrillianLog.AddSequencedLeaf:output_type -> trillian.AddSequencedLeafResponse
+	6,  // 54: trillian.TrillianLog.GetInclusionProof:output_type -> trillian.GetInclusionProofResponse
+	8,  // 55: trillian.TrillianLog.GetInclusionProofByHash:output_type -> trillian.GetInclusionProofByHashResponse
+	10, // 56: trillian.TrillianLog.GetConsistencyProof:output_type -> trillian.GetConsistencyProofResponse
+	12, // 57: trillian.TrillianLog.GetLatestSignedLogRoot:output_type -> trillian.GetLatestSignedLogRootResponse
+	14, // 58: trillian.TrillianLog.GetEntryAndProof:output_type -> trillian.GetEntryAndProofResponse
+	16, // 59: trillian.TrillianLog.InitLog:output_type -> trillian.InitLogResponse
+	18, // 60: trillian.TrillianLog.QueueLeaves:output_type -> trillian.QueueLeavesResponse
+	20, // 61: trillian.TrillianLog.AddSequencedLeaves:output_type -> trillian.AddSequencedLeavesResponse
+	22, // 62: trillian.TrillianLog.GetLeavesByIndex:output_type -> trillian.GetLeavesByIndexResponse
+	24, // 63: trillian.TrillianLog.GetLeavesByRange:output_type -> trillian.GetLeavesByRangeResponse
+	52, // [52:64] is the sub-list for method output_type
+	40, // [40:52] is the sub-list for method input_type
+	40, // [40:40] is the sub-list for extension type_name
+	40, // [40:40] is the sub-list for extension extendee
+	0,  // [0:40] is the sub-list for field type_name
 }
 
 func init() { file_trillian_log_api_proto_init() }
@@ -2543,30 +2412,6 @@ func file_trillian_log_api_proto_init() {
 			}
 		}
 		file_trillian_log_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSequencedLeafCountRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_trillian_log_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSequencedLeafCountResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_trillian_log_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetEntryAndProofRequest); i {
 			case 0:
 				return &v.state
@@ -2578,7 +2423,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetEntryAndProofResponse); i {
 			case 0:
 				return &v.state
@@ -2590,7 +2435,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*InitLogRequest); i {
 			case 0:
 				return &v.state
@@ -2602,7 +2447,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*InitLogResponse); i {
 			case 0:
 				return &v.state
@@ -2614,7 +2459,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*QueueLeavesRequest); i {
 			case 0:
 				return &v.state
@@ -2626,7 +2471,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*QueueLeavesResponse); i {
 			case 0:
 				return &v.state
@@ -2638,7 +2483,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*AddSequencedLeavesRequest); i {
 			case 0:
 				return &v.state
@@ -2650,7 +2495,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*AddSequencedLeavesResponse); i {
 			case 0:
 				return &v.state
@@ -2662,7 +2507,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetLeavesByIndexRequest); i {
 			case 0:
 				return &v.state
@@ -2674,7 +2519,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetLeavesByIndexResponse); i {
 			case 0:
 				return &v.state
@@ -2686,7 +2531,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetLeavesByRangeRequest); i {
 			case 0:
 				return &v.state
@@ -2698,7 +2543,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetLeavesByRangeResponse); i {
 			case 0:
 				return &v.state
@@ -2710,7 +2555,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*QueuedLogLeaf); i {
 			case 0:
 				return &v.state
@@ -2722,7 +2567,7 @@ func file_trillian_log_api_proto_init() {
 				return nil
 			}
 		}
-		file_trillian_log_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+		file_trillian_log_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*LogLeaf); i {
 			case 0:
 				return &v.state
@@ -2741,7 +2586,7 @@ func file_trillian_log_api_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_trillian_log_api_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   29,
+			NumMessages:   27,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
@@ -2798,14 +2643,6 @@ type TrillianLogClient interface {
 	// If the earlier tree size is larger than the server is aware of,
 	// an InvalidArgument error is returned.
 	GetLatestSignedLogRoot(ctx context.Context, in *GetLatestSignedLogRootRequest, opts ...grpc.CallOption) (*GetLatestSignedLogRootResponse, error)
-	// GetSequencedLeafCount returns the total number of leaves that have been
-	// integrated into the given tree.
-	//
-	// DO NOT USE - FOR DEBUGGING/TEST ONLY
-	//
-	// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-	// use the tree size field within.)
-	GetSequencedLeafCount(ctx context.Context, in *GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*GetSequencedLeafCountResponse, error)
 	// GetEntryAndProof returns a log leaf and the corresponding inclusion proof
 	// to a specified tree size, for a given leaf index in a particular tree.
 	//
@@ -2892,15 +2729,6 @@ func (c *trillianLogClient) GetLatestSignedLogRoot(ctx context.Context, in *GetL
 	return out, nil
 }
 
-func (c *trillianLogClient) GetSequencedLeafCount(ctx context.Context, in *GetSequencedLeafCountRequest, opts ...grpc.CallOption) (*GetSequencedLeafCountResponse, error) {
-	out := new(GetSequencedLeafCountResponse)
-	err := c.cc.Invoke(ctx, "/trillian.TrillianLog/GetSequencedLeafCount", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 func (c *trillianLogClient) GetEntryAndProof(ctx context.Context, in *GetEntryAndProofRequest, opts ...grpc.CallOption) (*GetEntryAndProofResponse, error) {
 	out := new(GetEntryAndProofResponse)
 	err := c.cc.Invoke(ctx, "/trillian.TrillianLog/GetEntryAndProof", in, out, opts...)
@@ -2988,14 +2816,6 @@ type TrillianLogServer interface {
 	// If the earlier tree size is larger than the server is aware of,
 	// an InvalidArgument error is returned.
 	GetLatestSignedLogRoot(context.Context, *GetLatestSignedLogRootRequest) (*GetLatestSignedLogRootResponse, error)
-	// GetSequencedLeafCount returns the total number of leaves that have been
-	// integrated into the given tree.
-	//
-	// DO NOT USE - FOR DEBUGGING/TEST ONLY
-	//
-	// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-	// use the tree size field within.)
-	GetSequencedLeafCount(context.Context, *GetSequencedLeafCountRequest) (*GetSequencedLeafCountResponse, error)
 	// GetEntryAndProof returns a log leaf and the corresponding inclusion proof
 	// to a specified tree size, for a given leaf index in a particular tree.
 	//
@@ -3042,9 +2862,6 @@ func (*UnimplementedTrillianLogServer) GetConsistencyProof(context.Context, *Get
 func (*UnimplementedTrillianLogServer) GetLatestSignedLogRoot(context.Context, *GetLatestSignedLogRootRequest) (*GetLatestSignedLogRootResponse, error) {
 	return nil, status1.Errorf(codes.Unimplemented, "method GetLatestSignedLogRoot not implemented")
 }
-func (*UnimplementedTrillianLogServer) GetSequencedLeafCount(context.Context, *GetSequencedLeafCountRequest) (*GetSequencedLeafCountResponse, error) {
-	return nil, status1.Errorf(codes.Unimplemented, "method GetSequencedLeafCount not implemented")
-}
 func (*UnimplementedTrillianLogServer) GetEntryAndProof(context.Context, *GetEntryAndProofRequest) (*GetEntryAndProofResponse, error) {
 	return nil, status1.Errorf(codes.Unimplemented, "method GetEntryAndProof not implemented")
 }
@@ -3176,24 +2993,6 @@ func _TrillianLog_GetLatestSignedLogRoot_Handler(srv interface{}, ctx context.Co
 	return interceptor(ctx, in, info, handler)
 }
 
-func _TrillianLog_GetSequencedLeafCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(GetSequencedLeafCountRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(TrillianLogServer).GetSequencedLeafCount(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/trillian.TrillianLog/GetSequencedLeafCount",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(TrillianLogServer).GetSequencedLeafCount(ctx, req.(*GetSequencedLeafCountRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 func _TrillianLog_GetEntryAndProof_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetEntryAndProofRequest)
 	if err := dec(in); err != nil {
@@ -3330,10 +3129,6 @@ var _TrillianLog_serviceDesc = grpc.ServiceDesc{
 			MethodName: "GetLatestSignedLogRoot",
 			Handler:    _TrillianLog_GetLatestSignedLogRoot_Handler,
 		},
-		{
-			MethodName: "GetSequencedLeafCount",
-			Handler:    _TrillianLog_GetSequencedLeafCount_Handler,
-		},
 		{
 			MethodName: "GetEntryAndProof",
 			Handler:    _TrillianLog_GetEntryAndProof_Handler,
diff --git a/trillian_log_api.proto b/trillian_log_api.proto
index 5657750c..1dcb3e9f 100644
--- a/trillian_log_api.proto
+++ b/trillian_log_api.proto
@@ -124,20 +124,6 @@ service TrillianLog {
     };
   }
 
-  // GetSequencedLeafCount returns the total number of leaves that have been
-  // integrated into the given tree.
-  //
-  // DO NOT USE - FOR DEBUGGING/TEST ONLY
-  //
-  // (Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-  // use the tree size field within.)
-  rpc GetSequencedLeafCount(GetSequencedLeafCountRequest)
-      returns (GetSequencedLeafCountResponse) {
-    option (google.api.http) = {
-      get: "/v1beta1/logs/{log_id}/leaves:sequenced_count"
-    };
-  }
-
   // GetEntryAndProof returns a log leaf and the corresponding inclusion proof
   // to a specified tree size, for a given leaf index in a particular tree.
   //
@@ -295,19 +281,6 @@ message GetLatestSignedLogRootResponse {
   Proof proof = 3;
 }
 
-// DO NOT USE - FOR DEBUGGING/TEST ONLY
-//
-// (Use GetLatestSignedLogRoot then de-serialize the Log Root and use
-// use the tree size field within.)
-message GetSequencedLeafCountRequest {
-  int64 log_id = 1;
-  ChargeTo charge_to = 2;
-}
-
-message GetSequencedLeafCountResponse {
-  int64 leaf_count = 2;
-}
-
 message GetEntryAndProofRequest {
   int64 log_id = 1;
   int64 leaf_index = 2;


Test patch:
diff --git a/server/log_rpc_server_test.go b/server/log_rpc_server_test.go
index 626b5828..2726b68c 100644
--- a/server/log_rpc_server_test.go
+++ b/server/log_rpc_server_test.go
@@ -1331,82 +1331,6 @@ func TestGetEntryAndProof(t *testing.T) {
 	}
 }
 
-func TestGetSequencedLeafCountBeginTXFails(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage,
-		func(t *storage.MockLogTreeTX) {
-			t.EXPECT().Close().Return(nil)
-		},
-		func(s *TrillianLogRPCServer) error {
-			_, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1})
-			return err
-		})
-
-	test.executeBeginFailsTest(t, logID1)
-}
-
-func TestGetSequencedLeafCountStorageFails(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage,
-		func(t *storage.MockLogTreeTX) {
-			t.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(0), errors.New("STORAGE"))
-		},
-		func(s *TrillianLogRPCServer) error {
-			_, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1})
-			return err
-		})
-
-	test.executeStorageFailureTest(t, logID1)
-}
-
-func TestGetSequencedLeafCountCommitFails(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	test := newParameterizedTest(ctrl, "GetSequencedLeafCount", readOnly, nopStorage,
-		func(t *storage.MockLogTreeTX) {
-			t.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(27), nil)
-		},
-		func(s *TrillianLogRPCServer) error {
-			_, err := s.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1})
-			return err
-		})
-
-	test.executeCommitFailsTest(t, logID1)
-}
-
-func TestGetSequencedLeafCount(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	fakeStorage := storage.NewMockLogStorage(ctrl)
-	mockTX := storage.NewMockLogTreeTX(ctrl)
-	fakeStorage.EXPECT().SnapshotForTree(gomock.Any(), cmpMatcher{tree1}).Return(mockTX, nil)
-
-	mockTX.EXPECT().GetSequencedLeafCount(gomock.Any()).Return(int64(268), nil)
-	mockTX.EXPECT().Commit(gomock.Any()).Return(nil)
-	mockTX.EXPECT().Close().Return(nil)
-
-	registry := extension.Registry{
-		AdminStorage: fakeAdminStorage(ctrl, storageParams{treeID: logID1, numSnapshots: 1}),
-		LogStorage:   fakeStorage,
-	}
-	server := NewTrillianLogRPCServer(registry, fakeTimeSource)
-
-	response, err := server.GetSequencedLeafCount(context.Background(), &trillian.GetSequencedLeafCountRequest{LogId: logID1})
-	if err != nil {
-		t.Fatalf("expected no error getting leaf count but got: %v", err)
-	}
-
-	if got, want := response.LeafCount, int64(268); got != want {
-		t.Fatalf("expected leaf count: %d but got: %d", want, got)
-	}
-}
-
 type consistProofTest struct {
 	req         *trillian.GetConsistencyProofRequest
 	errStr      string
@@ -1976,37 +1900,6 @@ func newParameterizedTest(ctrl *gomock.Controller, operation string, m txMode, p
 	return &parameterizedTest{ctrl, operation, m, false /* preordered */, prepareStorage, prepareTx, makeRPC}
 }
 
-func (p *parameterizedTest) executeCommitFailsTest(t *testing.T, logID int64) {
-	t.Helper()
-
-	mockTX := storage.NewMockLogTreeTX(p.ctrl)
-	fakeStorage := &stestonly.FakeLogStorage{}
-
-	switch p.mode {
-	case readOnly:
-		fakeStorage.ReadOnlyTX = mockTX
-	case readWrite:
-		fakeStorage.TX = mockTX
-	}
-	if p.mode != noTX {
-		p.prepareTX(mockTX)
-		mockTX.EXPECT().Commit(gomock.Any()).Return(errors.New("bang"))
-		mockTX.EXPECT().Close().Return(errors.New("bang"))
-		mockTX.EXPECT().IsOpen().AnyTimes().Return(false)
-	}
-
-	registry := extension.Registry{
-		AdminStorage: fakeAdminStorage(p.ctrl, storageParams{logID, p.preordered, 1, nil, nil, false}),
-		LogStorage:   fakeStorage,
-	}
-	server := NewTrillianLogRPCServer(registry, fakeTimeSource)
-
-	err := p.makeRPC(server)
-	if err == nil {
-		t.Fatalf("returned OK when commit failed: %s", p.operation)
-	}
-}
-
 func (p *parameterizedTest) executeInvalidLogIDTest(t *testing.T, snapshot bool) {
 	badLogErr := errors.New("BADLOGID")
 
@@ -2060,32 +1953,6 @@ func (p *parameterizedTest) executeStorageFailureTest(t *testing.T, logID int64)
 	}
 }
 
-func (p *parameterizedTest) executeBeginFailsTest(t *testing.T, logID int64) {
-	logStorage := storage.NewMockLogStorage(p.ctrl)
-	logTX := storage.NewMockLogTreeTX(p.ctrl)
-
-	switch p.mode {
-	case readOnly:
-		logStorage.EXPECT().SnapshotForTree(gomock.Any(), cmpMatcher{tree1}).Return(logTX, errors.New("TX"))
-	case readWrite:
-		logStorage.EXPECT().ReadWriteTransaction(gomock.Any(), logID, gomock.Any()).Return(errors.New("TX"))
-	}
-
-	if p.prepareTX != nil {
-		p.prepareTX(logTX)
-	}
-
-	registry := extension.Registry{
-		AdminStorage: fakeAdminStorage(p.ctrl, storageParams{logID, p.preordered, 1, nil, nil, false}),
-		LogStorage:   logStorage,
-	}
-	server := NewTrillianLogRPCServer(registry, fakeTimeSource)
-
-	if err := p.makeRPC(server); err == nil || !strings.Contains(err.Error(), "TX") {
-		t.Fatalf("Returned wrong error response when begin failed: %v", err)
-	}
-}
-
 type storageParams struct {
 	treeID       int64
 	preordered   bool
diff --git a/testonly/tmock/mock_log_server.go b/testonly/tmock/mock_log_server.go
index acd81ce0..dfc2a2ff 100644
--- a/testonly/tmock/mock_log_server.go
+++ b/testonly/tmock/mock_log_server.go
@@ -170,21 +170,6 @@ func (mr *MockTrillianLogServerMockRecorder) GetLeavesByRange(arg0, arg1 interfa
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLeavesByRange", reflect.TypeOf((*MockTrillianLogServer)(nil).GetLeavesByRange), arg0, arg1)
 }
 
-// GetSequencedLeafCount mocks base method.
-func (m *MockTrillianLogServer) GetSequencedLeafCount(arg0 context.Context, arg1 *trillian.GetSequencedLeafCountRequest) (*trillian.GetSequencedLeafCountResponse, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "GetSequencedLeafCount", arg0, arg1)
-	ret0, _ := ret[0].(*trillian.GetSequencedLeafCountResponse)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// GetSequencedLeafCount indicates an expected call of GetSequencedLeafCount.
-func (mr *MockTrillianLogServerMockRecorder) GetSequencedLeafCount(arg0, arg1 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSequencedLeafCount", reflect.TypeOf((*MockTrillianLogServer)(nil).GetSequencedLeafCount), arg0, arg1)
-}
-
 // InitLog mocks base method.
 func (m *MockTrillianLogServer) InitLog(arg0 context.Context, arg1 *trillian.InitLogRequest) (*trillian.InitLogResponse, error) {
 	m.ctrl.T.Helper()