From 43f9f406b34898d0a5eec66c6cd60bcff3decbfd Mon Sep 17 00:00:00 2001 From: otherview Date: Tue, 19 Sep 2023 19:10:06 +0100 Subject: [PATCH 1/5] Guardian now produces rollup based on interval time and available batches size --- go/common/enclave.go | 3 + go/common/rpc/generated/enclave.pb.go | 1800 +++++++++++--------- go/common/rpc/generated/enclave.proto | 11 + go/common/rpc/generated/enclave_grpc.pb.go | 36 + go/config/host_config.go | 5 + go/enclave/components/batch_registry.go | 39 +- go/enclave/components/interfaces.go | 3 + go/enclave/enclave.go | 21 + go/enclave/nodetype/interfaces.go | 3 + go/enclave/nodetype/sequencer.go | 9 + go/enclave/rpc_server.go | 17 + go/enclave/storage/enclavedb/batch.go | 30 +- go/enclave/storage/interfaces.go | 2 + go/enclave/storage/storage.go | 6 + go/host/container/cli.go | 2 + go/host/container/cli_flags.go | 2 + go/host/enclave/guardian.go | 50 +- go/host/rpc/enclaverpc/enclave_client.go | 19 + integration/simulation/devnetwork/node.go | 1 + 19 files changed, 1230 insertions(+), 829 deletions(-) diff --git a/go/common/enclave.go b/go/common/enclave.go index ca78f79de0..4a2a3ea2d2 100644 --- a/go/common/enclave.go +++ b/go/common/enclave.go @@ -117,6 +117,9 @@ type Enclave interface { // or panic otherwise. CreateRollup(fromSeqNo uint64) (*ExtRollup, SystemError) + // GetBatchesAfterSize returns the size of batches available to create a new rollup from a fromSeqNo batch no + GetBatchesAfterSize(fromSeqNo uint64) (uint64, SystemError) + // DebugTraceTransaction returns the trace of a transaction DebugTraceTransaction(hash gethcommon.Hash, config *tracers.TraceConfig) (json.RawMessage, SystemError) diff --git a/go/common/rpc/generated/enclave.pb.go b/go/common/rpc/generated/enclave.pb.go index 847f1336ff..df1198f54c 100644 --- a/go/common/rpc/generated/enclave.pb.go +++ b/go/common/rpc/generated/enclave.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.21.9 // source: enclave.proto @@ -1060,6 +1060,108 @@ func (x *CreateRollupResponse) GetSystemError() *SystemError { return nil } +type GetAvailableBatchesCountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FromSequenceNumber *uint64 `protobuf:"varint,1,opt,name=fromSequenceNumber,proto3,oneof" json:"fromSequenceNumber,omitempty"` +} + +func (x *GetAvailableBatchesCountRequest) Reset() { + *x = GetAvailableBatchesCountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_enclave_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAvailableBatchesCountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAvailableBatchesCountRequest) ProtoMessage() {} + +func (x *GetAvailableBatchesCountRequest) ProtoReflect() protoreflect.Message { + mi := &file_enclave_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAvailableBatchesCountRequest.ProtoReflect.Descriptor instead. +func (*GetAvailableBatchesCountRequest) Descriptor() ([]byte, []int) { + return file_enclave_proto_rawDescGZIP(), []int{21} +} + +func (x *GetAvailableBatchesCountRequest) GetFromSequenceNumber() uint64 { + if x != nil && x.FromSequenceNumber != nil { + return *x.FromSequenceNumber + } + return 0 +} + +type GetAvailableBatchesCountResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + SystemError *SystemError `protobuf:"bytes,2,opt,name=systemError,proto3" json:"systemError,omitempty"` +} + +func (x *GetAvailableBatchesCountResponse) Reset() { + *x = GetAvailableBatchesCountResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_enclave_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAvailableBatchesCountResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAvailableBatchesCountResponse) ProtoMessage() {} + +func (x *GetAvailableBatchesCountResponse) ProtoReflect() protoreflect.Message { + mi := &file_enclave_proto_msgTypes[22] + 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 GetAvailableBatchesCountResponse.ProtoReflect.Descriptor instead. +func (*GetAvailableBatchesCountResponse) Descriptor() ([]byte, []int) { + return file_enclave_proto_rawDescGZIP(), []int{22} +} + +func (x *GetAvailableBatchesCountResponse) GetCount() uint64 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetAvailableBatchesCountResponse) GetSystemError() *SystemError { + if x != nil { + return x.SystemError + } + return nil +} + type StatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1069,7 +1171,7 @@ type StatusRequest struct { func (x *StatusRequest) Reset() { *x = StatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[21] + mi := &file_enclave_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1082,7 +1184,7 @@ func (x *StatusRequest) String() string { func (*StatusRequest) ProtoMessage() {} func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[21] + mi := &file_enclave_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1095,7 +1197,7 @@ func (x *StatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead. func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{21} + return file_enclave_proto_rawDescGZIP(), []int{23} } type StatusResponse struct { @@ -1112,7 +1214,7 @@ type StatusResponse struct { func (x *StatusResponse) Reset() { *x = StatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[22] + mi := &file_enclave_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1125,7 +1227,7 @@ func (x *StatusResponse) String() string { func (*StatusResponse) ProtoMessage() {} func (x *StatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[22] + mi := &file_enclave_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1138,7 +1240,7 @@ func (x *StatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead. func (*StatusResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{22} + return file_enclave_proto_rawDescGZIP(), []int{24} } func (x *StatusResponse) GetStatusCode() int32 { @@ -1178,7 +1280,7 @@ type AttestationRequest struct { func (x *AttestationRequest) Reset() { *x = AttestationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[23] + mi := &file_enclave_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1191,7 +1293,7 @@ func (x *AttestationRequest) String() string { func (*AttestationRequest) ProtoMessage() {} func (x *AttestationRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[23] + mi := &file_enclave_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1204,7 +1306,7 @@ func (x *AttestationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationRequest.ProtoReflect.Descriptor instead. func (*AttestationRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{23} + return file_enclave_proto_rawDescGZIP(), []int{25} } type AttestationResponse struct { @@ -1219,7 +1321,7 @@ type AttestationResponse struct { func (x *AttestationResponse) Reset() { *x = AttestationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[24] + mi := &file_enclave_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1334,7 @@ func (x *AttestationResponse) String() string { func (*AttestationResponse) ProtoMessage() {} func (x *AttestationResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[24] + mi := &file_enclave_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1347,7 @@ func (x *AttestationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationResponse.ProtoReflect.Descriptor instead. func (*AttestationResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{24} + return file_enclave_proto_rawDescGZIP(), []int{26} } func (x *AttestationResponse) GetAttestationReportMsg() *AttestationReportMsg { @@ -1271,7 +1373,7 @@ type GenerateSecretRequest struct { func (x *GenerateSecretRequest) Reset() { *x = GenerateSecretRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[25] + mi := &file_enclave_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1284,7 +1386,7 @@ func (x *GenerateSecretRequest) String() string { func (*GenerateSecretRequest) ProtoMessage() {} func (x *GenerateSecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[25] + mi := &file_enclave_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1297,7 +1399,7 @@ func (x *GenerateSecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSecretRequest.ProtoReflect.Descriptor instead. func (*GenerateSecretRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{25} + return file_enclave_proto_rawDescGZIP(), []int{27} } type GenerateSecretResponse struct { @@ -1312,7 +1414,7 @@ type GenerateSecretResponse struct { func (x *GenerateSecretResponse) Reset() { *x = GenerateSecretResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[26] + mi := &file_enclave_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1325,7 +1427,7 @@ func (x *GenerateSecretResponse) String() string { func (*GenerateSecretResponse) ProtoMessage() {} func (x *GenerateSecretResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[26] + mi := &file_enclave_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1338,7 +1440,7 @@ func (x *GenerateSecretResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSecretResponse.ProtoReflect.Descriptor instead. func (*GenerateSecretResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{26} + return file_enclave_proto_rawDescGZIP(), []int{28} } func (x *GenerateSecretResponse) GetEncryptedSharedEnclaveSecret() []byte { @@ -1366,7 +1468,7 @@ type InitEnclaveRequest struct { func (x *InitEnclaveRequest) Reset() { *x = InitEnclaveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[27] + mi := &file_enclave_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1379,7 +1481,7 @@ func (x *InitEnclaveRequest) String() string { func (*InitEnclaveRequest) ProtoMessage() {} func (x *InitEnclaveRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[27] + mi := &file_enclave_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1392,7 +1494,7 @@ func (x *InitEnclaveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitEnclaveRequest.ProtoReflect.Descriptor instead. func (*InitEnclaveRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{27} + return file_enclave_proto_rawDescGZIP(), []int{29} } func (x *InitEnclaveRequest) GetEncryptedSharedEnclaveSecret() []byte { @@ -1413,7 +1515,7 @@ type InitEnclaveResponse struct { func (x *InitEnclaveResponse) Reset() { *x = InitEnclaveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[28] + mi := &file_enclave_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1426,7 +1528,7 @@ func (x *InitEnclaveResponse) String() string { func (*InitEnclaveResponse) ProtoMessage() {} func (x *InitEnclaveResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[28] + mi := &file_enclave_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1439,7 +1541,7 @@ func (x *InitEnclaveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitEnclaveResponse.ProtoReflect.Descriptor instead. func (*InitEnclaveResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{28} + return file_enclave_proto_rawDescGZIP(), []int{30} } func (x *InitEnclaveResponse) GetSystemError() *SystemError { @@ -1460,7 +1562,7 @@ type StartRequest struct { func (x *StartRequest) Reset() { *x = StartRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[29] + mi := &file_enclave_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1473,7 +1575,7 @@ func (x *StartRequest) String() string { func (*StartRequest) ProtoMessage() {} func (x *StartRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[29] + mi := &file_enclave_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,7 +1588,7 @@ func (x *StartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartRequest.ProtoReflect.Descriptor instead. func (*StartRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{29} + return file_enclave_proto_rawDescGZIP(), []int{31} } func (x *StartRequest) GetEncodedBlock() []byte { @@ -1507,7 +1609,7 @@ type StartResponse struct { func (x *StartResponse) Reset() { *x = StartResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[30] + mi := &file_enclave_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1520,7 +1622,7 @@ func (x *StartResponse) String() string { func (*StartResponse) ProtoMessage() {} func (x *StartResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[30] + mi := &file_enclave_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1533,7 +1635,7 @@ func (x *StartResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartResponse.ProtoReflect.Descriptor instead. func (*StartResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{30} + return file_enclave_proto_rawDescGZIP(), []int{32} } func (x *StartResponse) GetSystemError() *SystemError { @@ -1556,7 +1658,7 @@ type SubmitBlockRequest struct { func (x *SubmitBlockRequest) Reset() { *x = SubmitBlockRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[31] + mi := &file_enclave_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1569,7 +1671,7 @@ func (x *SubmitBlockRequest) String() string { func (*SubmitBlockRequest) ProtoMessage() {} func (x *SubmitBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[31] + mi := &file_enclave_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1582,7 +1684,7 @@ func (x *SubmitBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockRequest.ProtoReflect.Descriptor instead. func (*SubmitBlockRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{31} + return file_enclave_proto_rawDescGZIP(), []int{33} } func (x *SubmitBlockRequest) GetEncodedBlock() []byte { @@ -1618,7 +1720,7 @@ type SubmitBlockResponse struct { func (x *SubmitBlockResponse) Reset() { *x = SubmitBlockResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[32] + mi := &file_enclave_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1733,7 @@ func (x *SubmitBlockResponse) String() string { func (*SubmitBlockResponse) ProtoMessage() {} func (x *SubmitBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[32] + mi := &file_enclave_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1746,7 @@ func (x *SubmitBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockResponse.ProtoReflect.Descriptor instead. func (*SubmitBlockResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{32} + return file_enclave_proto_rawDescGZIP(), []int{34} } func (x *SubmitBlockResponse) GetBlockSubmissionResponse() *BlockSubmissionResponseMsg { @@ -1672,7 +1774,7 @@ type SubmitTxRequest struct { func (x *SubmitTxRequest) Reset() { *x = SubmitTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[33] + mi := &file_enclave_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1787,7 @@ func (x *SubmitTxRequest) String() string { func (*SubmitTxRequest) ProtoMessage() {} func (x *SubmitTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[33] + mi := &file_enclave_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1800,7 @@ func (x *SubmitTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTxRequest.ProtoReflect.Descriptor instead. func (*SubmitTxRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{33} + return file_enclave_proto_rawDescGZIP(), []int{35} } func (x *SubmitTxRequest) GetEncryptedTx() []byte { @@ -1720,7 +1822,7 @@ type SubmitTxResponse struct { func (x *SubmitTxResponse) Reset() { *x = SubmitTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[34] + mi := &file_enclave_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1733,7 +1835,7 @@ func (x *SubmitTxResponse) String() string { func (*SubmitTxResponse) ProtoMessage() {} func (x *SubmitTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[34] + mi := &file_enclave_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1746,7 +1848,7 @@ func (x *SubmitTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTxResponse.ProtoReflect.Descriptor instead. func (*SubmitTxResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{34} + return file_enclave_proto_rawDescGZIP(), []int{36} } func (x *SubmitTxResponse) GetEncodedEnclaveResponse() []byte { @@ -1774,7 +1876,7 @@ type SubmitBatchRequest struct { func (x *SubmitBatchRequest) Reset() { *x = SubmitBatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[35] + mi := &file_enclave_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1787,7 +1889,7 @@ func (x *SubmitBatchRequest) String() string { func (*SubmitBatchRequest) ProtoMessage() {} func (x *SubmitBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[35] + mi := &file_enclave_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1800,7 +1902,7 @@ func (x *SubmitBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBatchRequest.ProtoReflect.Descriptor instead. func (*SubmitBatchRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{35} + return file_enclave_proto_rawDescGZIP(), []int{37} } func (x *SubmitBatchRequest) GetBatch() *ExtBatchMsg { @@ -1821,7 +1923,7 @@ type SubmitBatchResponse struct { func (x *SubmitBatchResponse) Reset() { *x = SubmitBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[36] + mi := &file_enclave_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1834,7 +1936,7 @@ func (x *SubmitBatchResponse) String() string { func (*SubmitBatchResponse) ProtoMessage() {} func (x *SubmitBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[36] + mi := &file_enclave_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1847,7 +1949,7 @@ func (x *SubmitBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBatchResponse.ProtoReflect.Descriptor instead. func (*SubmitBatchResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{36} + return file_enclave_proto_rawDescGZIP(), []int{38} } func (x *SubmitBatchResponse) GetSystemError() *SystemError { @@ -1868,7 +1970,7 @@ type ObsCallRequest struct { func (x *ObsCallRequest) Reset() { *x = ObsCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[37] + mi := &file_enclave_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1881,7 +1983,7 @@ func (x *ObsCallRequest) String() string { func (*ObsCallRequest) ProtoMessage() {} func (x *ObsCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[37] + mi := &file_enclave_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1894,7 +1996,7 @@ func (x *ObsCallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ObsCallRequest.ProtoReflect.Descriptor instead. func (*ObsCallRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{37} + return file_enclave_proto_rawDescGZIP(), []int{39} } func (x *ObsCallRequest) GetEncryptedParams() []byte { @@ -1916,7 +2018,7 @@ type ObsCallResponse struct { func (x *ObsCallResponse) Reset() { *x = ObsCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[38] + mi := &file_enclave_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1929,7 +2031,7 @@ func (x *ObsCallResponse) String() string { func (*ObsCallResponse) ProtoMessage() {} func (x *ObsCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[38] + mi := &file_enclave_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1942,7 +2044,7 @@ func (x *ObsCallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ObsCallResponse.ProtoReflect.Descriptor instead. func (*ObsCallResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{38} + return file_enclave_proto_rawDescGZIP(), []int{40} } func (x *ObsCallResponse) GetEncodedEnclaveResponse() []byte { @@ -1970,7 +2072,7 @@ type GetTransactionCountRequest struct { func (x *GetTransactionCountRequest) Reset() { *x = GetTransactionCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[39] + mi := &file_enclave_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1983,7 +2085,7 @@ func (x *GetTransactionCountRequest) String() string { func (*GetTransactionCountRequest) ProtoMessage() {} func (x *GetTransactionCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[39] + mi := &file_enclave_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1996,7 +2098,7 @@ func (x *GetTransactionCountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionCountRequest.ProtoReflect.Descriptor instead. func (*GetTransactionCountRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{39} + return file_enclave_proto_rawDescGZIP(), []int{41} } func (x *GetTransactionCountRequest) GetEncryptedParams() []byte { @@ -2018,7 +2120,7 @@ type GetTransactionCountResponse struct { func (x *GetTransactionCountResponse) Reset() { *x = GetTransactionCountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[40] + mi := &file_enclave_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2031,7 +2133,7 @@ func (x *GetTransactionCountResponse) String() string { func (*GetTransactionCountResponse) ProtoMessage() {} func (x *GetTransactionCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[40] + mi := &file_enclave_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2044,7 +2146,7 @@ func (x *GetTransactionCountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionCountResponse.ProtoReflect.Descriptor instead. func (*GetTransactionCountResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{40} + return file_enclave_proto_rawDescGZIP(), []int{42} } func (x *GetTransactionCountResponse) GetEncodedEnclaveResponse() []byte { @@ -2070,7 +2172,7 @@ type StopRequest struct { func (x *StopRequest) Reset() { *x = StopRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[41] + mi := &file_enclave_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2083,7 +2185,7 @@ func (x *StopRequest) String() string { func (*StopRequest) ProtoMessage() {} func (x *StopRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[41] + mi := &file_enclave_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2096,7 +2198,7 @@ func (x *StopRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopRequest.ProtoReflect.Descriptor instead. func (*StopRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{41} + return file_enclave_proto_rawDescGZIP(), []int{43} } type StopResponse struct { @@ -2110,7 +2212,7 @@ type StopResponse struct { func (x *StopResponse) Reset() { *x = StopResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[42] + mi := &file_enclave_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2123,7 +2225,7 @@ func (x *StopResponse) String() string { func (*StopResponse) ProtoMessage() {} func (x *StopResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[42] + mi := &file_enclave_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2136,7 +2238,7 @@ func (x *StopResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopResponse.ProtoReflect.Descriptor instead. func (*StopResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{42} + return file_enclave_proto_rawDescGZIP(), []int{44} } func (x *StopResponse) GetSystemError() *SystemError { @@ -2157,7 +2259,7 @@ type GetTransactionRequest struct { func (x *GetTransactionRequest) Reset() { *x = GetTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[43] + mi := &file_enclave_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2170,7 +2272,7 @@ func (x *GetTransactionRequest) String() string { func (*GetTransactionRequest) ProtoMessage() {} func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[43] + mi := &file_enclave_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2183,7 +2285,7 @@ func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionRequest.ProtoReflect.Descriptor instead. func (*GetTransactionRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{43} + return file_enclave_proto_rawDescGZIP(), []int{45} } func (x *GetTransactionRequest) GetEncryptedParams() []byte { @@ -2205,7 +2307,7 @@ type GetTransactionResponse struct { func (x *GetTransactionResponse) Reset() { *x = GetTransactionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[44] + mi := &file_enclave_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2218,7 +2320,7 @@ func (x *GetTransactionResponse) String() string { func (*GetTransactionResponse) ProtoMessage() {} func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[44] + mi := &file_enclave_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2231,7 +2333,7 @@ func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionResponse.ProtoReflect.Descriptor instead. func (*GetTransactionResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{44} + return file_enclave_proto_rawDescGZIP(), []int{46} } func (x *GetTransactionResponse) GetEncodedEnclaveResponse() []byte { @@ -2259,7 +2361,7 @@ type GetTransactionReceiptRequest struct { func (x *GetTransactionReceiptRequest) Reset() { *x = GetTransactionReceiptRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[45] + mi := &file_enclave_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2272,7 +2374,7 @@ func (x *GetTransactionReceiptRequest) String() string { func (*GetTransactionReceiptRequest) ProtoMessage() {} func (x *GetTransactionReceiptRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[45] + mi := &file_enclave_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2285,7 +2387,7 @@ func (x *GetTransactionReceiptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionReceiptRequest.ProtoReflect.Descriptor instead. func (*GetTransactionReceiptRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{45} + return file_enclave_proto_rawDescGZIP(), []int{47} } func (x *GetTransactionReceiptRequest) GetEncryptedParams() []byte { @@ -2307,7 +2409,7 @@ type GetTransactionReceiptResponse struct { func (x *GetTransactionReceiptResponse) Reset() { *x = GetTransactionReceiptResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[46] + mi := &file_enclave_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2320,7 +2422,7 @@ func (x *GetTransactionReceiptResponse) String() string { func (*GetTransactionReceiptResponse) ProtoMessage() {} func (x *GetTransactionReceiptResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[46] + mi := &file_enclave_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2333,7 +2435,7 @@ func (x *GetTransactionReceiptResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionReceiptResponse.ProtoReflect.Descriptor instead. func (*GetTransactionReceiptResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{46} + return file_enclave_proto_rawDescGZIP(), []int{48} } func (x *GetTransactionReceiptResponse) GetEncodedEnclaveResponse() []byte { @@ -2361,7 +2463,7 @@ type GetBalanceRequest struct { func (x *GetBalanceRequest) Reset() { *x = GetBalanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[47] + mi := &file_enclave_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2374,7 +2476,7 @@ func (x *GetBalanceRequest) String() string { func (*GetBalanceRequest) ProtoMessage() {} func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[47] + mi := &file_enclave_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2387,7 +2489,7 @@ func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBalanceRequest.ProtoReflect.Descriptor instead. func (*GetBalanceRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{47} + return file_enclave_proto_rawDescGZIP(), []int{49} } func (x *GetBalanceRequest) GetEncryptedParams() []byte { @@ -2409,7 +2511,7 @@ type GetBalanceResponse struct { func (x *GetBalanceResponse) Reset() { *x = GetBalanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[48] + mi := &file_enclave_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2422,7 +2524,7 @@ func (x *GetBalanceResponse) String() string { func (*GetBalanceResponse) ProtoMessage() {} func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[48] + mi := &file_enclave_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2537,7 @@ func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBalanceResponse.ProtoReflect.Descriptor instead. func (*GetBalanceResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{48} + return file_enclave_proto_rawDescGZIP(), []int{50} } func (x *GetBalanceResponse) GetEncodedEnclaveResponse() []byte { @@ -2464,7 +2566,7 @@ type GetCodeRequest struct { func (x *GetCodeRequest) Reset() { *x = GetCodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[49] + mi := &file_enclave_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2579,7 @@ func (x *GetCodeRequest) String() string { func (*GetCodeRequest) ProtoMessage() {} func (x *GetCodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[49] + mi := &file_enclave_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2592,7 @@ func (x *GetCodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCodeRequest.ProtoReflect.Descriptor instead. func (*GetCodeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{49} + return file_enclave_proto_rawDescGZIP(), []int{51} } func (x *GetCodeRequest) GetAddress() []byte { @@ -2519,7 +2621,7 @@ type GetCodeResponse struct { func (x *GetCodeResponse) Reset() { *x = GetCodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[50] + mi := &file_enclave_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2532,7 +2634,7 @@ func (x *GetCodeResponse) String() string { func (*GetCodeResponse) ProtoMessage() {} func (x *GetCodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[50] + mi := &file_enclave_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2545,7 +2647,7 @@ func (x *GetCodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCodeResponse.ProtoReflect.Descriptor instead. func (*GetCodeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{50} + return file_enclave_proto_rawDescGZIP(), []int{52} } func (x *GetCodeResponse) GetCode() []byte { @@ -2574,7 +2676,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[51] + mi := &file_enclave_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2587,7 +2689,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[51] + mi := &file_enclave_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2600,7 +2702,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{51} + return file_enclave_proto_rawDescGZIP(), []int{53} } func (x *SubscribeRequest) GetId() []byte { @@ -2628,7 +2730,7 @@ type SubscribeResponse struct { func (x *SubscribeResponse) Reset() { *x = SubscribeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[52] + mi := &file_enclave_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2641,7 +2743,7 @@ func (x *SubscribeResponse) String() string { func (*SubscribeResponse) ProtoMessage() {} func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[52] + mi := &file_enclave_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2654,7 +2756,7 @@ func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeResponse.ProtoReflect.Descriptor instead. func (*SubscribeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{52} + return file_enclave_proto_rawDescGZIP(), []int{54} } func (x *SubscribeResponse) GetSystemError() *SystemError { @@ -2675,7 +2777,7 @@ type UnsubscribeRequest struct { func (x *UnsubscribeRequest) Reset() { *x = UnsubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[53] + mi := &file_enclave_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2688,7 +2790,7 @@ func (x *UnsubscribeRequest) String() string { func (*UnsubscribeRequest) ProtoMessage() {} func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[53] + mi := &file_enclave_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2701,7 +2803,7 @@ func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeRequest.ProtoReflect.Descriptor instead. func (*UnsubscribeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{53} + return file_enclave_proto_rawDescGZIP(), []int{55} } func (x *UnsubscribeRequest) GetId() []byte { @@ -2722,7 +2824,7 @@ type UnsubscribeResponse struct { func (x *UnsubscribeResponse) Reset() { *x = UnsubscribeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[54] + mi := &file_enclave_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2735,7 +2837,7 @@ func (x *UnsubscribeResponse) String() string { func (*UnsubscribeResponse) ProtoMessage() {} func (x *UnsubscribeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[54] + mi := &file_enclave_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2748,7 +2850,7 @@ func (x *UnsubscribeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeResponse.ProtoReflect.Descriptor instead. func (*UnsubscribeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{54} + return file_enclave_proto_rawDescGZIP(), []int{56} } func (x *UnsubscribeResponse) GetSystemError() *SystemError { @@ -2769,7 +2871,7 @@ type EstimateGasRequest struct { func (x *EstimateGasRequest) Reset() { *x = EstimateGasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[55] + mi := &file_enclave_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2782,7 +2884,7 @@ func (x *EstimateGasRequest) String() string { func (*EstimateGasRequest) ProtoMessage() {} func (x *EstimateGasRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[55] + mi := &file_enclave_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2795,7 +2897,7 @@ func (x *EstimateGasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateGasRequest.ProtoReflect.Descriptor instead. func (*EstimateGasRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{55} + return file_enclave_proto_rawDescGZIP(), []int{57} } func (x *EstimateGasRequest) GetEncryptedParams() []byte { @@ -2817,7 +2919,7 @@ type EstimateGasResponse struct { func (x *EstimateGasResponse) Reset() { *x = EstimateGasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[56] + mi := &file_enclave_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2830,7 +2932,7 @@ func (x *EstimateGasResponse) String() string { func (*EstimateGasResponse) ProtoMessage() {} func (x *EstimateGasResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[56] + mi := &file_enclave_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2843,7 +2945,7 @@ func (x *EstimateGasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateGasResponse.ProtoReflect.Descriptor instead. func (*EstimateGasResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{56} + return file_enclave_proto_rawDescGZIP(), []int{58} } func (x *EstimateGasResponse) GetEncodedEnclaveResponse() []byte { @@ -2871,7 +2973,7 @@ type GetLogsRequest struct { func (x *GetLogsRequest) Reset() { *x = GetLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[57] + mi := &file_enclave_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2884,7 +2986,7 @@ func (x *GetLogsRequest) String() string { func (*GetLogsRequest) ProtoMessage() {} func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[57] + mi := &file_enclave_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2897,7 +2999,7 @@ func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLogsRequest.ProtoReflect.Descriptor instead. func (*GetLogsRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{57} + return file_enclave_proto_rawDescGZIP(), []int{59} } func (x *GetLogsRequest) GetEncryptedParams() []byte { @@ -2919,7 +3021,7 @@ type GetLogsResponse struct { func (x *GetLogsResponse) Reset() { *x = GetLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[58] + mi := &file_enclave_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2932,7 +3034,7 @@ func (x *GetLogsResponse) String() string { func (*GetLogsResponse) ProtoMessage() {} func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[58] + mi := &file_enclave_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2945,7 +3047,7 @@ func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLogsResponse.ProtoReflect.Descriptor instead. func (*GetLogsResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{58} + return file_enclave_proto_rawDescGZIP(), []int{60} } func (x *GetLogsResponse) GetEncodedEnclaveResponse() []byte { @@ -2974,7 +3076,7 @@ type HealthCheckResponse struct { func (x *HealthCheckResponse) Reset() { *x = HealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[59] + mi := &file_enclave_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2987,7 +3089,7 @@ func (x *HealthCheckResponse) String() string { func (*HealthCheckResponse) ProtoMessage() {} func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[59] + mi := &file_enclave_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3000,7 +3102,7 @@ func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead. func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{59} + return file_enclave_proto_rawDescGZIP(), []int{61} } func (x *HealthCheckResponse) GetStatus() bool { @@ -3026,7 +3128,7 @@ type EmptyArgs struct { func (x *EmptyArgs) Reset() { *x = EmptyArgs{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[60] + mi := &file_enclave_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3039,7 +3141,7 @@ func (x *EmptyArgs) String() string { func (*EmptyArgs) ProtoMessage() {} func (x *EmptyArgs) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[60] + mi := &file_enclave_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3052,7 +3154,7 @@ func (x *EmptyArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use EmptyArgs.ProtoReflect.Descriptor instead. func (*EmptyArgs) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{60} + return file_enclave_proto_rawDescGZIP(), []int{62} } type AttestationReportMsg struct { @@ -3070,7 +3172,7 @@ type AttestationReportMsg struct { func (x *AttestationReportMsg) Reset() { *x = AttestationReportMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[61] + mi := &file_enclave_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3083,7 +3185,7 @@ func (x *AttestationReportMsg) String() string { func (*AttestationReportMsg) ProtoMessage() {} func (x *AttestationReportMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[61] + mi := &file_enclave_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3096,7 +3198,7 @@ func (x *AttestationReportMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationReportMsg.ProtoReflect.Descriptor instead. func (*AttestationReportMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{61} + return file_enclave_proto_rawDescGZIP(), []int{63} } func (x *AttestationReportMsg) GetReport() []byte { @@ -3146,7 +3248,7 @@ type BlockSubmissionResponseMsg struct { func (x *BlockSubmissionResponseMsg) Reset() { *x = BlockSubmissionResponseMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[62] + mi := &file_enclave_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3159,7 +3261,7 @@ func (x *BlockSubmissionResponseMsg) String() string { func (*BlockSubmissionResponseMsg) ProtoMessage() {} func (x *BlockSubmissionResponseMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[62] + mi := &file_enclave_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3172,7 +3274,7 @@ func (x *BlockSubmissionResponseMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockSubmissionResponseMsg.ProtoReflect.Descriptor instead. func (*BlockSubmissionResponseMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{62} + return file_enclave_proto_rawDescGZIP(), []int{64} } func (x *BlockSubmissionResponseMsg) GetProducedSecretResponses() []*SecretResponseMsg { @@ -3201,7 +3303,7 @@ type BlockSubmissionErrorMsg struct { func (x *BlockSubmissionErrorMsg) Reset() { *x = BlockSubmissionErrorMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[63] + mi := &file_enclave_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3214,7 +3316,7 @@ func (x *BlockSubmissionErrorMsg) String() string { func (*BlockSubmissionErrorMsg) ProtoMessage() {} func (x *BlockSubmissionErrorMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[63] + mi := &file_enclave_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3227,7 +3329,7 @@ func (x *BlockSubmissionErrorMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockSubmissionErrorMsg.ProtoReflect.Descriptor instead. func (*BlockSubmissionErrorMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{63} + return file_enclave_proto_rawDescGZIP(), []int{65} } func (x *BlockSubmissionErrorMsg) GetCause() string { @@ -3259,7 +3361,7 @@ type CrossChainMsg struct { func (x *CrossChainMsg) Reset() { *x = CrossChainMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[64] + mi := &file_enclave_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3272,7 +3374,7 @@ func (x *CrossChainMsg) String() string { func (*CrossChainMsg) ProtoMessage() {} func (x *CrossChainMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[64] + mi := &file_enclave_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3285,7 +3387,7 @@ func (x *CrossChainMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use CrossChainMsg.ProtoReflect.Descriptor instead. func (*CrossChainMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{64} + return file_enclave_proto_rawDescGZIP(), []int{66} } func (x *CrossChainMsg) GetSender() []byte { @@ -3336,7 +3438,7 @@ type ExtBatchMsg struct { func (x *ExtBatchMsg) Reset() { *x = ExtBatchMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[65] + mi := &file_enclave_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3451,7 @@ func (x *ExtBatchMsg) String() string { func (*ExtBatchMsg) ProtoMessage() {} func (x *ExtBatchMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[65] + mi := &file_enclave_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3464,7 @@ func (x *ExtBatchMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtBatchMsg.ProtoReflect.Descriptor instead. func (*ExtBatchMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{65} + return file_enclave_proto_rawDescGZIP(), []int{67} } func (x *ExtBatchMsg) GetHeader() *BatchHeaderMsg { @@ -3413,7 +3515,7 @@ type BatchHeaderMsg struct { func (x *BatchHeaderMsg) Reset() { *x = BatchHeaderMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[66] + mi := &file_enclave_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3528,7 @@ func (x *BatchHeaderMsg) String() string { func (*BatchHeaderMsg) ProtoMessage() {} func (x *BatchHeaderMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[66] + mi := &file_enclave_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3541,7 @@ func (x *BatchHeaderMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchHeaderMsg.ProtoReflect.Descriptor instead. func (*BatchHeaderMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{66} + return file_enclave_proto_rawDescGZIP(), []int{68} } func (x *BatchHeaderMsg) GetParentHash() []byte { @@ -3574,7 +3676,7 @@ type ExtRollupMsg struct { func (x *ExtRollupMsg) Reset() { *x = ExtRollupMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[67] + mi := &file_enclave_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3587,7 +3689,7 @@ func (x *ExtRollupMsg) String() string { func (*ExtRollupMsg) ProtoMessage() {} func (x *ExtRollupMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[67] + mi := &file_enclave_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3600,7 +3702,7 @@ func (x *ExtRollupMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtRollupMsg.ProtoReflect.Descriptor instead. func (*ExtRollupMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{67} + return file_enclave_proto_rawDescGZIP(), []int{69} } func (x *ExtRollupMsg) GetHeader() *RollupHeaderMsg { @@ -3644,7 +3746,7 @@ type RollupHeaderMsg struct { func (x *RollupHeaderMsg) Reset() { *x = RollupHeaderMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[68] + mi := &file_enclave_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3657,7 +3759,7 @@ func (x *RollupHeaderMsg) String() string { func (*RollupHeaderMsg) ProtoMessage() {} func (x *RollupHeaderMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[68] + mi := &file_enclave_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3670,7 +3772,7 @@ func (x *RollupHeaderMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use RollupHeaderMsg.ProtoReflect.Descriptor instead. func (*RollupHeaderMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{68} + return file_enclave_proto_rawDescGZIP(), []int{70} } func (x *RollupHeaderMsg) GetParentHash() []byte { @@ -3757,7 +3859,7 @@ type SecretResponseMsg struct { func (x *SecretResponseMsg) Reset() { *x = SecretResponseMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[69] + mi := &file_enclave_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3770,7 +3872,7 @@ func (x *SecretResponseMsg) String() string { func (*SecretResponseMsg) ProtoMessage() {} func (x *SecretResponseMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[69] + mi := &file_enclave_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3783,7 +3885,7 @@ func (x *SecretResponseMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretResponseMsg.ProtoReflect.Descriptor instead. func (*SecretResponseMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{69} + return file_enclave_proto_rawDescGZIP(), []int{71} } func (x *SecretResponseMsg) GetSecret() []byte { @@ -3827,7 +3929,7 @@ type WithdrawalMsg struct { func (x *WithdrawalMsg) Reset() { *x = WithdrawalMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[70] + mi := &file_enclave_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3840,7 +3942,7 @@ func (x *WithdrawalMsg) String() string { func (*WithdrawalMsg) ProtoMessage() {} func (x *WithdrawalMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[70] + mi := &file_enclave_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3853,7 +3955,7 @@ func (x *WithdrawalMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalMsg.ProtoReflect.Descriptor instead. func (*WithdrawalMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{70} + return file_enclave_proto_rawDescGZIP(), []int{72} } func (x *WithdrawalMsg) GetAmount() []byte { @@ -3985,136 +4087,118 @@ var file_enclave_proto_rawDesc = []byte{ 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x31, 0x48, 0x65, - 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x31, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, + 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x13, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, + 0x73, 0x67, 0x52, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x53, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x52, - 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, - 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x49, - 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x0c, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7e, 0x0a, 0x12, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x13, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x17, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x33, - 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x54, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x54, 0x78, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, - 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x78, 0x74, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x4f, - 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x6f, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x16, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, + 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x4f, + 0x0a, 0x13, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x3a, 0x0a, 0x0e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0f, - 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, + 0x32, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7e, + 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0xb0, + 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x17, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x46, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, + 0x72, 0x22, 0x33, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x54, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x65, 0x64, 0x54, 0x78, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0d, 0x0a, 0x0b, 0x53, - 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x53, 0x74, - 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x42, 0x0a, + 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, + 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x22, 0x4f, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, + 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, @@ -4122,379 +4206,419 @@ var file_enclave_proto_rawDesc = []byte{ 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x48, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x91, - 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, - 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x46, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8f, 0x01, 0x0a, + 0x1b, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0d, + 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, + 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, + 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x48, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, - 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, + 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, + 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, + 0x6c, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, + 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5f, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, - 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, - 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x65, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x10, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, + 0x0a, 0x15, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x4d, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x24, 0x0a, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3e, 0x0a, 0x12, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, 0x01, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, - 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0b, 0x0a, 0x09, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x41, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, - 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x75, - 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x48, - 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x72, 0x6f, 0x72, 0x22, 0x24, 0x0a, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x55, 0x6e, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3e, 0x0a, 0x12, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x73, 0x67, 0x12, 0x56, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, - 0x73, 0x67, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x17, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, 0x22, 0x89, - 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x6e, 0x0a, 0x0b, 0x45, 0x78, - 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0xc0, 0x04, 0x0a, 0x0e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, - 0x6f, 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x52, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, 0x01, 0x53, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x47, 0x61, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x12, 0x44, 0x0a, 0x1d, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, - 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x40, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x6f, 0x73, - 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x9c, 0x01, - 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x12, 0x32, - 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x75, - 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x61, 0x6c, 0x6c, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xd7, 0x02, 0x0a, - 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x0b, 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x22, 0xb8, 0x01, 0x0a, + 0x14, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x50, + 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x48, + 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x56, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x38, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, + 0x67, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x17, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x31, 0x48, + 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, + 0x64, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x6e, 0x0a, + 0x0b, 0x45, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, + 0x78, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0xc0, 0x04, + 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, - 0x31, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x43, 0x6f, 0x6d, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x31, 0x48, 0x65, 0x61, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, - 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, - 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, - 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x52, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, - 0x12, 0x0c, 0x0a, 0x01, 0x53, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x26, - 0x0a, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x48, 0x6f, 0x73, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, - 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x32, 0xaf, 0x13, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4e, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x12, - 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, - 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x45, - 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x50, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4c, 0x31, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x12, 0x1a, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x4f, 0x62, 0x73, - 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x4f, 0x62, 0x73, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x70, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, - 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, - 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x14, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1e, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, - 0x08, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, - 0x71, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x63, - 0x6f, 0x64, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, - 0x12, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, - 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, - 0x6e, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x65, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x78, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x54, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x53, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x70, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x0c, + 0x0a, 0x01, 0x52, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, 0x01, + 0x53, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, + 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x47, 0x61, + 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x12, 0x44, + 0x0a, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x40, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, + 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, 0x43, 0x72, + 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x22, 0x9c, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x4d, 0x73, + 0x67, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x52, 0x6f, + 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x63, + 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x63, 0x61, 0x6c, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0xd7, 0x02, 0x0a, 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x4c, 0x31, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, + 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x31, 0x48, 0x65, 0x61, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x43, + 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, + 0x67, 0x52, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x52, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, 0x01, 0x53, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, + 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, + 0x71, 0x4e, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f, 0x73, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x32, 0xa6, 0x14, 0x0a, 0x0c, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, + 0x76, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, + 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, + 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4c, 0x31, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, + 0x78, 0x12, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, + 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x4f, + 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x66, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, + 0x12, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x6f, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, + 0x65, 0x47, 0x61, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, + 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0b, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x14, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1e, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x45, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, + 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x75, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, + 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x6f, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, + 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x75, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x17, 0x5a, 0x15, 0x65, 0x6e, 0x63, 0x6c, 0x61, - 0x76, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, + 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, + 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x17, 0x5a, 0x15, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x2f, 0x72, 0x70, 0x63, + 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -4509,7 +4633,7 @@ func file_enclave_proto_rawDescGZIP() []byte { return file_enclave_proto_rawDescData } -var file_enclave_proto_msgTypes = make([]protoimpl.MessageInfo, 71) +var file_enclave_proto_msgTypes = make([]protoimpl.MessageInfo, 73) var file_enclave_proto_goTypes = []interface{}{ (*GetPublicTransactionDataRequest)(nil), // 0: generated.GetPublicTransactionDataRequest (*GetPublicTransactionDataResponse)(nil), // 1: generated.GetPublicTransactionDataResponse @@ -4532,56 +4656,58 @@ var file_enclave_proto_goTypes = []interface{}{ (*CreateBatchResponse)(nil), // 18: generated.CreateBatchResponse (*CreateRollupRequest)(nil), // 19: generated.CreateRollupRequest (*CreateRollupResponse)(nil), // 20: generated.CreateRollupResponse - (*StatusRequest)(nil), // 21: generated.StatusRequest - (*StatusResponse)(nil), // 22: generated.StatusResponse - (*AttestationRequest)(nil), // 23: generated.AttestationRequest - (*AttestationResponse)(nil), // 24: generated.AttestationResponse - (*GenerateSecretRequest)(nil), // 25: generated.GenerateSecretRequest - (*GenerateSecretResponse)(nil), // 26: generated.GenerateSecretResponse - (*InitEnclaveRequest)(nil), // 27: generated.InitEnclaveRequest - (*InitEnclaveResponse)(nil), // 28: generated.InitEnclaveResponse - (*StartRequest)(nil), // 29: generated.StartRequest - (*StartResponse)(nil), // 30: generated.StartResponse - (*SubmitBlockRequest)(nil), // 31: generated.SubmitBlockRequest - (*SubmitBlockResponse)(nil), // 32: generated.SubmitBlockResponse - (*SubmitTxRequest)(nil), // 33: generated.SubmitTxRequest - (*SubmitTxResponse)(nil), // 34: generated.SubmitTxResponse - (*SubmitBatchRequest)(nil), // 35: generated.SubmitBatchRequest - (*SubmitBatchResponse)(nil), // 36: generated.SubmitBatchResponse - (*ObsCallRequest)(nil), // 37: generated.ObsCallRequest - (*ObsCallResponse)(nil), // 38: generated.ObsCallResponse - (*GetTransactionCountRequest)(nil), // 39: generated.GetTransactionCountRequest - (*GetTransactionCountResponse)(nil), // 40: generated.GetTransactionCountResponse - (*StopRequest)(nil), // 41: generated.StopRequest - (*StopResponse)(nil), // 42: generated.StopResponse - (*GetTransactionRequest)(nil), // 43: generated.GetTransactionRequest - (*GetTransactionResponse)(nil), // 44: generated.GetTransactionResponse - (*GetTransactionReceiptRequest)(nil), // 45: generated.GetTransactionReceiptRequest - (*GetTransactionReceiptResponse)(nil), // 46: generated.GetTransactionReceiptResponse - (*GetBalanceRequest)(nil), // 47: generated.GetBalanceRequest - (*GetBalanceResponse)(nil), // 48: generated.GetBalanceResponse - (*GetCodeRequest)(nil), // 49: generated.GetCodeRequest - (*GetCodeResponse)(nil), // 50: generated.GetCodeResponse - (*SubscribeRequest)(nil), // 51: generated.SubscribeRequest - (*SubscribeResponse)(nil), // 52: generated.SubscribeResponse - (*UnsubscribeRequest)(nil), // 53: generated.UnsubscribeRequest - (*UnsubscribeResponse)(nil), // 54: generated.UnsubscribeResponse - (*EstimateGasRequest)(nil), // 55: generated.EstimateGasRequest - (*EstimateGasResponse)(nil), // 56: generated.EstimateGasResponse - (*GetLogsRequest)(nil), // 57: generated.GetLogsRequest - (*GetLogsResponse)(nil), // 58: generated.GetLogsResponse - (*HealthCheckResponse)(nil), // 59: generated.HealthCheckResponse - (*EmptyArgs)(nil), // 60: generated.EmptyArgs - (*AttestationReportMsg)(nil), // 61: generated.AttestationReportMsg - (*BlockSubmissionResponseMsg)(nil), // 62: generated.BlockSubmissionResponseMsg - (*BlockSubmissionErrorMsg)(nil), // 63: generated.BlockSubmissionErrorMsg - (*CrossChainMsg)(nil), // 64: generated.CrossChainMsg - (*ExtBatchMsg)(nil), // 65: generated.ExtBatchMsg - (*BatchHeaderMsg)(nil), // 66: generated.BatchHeaderMsg - (*ExtRollupMsg)(nil), // 67: generated.ExtRollupMsg - (*RollupHeaderMsg)(nil), // 68: generated.RollupHeaderMsg - (*SecretResponseMsg)(nil), // 69: generated.SecretResponseMsg - (*WithdrawalMsg)(nil), // 70: generated.WithdrawalMsg + (*GetAvailableBatchesCountRequest)(nil), // 21: generated.GetAvailableBatchesCountRequest + (*GetAvailableBatchesCountResponse)(nil), // 22: generated.GetAvailableBatchesCountResponse + (*StatusRequest)(nil), // 23: generated.StatusRequest + (*StatusResponse)(nil), // 24: generated.StatusResponse + (*AttestationRequest)(nil), // 25: generated.AttestationRequest + (*AttestationResponse)(nil), // 26: generated.AttestationResponse + (*GenerateSecretRequest)(nil), // 27: generated.GenerateSecretRequest + (*GenerateSecretResponse)(nil), // 28: generated.GenerateSecretResponse + (*InitEnclaveRequest)(nil), // 29: generated.InitEnclaveRequest + (*InitEnclaveResponse)(nil), // 30: generated.InitEnclaveResponse + (*StartRequest)(nil), // 31: generated.StartRequest + (*StartResponse)(nil), // 32: generated.StartResponse + (*SubmitBlockRequest)(nil), // 33: generated.SubmitBlockRequest + (*SubmitBlockResponse)(nil), // 34: generated.SubmitBlockResponse + (*SubmitTxRequest)(nil), // 35: generated.SubmitTxRequest + (*SubmitTxResponse)(nil), // 36: generated.SubmitTxResponse + (*SubmitBatchRequest)(nil), // 37: generated.SubmitBatchRequest + (*SubmitBatchResponse)(nil), // 38: generated.SubmitBatchResponse + (*ObsCallRequest)(nil), // 39: generated.ObsCallRequest + (*ObsCallResponse)(nil), // 40: generated.ObsCallResponse + (*GetTransactionCountRequest)(nil), // 41: generated.GetTransactionCountRequest + (*GetTransactionCountResponse)(nil), // 42: generated.GetTransactionCountResponse + (*StopRequest)(nil), // 43: generated.StopRequest + (*StopResponse)(nil), // 44: generated.StopResponse + (*GetTransactionRequest)(nil), // 45: generated.GetTransactionRequest + (*GetTransactionResponse)(nil), // 46: generated.GetTransactionResponse + (*GetTransactionReceiptRequest)(nil), // 47: generated.GetTransactionReceiptRequest + (*GetTransactionReceiptResponse)(nil), // 48: generated.GetTransactionReceiptResponse + (*GetBalanceRequest)(nil), // 49: generated.GetBalanceRequest + (*GetBalanceResponse)(nil), // 50: generated.GetBalanceResponse + (*GetCodeRequest)(nil), // 51: generated.GetCodeRequest + (*GetCodeResponse)(nil), // 52: generated.GetCodeResponse + (*SubscribeRequest)(nil), // 53: generated.SubscribeRequest + (*SubscribeResponse)(nil), // 54: generated.SubscribeResponse + (*UnsubscribeRequest)(nil), // 55: generated.UnsubscribeRequest + (*UnsubscribeResponse)(nil), // 56: generated.UnsubscribeResponse + (*EstimateGasRequest)(nil), // 57: generated.EstimateGasRequest + (*EstimateGasResponse)(nil), // 58: generated.EstimateGasResponse + (*GetLogsRequest)(nil), // 59: generated.GetLogsRequest + (*GetLogsResponse)(nil), // 60: generated.GetLogsResponse + (*HealthCheckResponse)(nil), // 61: generated.HealthCheckResponse + (*EmptyArgs)(nil), // 62: generated.EmptyArgs + (*AttestationReportMsg)(nil), // 63: generated.AttestationReportMsg + (*BlockSubmissionResponseMsg)(nil), // 64: generated.BlockSubmissionResponseMsg + (*BlockSubmissionErrorMsg)(nil), // 65: generated.BlockSubmissionErrorMsg + (*CrossChainMsg)(nil), // 66: generated.CrossChainMsg + (*ExtBatchMsg)(nil), // 67: generated.ExtBatchMsg + (*BatchHeaderMsg)(nil), // 68: generated.BatchHeaderMsg + (*ExtRollupMsg)(nil), // 69: generated.ExtRollupMsg + (*RollupHeaderMsg)(nil), // 70: generated.RollupHeaderMsg + (*SecretResponseMsg)(nil), // 71: generated.SecretResponseMsg + (*WithdrawalMsg)(nil), // 72: generated.WithdrawalMsg } var file_enclave_proto_depIdxs = []int32{ 9, // 0: generated.GetPublicTransactionDataRequest.pagination:type_name -> generated.Pagination @@ -4591,102 +4717,105 @@ var file_enclave_proto_depIdxs = []int32{ 10, // 4: generated.GetTotalContractCountResponse.systemError:type_name -> generated.SystemError 10, // 5: generated.DebugEventLogRelevancyResponse.systemError:type_name -> generated.SystemError 10, // 6: generated.DebugTraceTransactionResponse.systemError:type_name -> generated.SystemError - 67, // 7: generated.CreateRollupResponse.msg:type_name -> generated.ExtRollupMsg + 69, // 7: generated.CreateRollupResponse.msg:type_name -> generated.ExtRollupMsg 10, // 8: generated.CreateRollupResponse.systemError:type_name -> generated.SystemError - 10, // 9: generated.StatusResponse.systemError:type_name -> generated.SystemError - 61, // 10: generated.AttestationResponse.attestationReportMsg:type_name -> generated.AttestationReportMsg - 10, // 11: generated.AttestationResponse.systemError:type_name -> generated.SystemError - 10, // 12: generated.GenerateSecretResponse.systemError:type_name -> generated.SystemError - 10, // 13: generated.InitEnclaveResponse.systemError:type_name -> generated.SystemError - 10, // 14: generated.StartResponse.systemError:type_name -> generated.SystemError - 62, // 15: generated.SubmitBlockResponse.blockSubmissionResponse:type_name -> generated.BlockSubmissionResponseMsg - 10, // 16: generated.SubmitBlockResponse.systemError:type_name -> generated.SystemError - 10, // 17: generated.SubmitTxResponse.systemError:type_name -> generated.SystemError - 65, // 18: generated.SubmitBatchRequest.batch:type_name -> generated.ExtBatchMsg - 10, // 19: generated.SubmitBatchResponse.systemError:type_name -> generated.SystemError - 10, // 20: generated.ObsCallResponse.systemError:type_name -> generated.SystemError - 10, // 21: generated.GetTransactionCountResponse.systemError:type_name -> generated.SystemError - 10, // 22: generated.StopResponse.systemError:type_name -> generated.SystemError - 10, // 23: generated.GetTransactionResponse.systemError:type_name -> generated.SystemError - 10, // 24: generated.GetTransactionReceiptResponse.systemError:type_name -> generated.SystemError - 10, // 25: generated.GetBalanceResponse.systemError:type_name -> generated.SystemError - 10, // 26: generated.GetCodeResponse.systemError:type_name -> generated.SystemError - 10, // 27: generated.SubscribeResponse.systemError:type_name -> generated.SystemError - 10, // 28: generated.UnsubscribeResponse.systemError:type_name -> generated.SystemError - 10, // 29: generated.EstimateGasResponse.systemError:type_name -> generated.SystemError - 10, // 30: generated.GetLogsResponse.systemError:type_name -> generated.SystemError - 10, // 31: generated.HealthCheckResponse.systemError:type_name -> generated.SystemError - 10, // 32: generated.AttestationReportMsg.systemError:type_name -> generated.SystemError - 69, // 33: generated.BlockSubmissionResponseMsg.producedSecretResponses:type_name -> generated.SecretResponseMsg - 63, // 34: generated.BlockSubmissionResponseMsg.error:type_name -> generated.BlockSubmissionErrorMsg - 66, // 35: generated.ExtBatchMsg.header:type_name -> generated.BatchHeaderMsg - 64, // 36: generated.BatchHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg - 68, // 37: generated.ExtRollupMsg.header:type_name -> generated.RollupHeaderMsg - 64, // 38: generated.RollupHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg - 10, // 39: generated.SecretResponseMsg.systemError:type_name -> generated.SystemError - 21, // 40: generated.EnclaveProto.Status:input_type -> generated.StatusRequest - 23, // 41: generated.EnclaveProto.Attestation:input_type -> generated.AttestationRequest - 25, // 42: generated.EnclaveProto.GenerateSecret:input_type -> generated.GenerateSecretRequest - 27, // 43: generated.EnclaveProto.InitEnclave:input_type -> generated.InitEnclaveRequest - 31, // 44: generated.EnclaveProto.SubmitL1Block:input_type -> generated.SubmitBlockRequest - 33, // 45: generated.EnclaveProto.SubmitTx:input_type -> generated.SubmitTxRequest - 35, // 46: generated.EnclaveProto.SubmitBatch:input_type -> generated.SubmitBatchRequest - 37, // 47: generated.EnclaveProto.ObsCall:input_type -> generated.ObsCallRequest - 39, // 48: generated.EnclaveProto.GetTransactionCount:input_type -> generated.GetTransactionCountRequest - 41, // 49: generated.EnclaveProto.Stop:input_type -> generated.StopRequest - 43, // 50: generated.EnclaveProto.GetTransaction:input_type -> generated.GetTransactionRequest - 45, // 51: generated.EnclaveProto.GetTransactionReceipt:input_type -> generated.GetTransactionReceiptRequest - 47, // 52: generated.EnclaveProto.GetBalance:input_type -> generated.GetBalanceRequest - 49, // 53: generated.EnclaveProto.GetCode:input_type -> generated.GetCodeRequest - 51, // 54: generated.EnclaveProto.Subscribe:input_type -> generated.SubscribeRequest - 53, // 55: generated.EnclaveProto.Unsubscribe:input_type -> generated.UnsubscribeRequest - 55, // 56: generated.EnclaveProto.EstimateGas:input_type -> generated.EstimateGasRequest - 57, // 57: generated.EnclaveProto.GetLogs:input_type -> generated.GetLogsRequest - 60, // 58: generated.EnclaveProto.HealthCheck:input_type -> generated.EmptyArgs - 4, // 59: generated.EnclaveProto.GetBatch:input_type -> generated.GetBatchRequest - 5, // 60: generated.EnclaveProto.GetBatchBySeqNo:input_type -> generated.GetBatchBySeqNoRequest - 17, // 61: generated.EnclaveProto.CreateBatch:input_type -> generated.CreateBatchRequest - 19, // 62: generated.EnclaveProto.CreateRollup:input_type -> generated.CreateRollupRequest - 15, // 63: generated.EnclaveProto.DebugTraceTransaction:input_type -> generated.DebugTraceTransactionRequest - 7, // 64: generated.EnclaveProto.StreamL2Updates:input_type -> generated.StreamL2UpdatesRequest - 13, // 65: generated.EnclaveProto.DebugEventLogRelevancy:input_type -> generated.DebugEventLogRelevancyRequest - 11, // 66: generated.EnclaveProto.GetTotalContractCount:input_type -> generated.GetTotalContractCountRequest - 2, // 67: generated.EnclaveProto.GetReceiptsByAddress:input_type -> generated.GetReceiptsByAddressRequest - 0, // 68: generated.EnclaveProto.GetPublicTransactionData:input_type -> generated.GetPublicTransactionDataRequest - 22, // 69: generated.EnclaveProto.Status:output_type -> generated.StatusResponse - 24, // 70: generated.EnclaveProto.Attestation:output_type -> generated.AttestationResponse - 26, // 71: generated.EnclaveProto.GenerateSecret:output_type -> generated.GenerateSecretResponse - 28, // 72: generated.EnclaveProto.InitEnclave:output_type -> generated.InitEnclaveResponse - 32, // 73: generated.EnclaveProto.SubmitL1Block:output_type -> generated.SubmitBlockResponse - 34, // 74: generated.EnclaveProto.SubmitTx:output_type -> generated.SubmitTxResponse - 36, // 75: generated.EnclaveProto.SubmitBatch:output_type -> generated.SubmitBatchResponse - 38, // 76: generated.EnclaveProto.ObsCall:output_type -> generated.ObsCallResponse - 40, // 77: generated.EnclaveProto.GetTransactionCount:output_type -> generated.GetTransactionCountResponse - 42, // 78: generated.EnclaveProto.Stop:output_type -> generated.StopResponse - 44, // 79: generated.EnclaveProto.GetTransaction:output_type -> generated.GetTransactionResponse - 46, // 80: generated.EnclaveProto.GetTransactionReceipt:output_type -> generated.GetTransactionReceiptResponse - 48, // 81: generated.EnclaveProto.GetBalance:output_type -> generated.GetBalanceResponse - 50, // 82: generated.EnclaveProto.GetCode:output_type -> generated.GetCodeResponse - 52, // 83: generated.EnclaveProto.Subscribe:output_type -> generated.SubscribeResponse - 54, // 84: generated.EnclaveProto.Unsubscribe:output_type -> generated.UnsubscribeResponse - 56, // 85: generated.EnclaveProto.EstimateGas:output_type -> generated.EstimateGasResponse - 58, // 86: generated.EnclaveProto.GetLogs:output_type -> generated.GetLogsResponse - 59, // 87: generated.EnclaveProto.HealthCheck:output_type -> generated.HealthCheckResponse - 6, // 88: generated.EnclaveProto.GetBatch:output_type -> generated.GetBatchResponse - 6, // 89: generated.EnclaveProto.GetBatchBySeqNo:output_type -> generated.GetBatchResponse - 18, // 90: generated.EnclaveProto.CreateBatch:output_type -> generated.CreateBatchResponse - 20, // 91: generated.EnclaveProto.CreateRollup:output_type -> generated.CreateRollupResponse - 16, // 92: generated.EnclaveProto.DebugTraceTransaction:output_type -> generated.DebugTraceTransactionResponse - 8, // 93: generated.EnclaveProto.StreamL2Updates:output_type -> generated.EncodedUpdateResponse - 14, // 94: generated.EnclaveProto.DebugEventLogRelevancy:output_type -> generated.DebugEventLogRelevancyResponse - 12, // 95: generated.EnclaveProto.GetTotalContractCount:output_type -> generated.GetTotalContractCountResponse - 3, // 96: generated.EnclaveProto.GetReceiptsByAddress:output_type -> generated.GetReceiptsByAddressResponse - 1, // 97: generated.EnclaveProto.GetPublicTransactionData:output_type -> generated.GetPublicTransactionDataResponse - 69, // [69:98] is the sub-list for method output_type - 40, // [40:69] 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 + 10, // 9: generated.GetAvailableBatchesCountResponse.systemError:type_name -> generated.SystemError + 10, // 10: generated.StatusResponse.systemError:type_name -> generated.SystemError + 63, // 11: generated.AttestationResponse.attestationReportMsg:type_name -> generated.AttestationReportMsg + 10, // 12: generated.AttestationResponse.systemError:type_name -> generated.SystemError + 10, // 13: generated.GenerateSecretResponse.systemError:type_name -> generated.SystemError + 10, // 14: generated.InitEnclaveResponse.systemError:type_name -> generated.SystemError + 10, // 15: generated.StartResponse.systemError:type_name -> generated.SystemError + 64, // 16: generated.SubmitBlockResponse.blockSubmissionResponse:type_name -> generated.BlockSubmissionResponseMsg + 10, // 17: generated.SubmitBlockResponse.systemError:type_name -> generated.SystemError + 10, // 18: generated.SubmitTxResponse.systemError:type_name -> generated.SystemError + 67, // 19: generated.SubmitBatchRequest.batch:type_name -> generated.ExtBatchMsg + 10, // 20: generated.SubmitBatchResponse.systemError:type_name -> generated.SystemError + 10, // 21: generated.ObsCallResponse.systemError:type_name -> generated.SystemError + 10, // 22: generated.GetTransactionCountResponse.systemError:type_name -> generated.SystemError + 10, // 23: generated.StopResponse.systemError:type_name -> generated.SystemError + 10, // 24: generated.GetTransactionResponse.systemError:type_name -> generated.SystemError + 10, // 25: generated.GetTransactionReceiptResponse.systemError:type_name -> generated.SystemError + 10, // 26: generated.GetBalanceResponse.systemError:type_name -> generated.SystemError + 10, // 27: generated.GetCodeResponse.systemError:type_name -> generated.SystemError + 10, // 28: generated.SubscribeResponse.systemError:type_name -> generated.SystemError + 10, // 29: generated.UnsubscribeResponse.systemError:type_name -> generated.SystemError + 10, // 30: generated.EstimateGasResponse.systemError:type_name -> generated.SystemError + 10, // 31: generated.GetLogsResponse.systemError:type_name -> generated.SystemError + 10, // 32: generated.HealthCheckResponse.systemError:type_name -> generated.SystemError + 10, // 33: generated.AttestationReportMsg.systemError:type_name -> generated.SystemError + 71, // 34: generated.BlockSubmissionResponseMsg.producedSecretResponses:type_name -> generated.SecretResponseMsg + 65, // 35: generated.BlockSubmissionResponseMsg.error:type_name -> generated.BlockSubmissionErrorMsg + 68, // 36: generated.ExtBatchMsg.header:type_name -> generated.BatchHeaderMsg + 66, // 37: generated.BatchHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg + 70, // 38: generated.ExtRollupMsg.header:type_name -> generated.RollupHeaderMsg + 66, // 39: generated.RollupHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg + 10, // 40: generated.SecretResponseMsg.systemError:type_name -> generated.SystemError + 23, // 41: generated.EnclaveProto.Status:input_type -> generated.StatusRequest + 25, // 42: generated.EnclaveProto.Attestation:input_type -> generated.AttestationRequest + 27, // 43: generated.EnclaveProto.GenerateSecret:input_type -> generated.GenerateSecretRequest + 29, // 44: generated.EnclaveProto.InitEnclave:input_type -> generated.InitEnclaveRequest + 33, // 45: generated.EnclaveProto.SubmitL1Block:input_type -> generated.SubmitBlockRequest + 35, // 46: generated.EnclaveProto.SubmitTx:input_type -> generated.SubmitTxRequest + 37, // 47: generated.EnclaveProto.SubmitBatch:input_type -> generated.SubmitBatchRequest + 39, // 48: generated.EnclaveProto.ObsCall:input_type -> generated.ObsCallRequest + 41, // 49: generated.EnclaveProto.GetTransactionCount:input_type -> generated.GetTransactionCountRequest + 43, // 50: generated.EnclaveProto.Stop:input_type -> generated.StopRequest + 45, // 51: generated.EnclaveProto.GetTransaction:input_type -> generated.GetTransactionRequest + 47, // 52: generated.EnclaveProto.GetTransactionReceipt:input_type -> generated.GetTransactionReceiptRequest + 49, // 53: generated.EnclaveProto.GetBalance:input_type -> generated.GetBalanceRequest + 51, // 54: generated.EnclaveProto.GetCode:input_type -> generated.GetCodeRequest + 53, // 55: generated.EnclaveProto.Subscribe:input_type -> generated.SubscribeRequest + 55, // 56: generated.EnclaveProto.Unsubscribe:input_type -> generated.UnsubscribeRequest + 57, // 57: generated.EnclaveProto.EstimateGas:input_type -> generated.EstimateGasRequest + 59, // 58: generated.EnclaveProto.GetLogs:input_type -> generated.GetLogsRequest + 62, // 59: generated.EnclaveProto.HealthCheck:input_type -> generated.EmptyArgs + 4, // 60: generated.EnclaveProto.GetBatch:input_type -> generated.GetBatchRequest + 5, // 61: generated.EnclaveProto.GetBatchBySeqNo:input_type -> generated.GetBatchBySeqNoRequest + 17, // 62: generated.EnclaveProto.CreateBatch:input_type -> generated.CreateBatchRequest + 19, // 63: generated.EnclaveProto.CreateRollup:input_type -> generated.CreateRollupRequest + 21, // 64: generated.EnclaveProto.GetBatchesAfterSize:input_type -> generated.GetAvailableBatchesCountRequest + 15, // 65: generated.EnclaveProto.DebugTraceTransaction:input_type -> generated.DebugTraceTransactionRequest + 7, // 66: generated.EnclaveProto.StreamL2Updates:input_type -> generated.StreamL2UpdatesRequest + 13, // 67: generated.EnclaveProto.DebugEventLogRelevancy:input_type -> generated.DebugEventLogRelevancyRequest + 11, // 68: generated.EnclaveProto.GetTotalContractCount:input_type -> generated.GetTotalContractCountRequest + 2, // 69: generated.EnclaveProto.GetReceiptsByAddress:input_type -> generated.GetReceiptsByAddressRequest + 0, // 70: generated.EnclaveProto.GetPublicTransactionData:input_type -> generated.GetPublicTransactionDataRequest + 24, // 71: generated.EnclaveProto.Status:output_type -> generated.StatusResponse + 26, // 72: generated.EnclaveProto.Attestation:output_type -> generated.AttestationResponse + 28, // 73: generated.EnclaveProto.GenerateSecret:output_type -> generated.GenerateSecretResponse + 30, // 74: generated.EnclaveProto.InitEnclave:output_type -> generated.InitEnclaveResponse + 34, // 75: generated.EnclaveProto.SubmitL1Block:output_type -> generated.SubmitBlockResponse + 36, // 76: generated.EnclaveProto.SubmitTx:output_type -> generated.SubmitTxResponse + 38, // 77: generated.EnclaveProto.SubmitBatch:output_type -> generated.SubmitBatchResponse + 40, // 78: generated.EnclaveProto.ObsCall:output_type -> generated.ObsCallResponse + 42, // 79: generated.EnclaveProto.GetTransactionCount:output_type -> generated.GetTransactionCountResponse + 44, // 80: generated.EnclaveProto.Stop:output_type -> generated.StopResponse + 46, // 81: generated.EnclaveProto.GetTransaction:output_type -> generated.GetTransactionResponse + 48, // 82: generated.EnclaveProto.GetTransactionReceipt:output_type -> generated.GetTransactionReceiptResponse + 50, // 83: generated.EnclaveProto.GetBalance:output_type -> generated.GetBalanceResponse + 52, // 84: generated.EnclaveProto.GetCode:output_type -> generated.GetCodeResponse + 54, // 85: generated.EnclaveProto.Subscribe:output_type -> generated.SubscribeResponse + 56, // 86: generated.EnclaveProto.Unsubscribe:output_type -> generated.UnsubscribeResponse + 58, // 87: generated.EnclaveProto.EstimateGas:output_type -> generated.EstimateGasResponse + 60, // 88: generated.EnclaveProto.GetLogs:output_type -> generated.GetLogsResponse + 61, // 89: generated.EnclaveProto.HealthCheck:output_type -> generated.HealthCheckResponse + 6, // 90: generated.EnclaveProto.GetBatch:output_type -> generated.GetBatchResponse + 6, // 91: generated.EnclaveProto.GetBatchBySeqNo:output_type -> generated.GetBatchResponse + 18, // 92: generated.EnclaveProto.CreateBatch:output_type -> generated.CreateBatchResponse + 20, // 93: generated.EnclaveProto.CreateRollup:output_type -> generated.CreateRollupResponse + 22, // 94: generated.EnclaveProto.GetBatchesAfterSize:output_type -> generated.GetAvailableBatchesCountResponse + 16, // 95: generated.EnclaveProto.DebugTraceTransaction:output_type -> generated.DebugTraceTransactionResponse + 8, // 96: generated.EnclaveProto.StreamL2Updates:output_type -> generated.EncodedUpdateResponse + 14, // 97: generated.EnclaveProto.DebugEventLogRelevancy:output_type -> generated.DebugEventLogRelevancyResponse + 12, // 98: generated.EnclaveProto.GetTotalContractCount:output_type -> generated.GetTotalContractCountResponse + 3, // 99: generated.EnclaveProto.GetReceiptsByAddress:output_type -> generated.GetReceiptsByAddressResponse + 1, // 100: generated.EnclaveProto.GetPublicTransactionData:output_type -> generated.GetPublicTransactionDataResponse + 71, // [71:101] is the sub-list for method output_type + 41, // [41:71] 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 } func init() { file_enclave_proto_init() } @@ -4948,7 +5077,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusRequest); i { + switch v := v.(*GetAvailableBatchesCountRequest); i { case 0: return &v.state case 1: @@ -4960,7 +5089,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusResponse); i { + switch v := v.(*GetAvailableBatchesCountResponse); i { case 0: return &v.state case 1: @@ -4972,7 +5101,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationRequest); i { + switch v := v.(*StatusRequest); i { case 0: return &v.state case 1: @@ -4984,7 +5113,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationResponse); i { + switch v := v.(*StatusResponse); i { case 0: return &v.state case 1: @@ -4996,7 +5125,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateSecretRequest); i { + switch v := v.(*AttestationRequest); i { case 0: return &v.state case 1: @@ -5008,7 +5137,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateSecretResponse); i { + switch v := v.(*AttestationResponse); i { case 0: return &v.state case 1: @@ -5020,7 +5149,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitEnclaveRequest); i { + switch v := v.(*GenerateSecretRequest); i { case 0: return &v.state case 1: @@ -5032,7 +5161,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitEnclaveResponse); i { + switch v := v.(*GenerateSecretResponse); i { case 0: return &v.state case 1: @@ -5044,7 +5173,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartRequest); i { + switch v := v.(*InitEnclaveRequest); i { case 0: return &v.state case 1: @@ -5056,7 +5185,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartResponse); i { + switch v := v.(*InitEnclaveResponse); i { case 0: return &v.state case 1: @@ -5068,7 +5197,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockRequest); i { + switch v := v.(*StartRequest); i { case 0: return &v.state case 1: @@ -5080,7 +5209,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockResponse); i { + switch v := v.(*StartResponse); i { case 0: return &v.state case 1: @@ -5092,7 +5221,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTxRequest); i { + switch v := v.(*SubmitBlockRequest); i { case 0: return &v.state case 1: @@ -5104,7 +5233,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTxResponse); i { + switch v := v.(*SubmitBlockResponse); i { case 0: return &v.state case 1: @@ -5116,7 +5245,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBatchRequest); i { + switch v := v.(*SubmitTxRequest); i { case 0: return &v.state case 1: @@ -5128,7 +5257,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBatchResponse); i { + switch v := v.(*SubmitTxResponse); i { case 0: return &v.state case 1: @@ -5140,7 +5269,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObsCallRequest); i { + switch v := v.(*SubmitBatchRequest); i { case 0: return &v.state case 1: @@ -5152,7 +5281,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObsCallResponse); i { + switch v := v.(*SubmitBatchResponse); i { case 0: return &v.state case 1: @@ -5164,7 +5293,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionCountRequest); i { + switch v := v.(*ObsCallRequest); i { case 0: return &v.state case 1: @@ -5176,7 +5305,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionCountResponse); i { + switch v := v.(*ObsCallResponse); i { case 0: return &v.state case 1: @@ -5188,7 +5317,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopRequest); i { + switch v := v.(*GetTransactionCountRequest); i { case 0: return &v.state case 1: @@ -5200,7 +5329,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopResponse); i { + switch v := v.(*GetTransactionCountResponse); i { case 0: return &v.state case 1: @@ -5212,7 +5341,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionRequest); i { + switch v := v.(*StopRequest); i { case 0: return &v.state case 1: @@ -5224,7 +5353,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionResponse); i { + switch v := v.(*StopResponse); i { case 0: return &v.state case 1: @@ -5236,7 +5365,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionReceiptRequest); i { + switch v := v.(*GetTransactionRequest); i { case 0: return &v.state case 1: @@ -5248,7 +5377,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionReceiptResponse); i { + switch v := v.(*GetTransactionResponse); i { case 0: return &v.state case 1: @@ -5260,7 +5389,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalanceRequest); i { + switch v := v.(*GetTransactionReceiptRequest); i { case 0: return &v.state case 1: @@ -5272,7 +5401,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalanceResponse); i { + switch v := v.(*GetTransactionReceiptResponse); i { case 0: return &v.state case 1: @@ -5284,7 +5413,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCodeRequest); i { + switch v := v.(*GetBalanceRequest); i { case 0: return &v.state case 1: @@ -5296,7 +5425,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCodeResponse); i { + switch v := v.(*GetBalanceResponse); i { case 0: return &v.state case 1: @@ -5308,7 +5437,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeRequest); i { + switch v := v.(*GetCodeRequest); i { case 0: return &v.state case 1: @@ -5320,7 +5449,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeResponse); i { + switch v := v.(*GetCodeResponse); i { case 0: return &v.state case 1: @@ -5332,7 +5461,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnsubscribeRequest); i { + switch v := v.(*SubscribeRequest); i { case 0: return &v.state case 1: @@ -5344,7 +5473,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnsubscribeResponse); i { + switch v := v.(*SubscribeResponse); i { case 0: return &v.state case 1: @@ -5356,7 +5485,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateGasRequest); i { + switch v := v.(*UnsubscribeRequest); i { case 0: return &v.state case 1: @@ -5368,7 +5497,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateGasResponse); i { + switch v := v.(*UnsubscribeResponse); i { case 0: return &v.state case 1: @@ -5380,7 +5509,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLogsRequest); i { + switch v := v.(*EstimateGasRequest); i { case 0: return &v.state case 1: @@ -5392,7 +5521,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLogsResponse); i { + switch v := v.(*EstimateGasResponse); i { case 0: return &v.state case 1: @@ -5404,7 +5533,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckResponse); i { + switch v := v.(*GetLogsRequest); i { case 0: return &v.state case 1: @@ -5416,7 +5545,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EmptyArgs); i { + switch v := v.(*GetLogsResponse); i { case 0: return &v.state case 1: @@ -5428,7 +5557,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationReportMsg); i { + switch v := v.(*HealthCheckResponse); i { case 0: return &v.state case 1: @@ -5440,7 +5569,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockSubmissionResponseMsg); i { + switch v := v.(*EmptyArgs); i { case 0: return &v.state case 1: @@ -5452,7 +5581,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockSubmissionErrorMsg); i { + switch v := v.(*AttestationReportMsg); i { case 0: return &v.state case 1: @@ -5464,7 +5593,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CrossChainMsg); i { + switch v := v.(*BlockSubmissionResponseMsg); i { case 0: return &v.state case 1: @@ -5476,7 +5605,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtBatchMsg); i { + switch v := v.(*BlockSubmissionErrorMsg); i { case 0: return &v.state case 1: @@ -5488,7 +5617,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchHeaderMsg); i { + switch v := v.(*CrossChainMsg); i { case 0: return &v.state case 1: @@ -5500,7 +5629,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtRollupMsg); i { + switch v := v.(*ExtBatchMsg); i { case 0: return &v.state case 1: @@ -5512,7 +5641,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RollupHeaderMsg); i { + switch v := v.(*BatchHeaderMsg); i { case 0: return &v.state case 1: @@ -5524,7 +5653,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecretResponseMsg); i { + switch v := v.(*ExtRollupMsg); i { case 0: return &v.state case 1: @@ -5536,6 +5665,30 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RollupHeaderMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_enclave_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecretResponseMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_enclave_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawalMsg); i { case 0: return &v.state @@ -5549,13 +5702,14 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[19].OneofWrappers = []interface{}{} + file_enclave_proto_msgTypes[21].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_enclave_proto_rawDesc, NumEnums: 0, - NumMessages: 71, + NumMessages: 73, NumExtensions: 0, NumServices: 1, }, diff --git a/go/common/rpc/generated/enclave.proto b/go/common/rpc/generated/enclave.proto index b9542a6ae1..1812645686 100644 --- a/go/common/rpc/generated/enclave.proto +++ b/go/common/rpc/generated/enclave.proto @@ -78,6 +78,8 @@ service EnclaveProto { rpc CreateRollup(CreateRollupRequest) returns (CreateRollupResponse) {} + rpc GetAvailableBatchesCount(GetAvailableBatchesCountRequest) returns (GetAvailableBatchesCountResponse) {} + rpc DebugTraceTransaction(DebugTraceTransactionRequest) returns (DebugTraceTransactionResponse) {} @@ -180,6 +182,15 @@ message CreateRollupResponse{ SystemError systemError = 2; } +message GetAvailableBatchesCountRequest{ + optional uint64 fromSequenceNumber = 1; +} + +message GetAvailableBatchesCountResponse{ + uint64 count = 1; + SystemError systemError = 2; +} + message StatusRequest {} message StatusResponse { int32 statusCode = 1; diff --git a/go/common/rpc/generated/enclave_grpc.pb.go b/go/common/rpc/generated/enclave_grpc.pb.go index ce77edf796..3ead30e9a3 100644 --- a/go/common/rpc/generated/enclave_grpc.pb.go +++ b/go/common/rpc/generated/enclave_grpc.pb.go @@ -71,6 +71,7 @@ type EnclaveProtoClient interface { GetBatchBySeqNo(ctx context.Context, in *GetBatchBySeqNoRequest, opts ...grpc.CallOption) (*GetBatchResponse, error) CreateBatch(ctx context.Context, in *CreateBatchRequest, opts ...grpc.CallOption) (*CreateBatchResponse, error) CreateRollup(ctx context.Context, in *CreateRollupRequest, opts ...grpc.CallOption) (*CreateRollupResponse, error) + GetAvailableBatchesCount(ctx context.Context, in *GetAvailableBatchesCountRequest, opts ...grpc.CallOption) (*GetAvailableBatchesCountResponse, error) DebugTraceTransaction(ctx context.Context, in *DebugTraceTransactionRequest, opts ...grpc.CallOption) (*DebugTraceTransactionResponse, error) StreamL2Updates(ctx context.Context, in *StreamL2UpdatesRequest, opts ...grpc.CallOption) (EnclaveProto_StreamL2UpdatesClient, error) DebugEventLogRelevancy(ctx context.Context, in *DebugEventLogRelevancyRequest, opts ...grpc.CallOption) (*DebugEventLogRelevancyResponse, error) @@ -294,6 +295,15 @@ func (c *enclaveProtoClient) CreateRollup(ctx context.Context, in *CreateRollupR return out, nil } +func (c *enclaveProtoClient) GetAvailableBatchesCount(ctx context.Context, in *GetAvailableBatchesCountRequest, opts ...grpc.CallOption) (*GetAvailableBatchesCountResponse, error) { + out := new(GetAvailableBatchesCountResponse) + err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetBatchesAfterSize", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *enclaveProtoClient) DebugTraceTransaction(ctx context.Context, in *DebugTraceTransactionRequest, opts ...grpc.CallOption) (*DebugTraceTransactionResponse, error) { out := new(DebugTraceTransactionResponse) err := c.cc.Invoke(ctx, "/generated.EnclaveProto/DebugTraceTransaction", in, out, opts...) @@ -424,6 +434,7 @@ type EnclaveProtoServer interface { GetBatchBySeqNo(context.Context, *GetBatchBySeqNoRequest) (*GetBatchResponse, error) CreateBatch(context.Context, *CreateBatchRequest) (*CreateBatchResponse, error) CreateRollup(context.Context, *CreateRollupRequest) (*CreateRollupResponse, error) + GetAvailableBatchesCount(context.Context, *GetAvailableBatchesCountRequest) (*GetAvailableBatchesCountResponse, error) DebugTraceTransaction(context.Context, *DebugTraceTransactionRequest) (*DebugTraceTransactionResponse, error) StreamL2Updates(*StreamL2UpdatesRequest, EnclaveProto_StreamL2UpdatesServer) error DebugEventLogRelevancy(context.Context, *DebugEventLogRelevancyRequest) (*DebugEventLogRelevancyResponse, error) @@ -506,6 +517,9 @@ func (UnimplementedEnclaveProtoServer) CreateBatch(context.Context, *CreateBatch func (UnimplementedEnclaveProtoServer) CreateRollup(context.Context, *CreateRollupRequest) (*CreateRollupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateRollup not implemented") } +func (UnimplementedEnclaveProtoServer) GetAvailableBatchesCount(context.Context, *GetAvailableBatchesCountRequest) (*GetAvailableBatchesCountResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBatchesAfterSize not implemented") +} func (UnimplementedEnclaveProtoServer) DebugTraceTransaction(context.Context, *DebugTraceTransactionRequest) (*DebugTraceTransactionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DebugTraceTransaction not implemented") } @@ -951,6 +965,24 @@ func _EnclaveProto_CreateRollup_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _EnclaveProto_GetAvailableBatchesCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAvailableBatchesCountRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EnclaveProtoServer).GetAvailableBatchesCount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/generated.EnclaveProto/GetBatchesAfterSize", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EnclaveProtoServer).GetAvailableBatchesCount(ctx, req.(*GetAvailableBatchesCountRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _EnclaveProto_DebugTraceTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DebugTraceTransactionRequest) if err := dec(in); err != nil { @@ -1161,6 +1193,10 @@ var EnclaveProto_ServiceDesc = grpc.ServiceDesc{ MethodName: "CreateRollup", Handler: _EnclaveProto_CreateRollup_Handler, }, + { + MethodName: "GetBatchesAfterSize", + Handler: _EnclaveProto_GetAvailableBatchesCount_Handler, + }, { MethodName: "DebugTraceTransaction", Handler: _EnclaveProto_DebugTraceTransaction_Handler, diff --git a/go/config/host_config.go b/go/config/host_config.go index fcafd2127d..71a4b08ef6 100644 --- a/go/config/host_config.go +++ b/go/config/host_config.go @@ -92,6 +92,7 @@ type HostInputConfig struct { // Whether inbound p2p is enabled or not IsInboundP2PDisabled bool + MaxRollupSize uint64 } // ToHostConfig returns a HostConfig given a HostInputConfig @@ -131,6 +132,7 @@ func (p HostInputConfig) ToHostConfig() *HostConfig { RollupInterval: p.RollupInterval, L1BlockTime: p.L1BlockTime, IsInboundP2PDisabled: p.IsInboundP2PDisabled, + MaxRollupSize: p.MaxRollupSize, } } @@ -156,6 +158,8 @@ type HostConfig struct { BatchInterval time.Duration // Min interval before creating the next rollup (only used by Sequencer nodes) RollupInterval time.Duration + // MaxRollupSize is the max size of the rollup + MaxRollupSize uint64 // The expected time between blocks on the L1 network L1BlockTime time.Duration @@ -255,5 +259,6 @@ func DefaultHostParsedConfig() *HostInputConfig { RollupInterval: 5 * time.Second, L1BlockTime: 15 * time.Second, IsInboundP2PDisabled: false, + MaxRollupSize: 1024 * 64, } } diff --git a/go/enclave/components/batch_registry.go b/go/enclave/components/batch_registry.go index 225c06036e..3ab5c27099 100644 --- a/go/enclave/components/batch_registry.go +++ b/go/enclave/components/batch_registry.go @@ -6,7 +6,7 @@ import ( "sync" "github.com/ethereum/go-ethereum/core/types" - + "github.com/obscuronet/go-obscuro/go/common" "github.com/obscuronet/go-obscuro/go/enclave/storage" "github.com/ethereum/go-ethereum/core/state" @@ -176,3 +176,40 @@ func (br *batchRegistry) GetBatchAtHeight(height gethrpc.BlockNumber) (*core.Bat } return batch, nil } + +func (br *batchRegistry) GetBatchesAfterSize(batchSeqNo uint64, upToL1Height uint64) (uint64, error) { + // sanity check + headBatch, err := br.storage.FetchHeadBatch() + if err != nil { + return 0, err + } + + if headBatch.SeqNo().Uint64() < batchSeqNo { + return 0, fmt.Errorf("head batch height %d is in the past compared to requested batch %d", headBatch.SeqNo().Uint64(), batchSeqNo) + } + + var header *common.BatchHeader + var batchesSize uint64 + var batchSize uint64 + + for currentBatchSeq := batchSeqNo; currentBatchSeq <= headBatch.SeqNo().Uint64(); currentBatchSeq++ { + header, batchSize, err = br.storage.FetchBatchHeaderAndSizeBySeqNo(currentBatchSeq) + if err != nil { + return 0, fmt.Errorf("could not retrieve batch by sequence number %d. Cause: %w", currentBatchSeq, err) + } + + // check the block height + block, err := br.storage.FetchBlock(header.L1Proof) + if err != nil { + return 0, fmt.Errorf("could not retrieve block. Cause: %w", err) + } + + if block.NumberU64() > upToL1Height { + break + } + + batchesSize += batchSize + } + + return batchesSize, nil +} diff --git a/go/enclave/components/interfaces.go b/go/enclave/components/interfaces.go index 233ac98545..ce1cadd794 100644 --- a/go/enclave/components/interfaces.go +++ b/go/enclave/components/interfaces.go @@ -98,6 +98,9 @@ type BatchRegistry interface { // HasGenesisBatch - returns if genesis batch is available yet or not, or error in case // the function is unable to determine. HasGenesisBatch() (bool, error) + + // GetBatchesAfterSize returns the sum of the size of batches available after batchSeqNo + GetBatchesAfterSize(batchSeqNo uint64, upToL1Height uint64) (uint64, error) } type RollupProducer interface { diff --git a/go/enclave/enclave.go b/go/enclave/enclave.go index db25c42088..7099d9e54f 100644 --- a/go/enclave/enclave.go +++ b/go/enclave/enclave.go @@ -618,6 +618,27 @@ func (e *enclaveImpl) CreateRollup(fromSeqNo uint64) (*common.ExtRollup, common. return rollup, nil } +func (e *enclaveImpl) GetBatchesAfterSize(fromSeqNo uint64) (uint64, common.SystemError) { + if e.stopControl.IsStopping() { + return 0, responses.ToInternalError(fmt.Errorf("requested GetAvailableBatches with the enclave stopping")) + } + + callStart := time.Now() + defer func() { + e.logger.Info(fmt.Sprintf("GetBatchesAfterSize call ended - start = %s duration %s", callStart.String(), time.Since(callStart).String())) + }() + + // todo - remove once the db operations are more atomic + e.mainMutex.Lock() + defer e.mainMutex.Unlock() + + count, err := e.Sequencer().GetBatchesAfterSize(fromSeqNo) + if err != nil { + return 0, responses.ToInternalError(err) + } + return count, nil +} + // ObsCall handles param decryption, validation and encryption // and requests the Rollup chain to execute the payload (eth_call) func (e *enclaveImpl) ObsCall(encryptedParams common.EncryptedParamsCall) (*responses.Call, common.SystemError) { diff --git a/go/enclave/nodetype/interfaces.go b/go/enclave/nodetype/interfaces.go index 71d02b920f..bf60f54a18 100644 --- a/go/enclave/nodetype/interfaces.go +++ b/go/enclave/nodetype/interfaces.go @@ -30,6 +30,9 @@ type Sequencer interface { // and adds as many batches to it as possible. CreateRollup(lastBatchNo uint64) (*common.ExtRollup, error) + // GetBatchesAfterSize - returns the number of batches available from the latest recorded rollup in the head l1 chain + GetBatchesAfterSize(lastBatchNo uint64) (uint64, error) + NodeType } diff --git a/go/enclave/nodetype/sequencer.go b/go/enclave/nodetype/sequencer.go index e624bc17e3..0fe9ec2156 100644 --- a/go/enclave/nodetype/sequencer.go +++ b/go/enclave/nodetype/sequencer.go @@ -262,6 +262,15 @@ func (s *sequencer) CreateRollup(lastBatchNo uint64) (*common.ExtRollup, error) return s.rollupCompression.CreateExtRollup(rollup) } +func (s *sequencer) GetBatchesAfterSize(lastBatchNo uint64) (uint64, error) { + currentL1Head, err := s.storage.FetchHeadBlock() + if err != nil { + return 0, err + } + upToL1Height := currentL1Head.NumberU64() - RollupDelay + return s.batchRegistry.GetBatchesAfterSize(lastBatchNo, upToL1Height) +} + func (s *sequencer) duplicateBatches(l1Head *types.Block, nonCanonicalL1Path []common.L1BlockHash) error { batchesToDuplicate := make([]*core.Batch, 0) diff --git a/go/enclave/rpc_server.go b/go/enclave/rpc_server.go index 78faf593bf..5e804a5bea 100644 --- a/go/enclave/rpc_server.go +++ b/go/enclave/rpc_server.go @@ -277,6 +277,23 @@ func (s *RPCServer) CreateRollup(_ context.Context, req *generated.CreateRollupR }, nil } +func (s *RPCServer) GetAvailableBatchesCount(_ context.Context, req *generated.GetAvailableBatchesCountRequest) (*generated.GetAvailableBatchesCountResponse, error) { + var fromSeqNo uint64 = 1 + if req.FromSequenceNumber != nil && *req.FromSequenceNumber > common.L2GenesisSeqNo { + fromSeqNo = *req.FromSequenceNumber + } + + count, sysError := s.enclave.GetBatchesAfterSize(fromSeqNo) + if sysError != nil { + s.logger.Error("Error getting available batches count", log.ErrKey, sysError) + } + + return &generated.GetAvailableBatchesCountResponse{ + Count: count, + SystemError: toRPCError(sysError), + }, nil +} + func (s *RPCServer) CreateBatch(_ context.Context, _ *generated.CreateBatchRequest) (*generated.CreateBatchResponse, error) { sysError := s.enclave.CreateBatch() if sysError != nil { diff --git a/go/enclave/storage/enclavedb/batch.go b/go/enclave/storage/enclavedb/batch.go index 32a3fecbf8..ea833cf964 100644 --- a/go/enclave/storage/enclavedb/batch.go +++ b/go/enclave/storage/enclavedb/batch.go @@ -27,8 +27,9 @@ const ( bInsert = "insert into batch values (?,?,?,?,?,?,?,?,?)" updateBatchExecuted = "update batch set is_executed=true where hash=?" - selectBatch = "select b.header, bb.content from batch b join batch_body bb on b.body=bb.hash" - selectHeader = "select b.header from batch b" + selectBatch = "select b.header, bb.content from batch b join batch_body bb on b.body=bb.hash" + selectHeader = "select b.header from batch b" + selectBatchSize = "select b.header, SUM(LENGTH(bb.content)) from batch b join batch_body bb on b.body=bb.hash" txExecInsert = "insert into exec_tx values " txExecInsertValue = "(?,?,?,?,?)" @@ -165,6 +166,10 @@ func ReadCanonicalBatchByHeight(db *sql.DB, height uint64) (*core.Batch, error) return fetchBatch(db, " where b.height=? and is_canonical=true", height) } +func ReadBatchSizeBySeqNo(db *sql.DB, seqNo uint64) (*common.BatchHeader, uint64, error) { + return fetchBatchHeaderAndSize(db, " where sequence=?", seqNo) +} + func ReadBatchHeader(db *sql.DB, hash gethcommon.Hash) (*common.BatchHeader, error) { return fetchBatchHeader(db, " where hash=?", hash.Bytes()) } @@ -298,6 +303,27 @@ func fetchBatchHeader(db *sql.DB, whereQuery string, args ...any) (*common.Batch return h, nil } +func fetchBatchHeaderAndSize(db *sql.DB, whereQuery string, args ...any) (*common.BatchHeader, uint64, error) { + var header string + var body uint64 + + err := db.QueryRow(selectBatchSize+" "+whereQuery, args...).Scan(&header, &body) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + // make sure the error is converted to obscuro-wide not found error + return nil, 0, errutil.ErrNotFound + } + return nil, 0, err + } + + h := new(common.BatchHeader) + if err := rlp.DecodeBytes([]byte(header), h); err != nil { + return nil, 0, fmt.Errorf("could not decode batch header. Cause: %w", err) + } + + return h, body, nil +} + func selectReceipts(db *sql.DB, config *params.ChainConfig, query string, args ...any) (types.Receipts, error) { var allReceipts types.Receipts diff --git a/go/enclave/storage/interfaces.go b/go/enclave/storage/interfaces.go index b32a7efec4..db59777b01 100644 --- a/go/enclave/storage/interfaces.go +++ b/go/enclave/storage/interfaces.go @@ -44,6 +44,8 @@ type BatchResolver interface { FetchBatchByHeight(height uint64) (*core.Batch, error) // FetchBatchBySeqNo returns the batch with the given seq number. FetchBatchBySeqNo(seqNum uint64) (*core.Batch, error) + // FetchBatchHeaderAndSizeBySeqNo returns the size of the body of a batch + FetchBatchHeaderAndSizeBySeqNo(seqNum uint64) (*common.BatchHeader, uint64, error) // FetchHeadBatch returns the current head batch of the canonical chain. FetchHeadBatch() (*core.Batch, error) // FetchCurrentSequencerNo returns the sequencer number diff --git a/go/enclave/storage/storage.go b/go/enclave/storage/storage.go index 568f2ee8b5..377ff4cca2 100644 --- a/go/enclave/storage/storage.go +++ b/go/enclave/storage/storage.go @@ -348,6 +348,12 @@ func (s *storageImpl) FetchBatchBySeqNo(seqNum uint64) (*core.Batch, error) { return enclavedb.ReadBatchBySeqNo(s.db.GetSQLDB(), seqNum) } +func (s *storageImpl) FetchBatchHeaderAndSizeBySeqNo(seqNum uint64) (*common.BatchHeader, uint64, error) { + callStart := time.Now() + defer s.logDuration("FetchBatchBySeqNo", callStart) + return enclavedb.ReadBatchSizeBySeqNo(s.db.GetSQLDB(), seqNum) +} + func (s *storageImpl) FetchBatchesByBlock(block common.L1BlockHash) ([]*core.Batch, error) { callStart := time.Now() defer s.logDuration("FetchBatchesByBlock", callStart) diff --git a/go/host/container/cli.go b/go/host/container/cli.go index 21bc1b12b6..a855e3f1fe 100644 --- a/go/host/container/cli.go +++ b/go/host/container/cli.go @@ -89,6 +89,7 @@ func ParseConfig() (*config.HostInputConfig, error) { batchInterval := flag.String(batchIntervalName, cfg.BatchInterval.String(), flagUsageMap[batchIntervalName]) rollupInterval := flag.String(rollupIntervalName, cfg.RollupInterval.String(), flagUsageMap[rollupIntervalName]) isInboundP2PDisabled := flag.Bool(isInboundP2PDisabledName, cfg.IsInboundP2PDisabled, flagUsageMap[isInboundP2PDisabledName]) + maxRollupSize := flag.Uint64(maxRollupSizeFlagName, cfg.MaxRollupSize, flagUsageMap[maxRollupSizeFlagName]) flag.Parse() @@ -139,6 +140,7 @@ func ParseConfig() (*config.HostInputConfig, error) { return nil, err } cfg.IsInboundP2PDisabled = *isInboundP2PDisabled + cfg.MaxRollupSize = *maxRollupSize return cfg, nil } diff --git a/go/host/container/cli_flags.go b/go/host/container/cli_flags.go index 445d28124b..f3ac39e6a0 100644 --- a/go/host/container/cli_flags.go +++ b/go/host/container/cli_flags.go @@ -34,6 +34,7 @@ const ( batchIntervalName = "batchInterval" rollupIntervalName = "rollupInterval" isInboundP2PDisabledName = "isInboundP2PDisabled" + maxRollupSizeFlagName = "maxRollupSize" ) // Returns a map of the flag usages. @@ -72,5 +73,6 @@ func getFlagUsageMap() map[string]string { batchIntervalName: "Duration between each batch. Can be put down as 1.0s", rollupIntervalName: "Duration between each rollup. Can be put down as 1.0s", isInboundP2PDisabledName: "Whether inbound p2p is enabled", + maxRollupSizeFlagName: "Max size of a rollup", } } diff --git a/go/host/enclave/guardian.go b/go/host/enclave/guardian.go index 8deda441fd..3b1cca21bc 100644 --- a/go/host/enclave/guardian.go +++ b/go/host/enclave/guardian.go @@ -66,7 +66,8 @@ type Guardian struct { hostInterrupter *stopcontrol.StopControl // host hostInterrupter so we can stop quickly - logger gethlog.Logger + logger gethlog.Logger + maxRollupSize uint64 } func NewGuardian(cfg *config.HostConfig, hostData host.Identity, serviceLocator guardianServiceLocator, enclaveClient common.Enclave, db *db.DB, interrupter *stopcontrol.StopControl, logger gethlog.Logger) *Guardian { @@ -78,6 +79,7 @@ func NewGuardian(cfg *config.HostConfig, hostData host.Identity, serviceLocator batchInterval: cfg.BatchInterval, rollupInterval: cfg.RollupInterval, l1StartHash: cfg.L1StartHash, + maxRollupSize: cfg.MaxRollupSize, db: db, hostInterrupter: interrupter, logger: logger, @@ -515,15 +517,17 @@ func (g *Guardian) periodicBatchProduction() { } } -func (g *Guardian) periodicRollupProduction() { +func (g *Guardian) periodicRollupProduction() { //nolint:gocognit defer g.logger.Info("Stopping rollup production") interval := g.rollupInterval if interval == 0 { - interval = 3 * time.Second + g.logger.Crit("invalid rollup interval 0") } rollupTicker := time.NewTicker(interval) // attempt to produce rollup every time the timer ticks until we are stopped/interrupted + + rollupCheckTicker := time.NewTicker(5 * time.Second) for { if g.hostInterrupter.IsStopping() { rollupTicker.Stop() @@ -545,12 +549,52 @@ func (g *Guardian) periodicRollupProduction() { if lastBatchNo.Uint64() > common.L2GenesisSeqNo { fromBatch++ } + producedRollup, err := g.enclaveClient.CreateRollup(fromBatch) if err != nil { g.logger.Error("unable to produce rollup", log.ErrKey, err) } else { + fmt.Println(time.Now().String(), " - PRODUCING rollup from config'd rollupInterval - lastBatchNo: ", lastBatchNo) g.sl.L1Publisher().PublishRollup(producedRollup) + fmt.Println(time.Now().String(), " - FINISHED PRODUCED rollup from config'd rollupInterval ") + } + + case <-rollupCheckTicker.C: + if !g.state.IsUpToDate() { + // if we're behind the L1, we don't want to produce rollups + g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) + continue + } + lastBatchNo, err := g.sl.L1Publisher().FetchLatestSeqNo() + if err != nil { + g.logger.Warn("encountered error while trying to retrieve latest sequence number", log.ErrKey, err) + continue } + fmt.Println(time.Now().String(), " - 5sec rollup creation CHECK - lastBatchNo: ", lastBatchNo) + fromBatch := lastBatchNo.Uint64() + if lastBatchNo.Uint64() > common.L2GenesisSeqNo { + fromBatch++ + } + availBatchesSumSize, err := g.enclaveClient.GetBatchesAfterSize(fromBatch) + if err != nil { + g.logger.Error("unable to GetBatchesAfterSize rollup", log.ErrKey, err) + continue + } + + fmt.Println(time.Now().String(), " - Sum of bytes of Batches not yet rolled up: - ", availBatchesSumSize, " bytes") + if availBatchesSumSize >= g.maxRollupSize { + producedRollup, err := g.enclaveClient.CreateRollup(fromBatch) + if err != nil { + g.logger.Error("unable to produce rollup", log.ErrKey, err) + } else { + fmt.Println(time.Now().String(), " - PRODUCING rollup from 5sec check ") + g.sl.L1Publisher().PublishRollup(producedRollup) + } + rollupCheckTicker.Reset(5 * time.Second) + rollupTicker.Reset(interval) + fmt.Println(time.Now().String(), " - FINISHED PRODUCING rollup from 5sec check ") + } + case <-g.hostInterrupter.Done(): // interrupted - end periodic process rollupTicker.Stop() diff --git a/go/host/rpc/enclaverpc/enclave_client.go b/go/host/rpc/enclaverpc/enclave_client.go index 2756d1ca46..822c5b3637 100644 --- a/go/host/rpc/enclaverpc/enclave_client.go +++ b/go/host/rpc/enclaverpc/enclave_client.go @@ -432,6 +432,25 @@ func (c *Client) CreateRollup(fromSeqNo uint64) (*common.ExtRollup, common.Syste return rpc.FromExtRollupMsg(response.Msg), nil } +func (c *Client) GetBatchesAfterSize(fromSeqNo uint64) (uint64, common.SystemError) { + defer c.logger.Debug("GetBatchesAfterSize rpc call", log.DurationKey, measure.NewStopwatch()) + + timeoutCtx, cancel := context.WithTimeout(context.Background(), c.config.EnclaveRPCTimeout) + defer cancel() + + response, err := c.protoClient.GetAvailableBatchesCount(timeoutCtx, &generated.GetAvailableBatchesCountRequest{ + FromSequenceNumber: &fromSeqNo, + }) + if err != nil { + return 0, syserr.NewRPCError(err) + } + if response != nil && response.SystemError != nil { + return 0, syserr.NewInternalError(fmt.Errorf("%s", response.SystemError.ErrorString)) + } + + return response.Count, nil +} + func (c *Client) DebugTraceTransaction(hash gethcommon.Hash, config *tracers.TraceConfig) (json.RawMessage, common.SystemError) { timeoutCtx, cancel := context.WithTimeout(context.Background(), c.config.EnclaveRPCTimeout) defer cancel() diff --git a/integration/simulation/devnetwork/node.go b/integration/simulation/devnetwork/node.go index 7c3322367c..15c357f346 100644 --- a/integration/simulation/devnetwork/node.go +++ b/integration/simulation/devnetwork/node.go @@ -132,6 +132,7 @@ func (n *InMemNodeOperator) createHostContainer() *hostcontainer.HostContainer { BatchInterval: n.config.BatchInterval, RollupInterval: n.config.RollupInterval, L1BlockTime: n.config.L1BlockTime, + MaxRollupSize: 1024 * 64, } hostLogger := testlog.Logger().New(log.NodeIDKey, n.l1Wallet.Address(), log.CmpKey, log.HostCmp) From e0237380a4770d015918662ecefae0615f3ff9d2 Mon Sep 17 00:00:00 2001 From: otherview Date: Wed, 20 Sep 2023 15:08:21 +0100 Subject: [PATCH 2/5] tweaks --- go/config/host_config.go | 4 +++- go/enclave/enclave.go | 4 +--- go/enclave/nodetype/sequencer.go | 2 +- go/host/enclave/guardian.go | 31 +++++++++++++++---------------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/go/config/host_config.go b/go/config/host_config.go index 71a4b08ef6..d8383aad27 100644 --- a/go/config/host_config.go +++ b/go/config/host_config.go @@ -92,7 +92,9 @@ type HostInputConfig struct { // Whether inbound p2p is enabled or not IsInboundP2PDisabled bool - MaxRollupSize uint64 + + // MaxRollupSize specifies the threshold size which the sequencer-host publishes a rollup + MaxRollupSize uint64 } // ToHostConfig returns a HostConfig given a HostInputConfig diff --git a/go/enclave/enclave.go b/go/enclave/enclave.go index 7099d9e54f..85bb759e83 100644 --- a/go/enclave/enclave.go +++ b/go/enclave/enclave.go @@ -624,9 +624,7 @@ func (e *enclaveImpl) GetBatchesAfterSize(fromSeqNo uint64) (uint64, common.Syst } callStart := time.Now() - defer func() { - e.logger.Info(fmt.Sprintf("GetBatchesAfterSize call ended - start = %s duration %s", callStart.String(), time.Since(callStart).String())) - }() + defer e.logger.Info(fmt.Sprintf("GetBatchesAfterSize call ended - start = %s duration %s", callStart.String(), time.Since(callStart).String())) // todo - remove once the db operations are more atomic e.mainMutex.Lock() diff --git a/go/enclave/nodetype/sequencer.go b/go/enclave/nodetype/sequencer.go index 0fe9ec2156..329d497441 100644 --- a/go/enclave/nodetype/sequencer.go +++ b/go/enclave/nodetype/sequencer.go @@ -265,7 +265,7 @@ func (s *sequencer) CreateRollup(lastBatchNo uint64) (*common.ExtRollup, error) func (s *sequencer) GetBatchesAfterSize(lastBatchNo uint64) (uint64, error) { currentL1Head, err := s.storage.FetchHeadBlock() if err != nil { - return 0, err + return 0, fmt.Errorf("unable to fetch headblock - %w", err) } upToL1Height := currentL1Head.NumberU64() - RollupDelay return s.batchRegistry.GetBatchesAfterSize(lastBatchNo, upToL1Height) diff --git a/go/host/enclave/guardian.go b/go/host/enclave/guardian.go index 3b1cca21bc..b3469f6e24 100644 --- a/go/host/enclave/guardian.go +++ b/go/host/enclave/guardian.go @@ -63,11 +63,11 @@ type Guardian struct { batchInterval time.Duration rollupInterval time.Duration l1StartHash gethcommon.Hash + maxRollupSize uint64 hostInterrupter *stopcontrol.StopControl // host hostInterrupter so we can stop quickly - logger gethlog.Logger - maxRollupSize uint64 + logger gethlog.Logger } func NewGuardian(cfg *config.HostConfig, hostData host.Identity, serviceLocator guardianServiceLocator, enclaveClient common.Enclave, db *db.DB, interrupter *stopcontrol.StopControl, logger gethlog.Logger) *Guardian { @@ -520,21 +520,19 @@ func (g *Guardian) periodicBatchProduction() { func (g *Guardian) periodicRollupProduction() { //nolint:gocognit defer g.logger.Info("Stopping rollup production") - interval := g.rollupInterval - if interval == 0 { + // rollup at least at every g.rollupInterval + rollupInterval := g.rollupInterval + if rollupInterval == 0 { g.logger.Crit("invalid rollup interval 0") } - rollupTicker := time.NewTicker(interval) - // attempt to produce rollup every time the timer ticks until we are stopped/interrupted + rollupIntervalBasedTicker := time.NewTicker(rollupInterval) + + // every 5sec check if it should create a new rollup + rollupSizeCheckTicker := time.NewTicker(5 * time.Second) - rollupCheckTicker := time.NewTicker(5 * time.Second) for { - if g.hostInterrupter.IsStopping() { - rollupTicker.Stop() - return // stop periodic rollup production - } select { - case <-rollupTicker.C: + case <-rollupIntervalBasedTicker.C: if !g.state.IsUpToDate() { // if we're behind the L1, we don't want to produce rollups g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) @@ -559,7 +557,7 @@ func (g *Guardian) periodicRollupProduction() { //nolint:gocognit fmt.Println(time.Now().String(), " - FINISHED PRODUCED rollup from config'd rollupInterval ") } - case <-rollupCheckTicker.C: + case <-rollupSizeCheckTicker.C: if !g.state.IsUpToDate() { // if we're behind the L1, we don't want to produce rollups g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) @@ -590,14 +588,15 @@ func (g *Guardian) periodicRollupProduction() { //nolint:gocognit fmt.Println(time.Now().String(), " - PRODUCING rollup from 5sec check ") g.sl.L1Publisher().PublishRollup(producedRollup) } - rollupCheckTicker.Reset(5 * time.Second) - rollupTicker.Reset(interval) + rollupSizeCheckTicker.Reset(5 * time.Second) + rollupIntervalBasedTicker.Reset(rollupInterval) fmt.Println(time.Now().String(), " - FINISHED PRODUCING rollup from 5sec check ") } case <-g.hostInterrupter.Done(): // interrupted - end periodic process - rollupTicker.Stop() + rollupIntervalBasedTicker.Stop() + rollupSizeCheckTicker.Stop() return } } From d23649efbe398377123d20112f4c3e39706ac840 Mon Sep 17 00:00:00 2001 From: otherview Date: Thu, 21 Sep 2023 18:03:47 +0100 Subject: [PATCH 3/5] pr comments --- go/host/enclave/guardian.go | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/go/host/enclave/guardian.go b/go/host/enclave/guardian.go index 822f3a572c..23c94b470e 100644 --- a/go/host/enclave/guardian.go +++ b/go/host/enclave/guardian.go @@ -521,7 +521,7 @@ func (g *Guardian) periodicRollupProduction() { //nolint:gocognit defer g.logger.Info("Stopping rollup production") // rollup at least at every g.rollupInterval - rollupInterval := 17 * time.Second + rollupInterval := g.rollupInterval if rollupInterval == 0 { g.logger.Crit("invalid rollup interval 0") } @@ -538,21 +538,18 @@ func (g *Guardian) periodicRollupProduction() { //nolint:gocognit g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) continue } - lastBatchNo, err := g.sl.L1Publisher().FetchLatestSeqNo() + + fromBatch, err := g.getLastestBatchNo() if err != nil { g.logger.Warn("encountered error while trying to retrieve latest sequence number", log.ErrKey, err) continue } - fromBatch := lastBatchNo.Uint64() - if lastBatchNo.Uint64() > common.L2GenesisSeqNo { - fromBatch++ - } producedRollup, err := g.enclaveClient.CreateRollup(fromBatch) if err != nil { g.logger.Error("unable to produce rollup", log.ErrKey, err) } else { - fmt.Println(time.Now().String(), " - PRODUCING rollup from config'd rollupInterval - lastBatchNo: ", lastBatchNo) + fmt.Println(time.Now().String(), " - PRODUCING rollup from config'd rollupInterval - lastBatchNo: ", fromBatch) g.sl.L1Publisher().PublishRollup(producedRollup) fmt.Println(time.Now().String(), " - FINISHED PRODUCED rollup from config'd rollupInterval ") } @@ -563,16 +560,14 @@ func (g *Guardian) periodicRollupProduction() { //nolint:gocognit g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) continue } - lastBatchNo, err := g.sl.L1Publisher().FetchLatestSeqNo() + + fromBatch, err := g.getLastestBatchNo() if err != nil { g.logger.Warn("encountered error while trying to retrieve latest sequence number", log.ErrKey, err) continue } - fmt.Println(time.Now().String(), " - 5sec rollup creation CHECK - lastBatchNo: ", lastBatchNo) - fromBatch := lastBatchNo.Uint64() - if lastBatchNo.Uint64() > common.L2GenesisSeqNo { - fromBatch++ - } + + fmt.Println(time.Now().String(), " - 5sec rollup creation CHECK - lastBatchNo: ", fromBatch) availBatchesSumSize, err := g.getBatchesAfterSize(fromBatch) if err != nil { g.logger.Error("unable to GetBatchesAfterSize rollup", log.ErrKey, err) @@ -675,3 +670,16 @@ func (g *Guardian) getBatchesAfterSize(seqNo uint64) (uint64, error) { return size, nil } + +func (g *Guardian) getLastestBatchNo() (uint64, error) { + lastBatchNo, err := g.sl.L1Publisher().FetchLatestSeqNo() + if err != nil { + fmt.Println(err) + return 0, err + } + fromBatch := lastBatchNo.Uint64() + if lastBatchNo.Uint64() > common.L2GenesisSeqNo { + fromBatch++ + } + return fromBatch, nil +} From c34fc816d7bdffa13e98b9a282c0d27efd973e26 Mon Sep 17 00:00:00 2001 From: otherview Date: Fri, 22 Sep 2023 14:18:55 +0100 Subject: [PATCH 4/5] PR Comments --- go/common/rpc/generated/enclave.pb.go | 4 +- go/common/rpc/generated/enclave_grpc.pb.go | 162 +++++++++++++-------- go/host/enclave/guardian.go | 76 ++++------ go/node/docker_node.go | 1 + 4 files changed, 127 insertions(+), 116 deletions(-) diff --git a/go/common/rpc/generated/enclave.pb.go b/go/common/rpc/generated/enclave.pb.go index c582f886ae..3bdf2c46a5 100644 --- a/go/common/rpc/generated/enclave.pb.go +++ b/go/common/rpc/generated/enclave.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.9 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: enclave.proto package generated diff --git a/go/common/rpc/generated/enclave_grpc.pb.go b/go/common/rpc/generated/enclave_grpc.pb.go index ce77edf796..89cb798f81 100644 --- a/go/common/rpc/generated/enclave_grpc.pb.go +++ b/go/common/rpc/generated/enclave_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.9 +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.23.4 // source: enclave.proto package generated @@ -18,6 +18,38 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + EnclaveProto_Status_FullMethodName = "/generated.EnclaveProto/Status" + EnclaveProto_Attestation_FullMethodName = "/generated.EnclaveProto/Attestation" + EnclaveProto_GenerateSecret_FullMethodName = "/generated.EnclaveProto/GenerateSecret" + EnclaveProto_InitEnclave_FullMethodName = "/generated.EnclaveProto/InitEnclave" + EnclaveProto_SubmitL1Block_FullMethodName = "/generated.EnclaveProto/SubmitL1Block" + EnclaveProto_SubmitTx_FullMethodName = "/generated.EnclaveProto/SubmitTx" + EnclaveProto_SubmitBatch_FullMethodName = "/generated.EnclaveProto/SubmitBatch" + EnclaveProto_ObsCall_FullMethodName = "/generated.EnclaveProto/ObsCall" + EnclaveProto_GetTransactionCount_FullMethodName = "/generated.EnclaveProto/GetTransactionCount" + EnclaveProto_Stop_FullMethodName = "/generated.EnclaveProto/Stop" + EnclaveProto_GetTransaction_FullMethodName = "/generated.EnclaveProto/GetTransaction" + EnclaveProto_GetTransactionReceipt_FullMethodName = "/generated.EnclaveProto/GetTransactionReceipt" + EnclaveProto_GetBalance_FullMethodName = "/generated.EnclaveProto/GetBalance" + EnclaveProto_GetCode_FullMethodName = "/generated.EnclaveProto/GetCode" + EnclaveProto_Subscribe_FullMethodName = "/generated.EnclaveProto/Subscribe" + EnclaveProto_Unsubscribe_FullMethodName = "/generated.EnclaveProto/Unsubscribe" + EnclaveProto_EstimateGas_FullMethodName = "/generated.EnclaveProto/EstimateGas" + EnclaveProto_GetLogs_FullMethodName = "/generated.EnclaveProto/GetLogs" + EnclaveProto_HealthCheck_FullMethodName = "/generated.EnclaveProto/HealthCheck" + EnclaveProto_GetBatch_FullMethodName = "/generated.EnclaveProto/GetBatch" + EnclaveProto_GetBatchBySeqNo_FullMethodName = "/generated.EnclaveProto/GetBatchBySeqNo" + EnclaveProto_CreateBatch_FullMethodName = "/generated.EnclaveProto/CreateBatch" + EnclaveProto_CreateRollup_FullMethodName = "/generated.EnclaveProto/CreateRollup" + EnclaveProto_DebugTraceTransaction_FullMethodName = "/generated.EnclaveProto/DebugTraceTransaction" + EnclaveProto_StreamL2Updates_FullMethodName = "/generated.EnclaveProto/StreamL2Updates" + EnclaveProto_DebugEventLogRelevancy_FullMethodName = "/generated.EnclaveProto/DebugEventLogRelevancy" + EnclaveProto_GetTotalContractCount_FullMethodName = "/generated.EnclaveProto/GetTotalContractCount" + EnclaveProto_GetReceiptsByAddress_FullMethodName = "/generated.EnclaveProto/GetReceiptsByAddress" + EnclaveProto_GetPublicTransactionData_FullMethodName = "/generated.EnclaveProto/GetPublicTransactionData" +) + // EnclaveProtoClient is the client API for EnclaveProto service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -31,8 +63,10 @@ type EnclaveProtoClient interface { // Init - initialise an enclave with a seed received by another enclave InitEnclave(ctx context.Context, in *InitEnclaveRequest, opts ...grpc.CallOption) (*InitEnclaveResponse, error) // SubmitL1Block - Used for the host to submit blocks to the enclave, these may be: - // a. historic block - if the enclave is behind and in the process of catching up with the L1 state - // b. the latest block published by the L1, to which the enclave should respond with a rollup + // + // a. historic block - if the enclave is behind and in the process of catching up with the L1 state + // b. the latest block published by the L1, to which the enclave should respond with a rollup + // // It is the responsibility of the host to gossip the returned rollup // For good functioning the caller should always submit blocks ordered by height // submitting a block before receiving ancestors of it, will result in it being ignored @@ -89,7 +123,7 @@ func NewEnclaveProtoClient(cc grpc.ClientConnInterface) EnclaveProtoClient { func (c *enclaveProtoClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { out := new(StatusResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Status", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_Status_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -98,7 +132,7 @@ func (c *enclaveProtoClient) Status(ctx context.Context, in *StatusRequest, opts func (c *enclaveProtoClient) Attestation(ctx context.Context, in *AttestationRequest, opts ...grpc.CallOption) (*AttestationResponse, error) { out := new(AttestationResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Attestation", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_Attestation_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -107,7 +141,7 @@ func (c *enclaveProtoClient) Attestation(ctx context.Context, in *AttestationReq func (c *enclaveProtoClient) GenerateSecret(ctx context.Context, in *GenerateSecretRequest, opts ...grpc.CallOption) (*GenerateSecretResponse, error) { out := new(GenerateSecretResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GenerateSecret", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GenerateSecret_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -116,7 +150,7 @@ func (c *enclaveProtoClient) GenerateSecret(ctx context.Context, in *GenerateSec func (c *enclaveProtoClient) InitEnclave(ctx context.Context, in *InitEnclaveRequest, opts ...grpc.CallOption) (*InitEnclaveResponse, error) { out := new(InitEnclaveResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/InitEnclave", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_InitEnclave_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -125,7 +159,7 @@ func (c *enclaveProtoClient) InitEnclave(ctx context.Context, in *InitEnclaveReq func (c *enclaveProtoClient) SubmitL1Block(ctx context.Context, in *SubmitBlockRequest, opts ...grpc.CallOption) (*SubmitBlockResponse, error) { out := new(SubmitBlockResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/SubmitL1Block", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_SubmitL1Block_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -134,7 +168,7 @@ func (c *enclaveProtoClient) SubmitL1Block(ctx context.Context, in *SubmitBlockR func (c *enclaveProtoClient) SubmitTx(ctx context.Context, in *SubmitTxRequest, opts ...grpc.CallOption) (*SubmitTxResponse, error) { out := new(SubmitTxResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/SubmitTx", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_SubmitTx_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -143,7 +177,7 @@ func (c *enclaveProtoClient) SubmitTx(ctx context.Context, in *SubmitTxRequest, func (c *enclaveProtoClient) SubmitBatch(ctx context.Context, in *SubmitBatchRequest, opts ...grpc.CallOption) (*SubmitBatchResponse, error) { out := new(SubmitBatchResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/SubmitBatch", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_SubmitBatch_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -152,7 +186,7 @@ func (c *enclaveProtoClient) SubmitBatch(ctx context.Context, in *SubmitBatchReq func (c *enclaveProtoClient) ObsCall(ctx context.Context, in *ObsCallRequest, opts ...grpc.CallOption) (*ObsCallResponse, error) { out := new(ObsCallResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/ObsCall", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_ObsCall_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -161,7 +195,7 @@ func (c *enclaveProtoClient) ObsCall(ctx context.Context, in *ObsCallRequest, op func (c *enclaveProtoClient) GetTransactionCount(ctx context.Context, in *GetTransactionCountRequest, opts ...grpc.CallOption) (*GetTransactionCountResponse, error) { out := new(GetTransactionCountResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetTransactionCount", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetTransactionCount_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -170,7 +204,7 @@ func (c *enclaveProtoClient) GetTransactionCount(ctx context.Context, in *GetTra func (c *enclaveProtoClient) Stop(ctx context.Context, in *StopRequest, opts ...grpc.CallOption) (*StopResponse, error) { out := new(StopResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Stop", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_Stop_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -179,7 +213,7 @@ func (c *enclaveProtoClient) Stop(ctx context.Context, in *StopRequest, opts ... func (c *enclaveProtoClient) GetTransaction(ctx context.Context, in *GetTransactionRequest, opts ...grpc.CallOption) (*GetTransactionResponse, error) { out := new(GetTransactionResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetTransaction", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetTransaction_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -188,7 +222,7 @@ func (c *enclaveProtoClient) GetTransaction(ctx context.Context, in *GetTransact func (c *enclaveProtoClient) GetTransactionReceipt(ctx context.Context, in *GetTransactionReceiptRequest, opts ...grpc.CallOption) (*GetTransactionReceiptResponse, error) { out := new(GetTransactionReceiptResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetTransactionReceipt", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetTransactionReceipt_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -197,7 +231,7 @@ func (c *enclaveProtoClient) GetTransactionReceipt(ctx context.Context, in *GetT func (c *enclaveProtoClient) GetBalance(ctx context.Context, in *GetBalanceRequest, opts ...grpc.CallOption) (*GetBalanceResponse, error) { out := new(GetBalanceResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetBalance", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetBalance_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -206,7 +240,7 @@ func (c *enclaveProtoClient) GetBalance(ctx context.Context, in *GetBalanceReque func (c *enclaveProtoClient) GetCode(ctx context.Context, in *GetCodeRequest, opts ...grpc.CallOption) (*GetCodeResponse, error) { out := new(GetCodeResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetCode", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetCode_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -215,7 +249,7 @@ func (c *enclaveProtoClient) GetCode(ctx context.Context, in *GetCodeRequest, op func (c *enclaveProtoClient) Subscribe(ctx context.Context, in *SubscribeRequest, opts ...grpc.CallOption) (*SubscribeResponse, error) { out := new(SubscribeResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Subscribe", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_Subscribe_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -224,7 +258,7 @@ func (c *enclaveProtoClient) Subscribe(ctx context.Context, in *SubscribeRequest func (c *enclaveProtoClient) Unsubscribe(ctx context.Context, in *UnsubscribeRequest, opts ...grpc.CallOption) (*UnsubscribeResponse, error) { out := new(UnsubscribeResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Unsubscribe", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_Unsubscribe_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -233,7 +267,7 @@ func (c *enclaveProtoClient) Unsubscribe(ctx context.Context, in *UnsubscribeReq func (c *enclaveProtoClient) EstimateGas(ctx context.Context, in *EstimateGasRequest, opts ...grpc.CallOption) (*EstimateGasResponse, error) { out := new(EstimateGasResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/EstimateGas", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_EstimateGas_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -242,7 +276,7 @@ func (c *enclaveProtoClient) EstimateGas(ctx context.Context, in *EstimateGasReq func (c *enclaveProtoClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) { out := new(GetLogsResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetLogs", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetLogs_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -251,7 +285,7 @@ func (c *enclaveProtoClient) GetLogs(ctx context.Context, in *GetLogsRequest, op func (c *enclaveProtoClient) HealthCheck(ctx context.Context, in *EmptyArgs, opts ...grpc.CallOption) (*HealthCheckResponse, error) { out := new(HealthCheckResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/HealthCheck", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_HealthCheck_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -260,7 +294,7 @@ func (c *enclaveProtoClient) HealthCheck(ctx context.Context, in *EmptyArgs, opt func (c *enclaveProtoClient) GetBatch(ctx context.Context, in *GetBatchRequest, opts ...grpc.CallOption) (*GetBatchResponse, error) { out := new(GetBatchResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetBatch", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetBatch_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -269,7 +303,7 @@ func (c *enclaveProtoClient) GetBatch(ctx context.Context, in *GetBatchRequest, func (c *enclaveProtoClient) GetBatchBySeqNo(ctx context.Context, in *GetBatchBySeqNoRequest, opts ...grpc.CallOption) (*GetBatchResponse, error) { out := new(GetBatchResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetBatchBySeqNo", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetBatchBySeqNo_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -278,7 +312,7 @@ func (c *enclaveProtoClient) GetBatchBySeqNo(ctx context.Context, in *GetBatchBy func (c *enclaveProtoClient) CreateBatch(ctx context.Context, in *CreateBatchRequest, opts ...grpc.CallOption) (*CreateBatchResponse, error) { out := new(CreateBatchResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/CreateBatch", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_CreateBatch_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -287,7 +321,7 @@ func (c *enclaveProtoClient) CreateBatch(ctx context.Context, in *CreateBatchReq func (c *enclaveProtoClient) CreateRollup(ctx context.Context, in *CreateRollupRequest, opts ...grpc.CallOption) (*CreateRollupResponse, error) { out := new(CreateRollupResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/CreateRollup", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_CreateRollup_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -296,7 +330,7 @@ func (c *enclaveProtoClient) CreateRollup(ctx context.Context, in *CreateRollupR func (c *enclaveProtoClient) DebugTraceTransaction(ctx context.Context, in *DebugTraceTransactionRequest, opts ...grpc.CallOption) (*DebugTraceTransactionResponse, error) { out := new(DebugTraceTransactionResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/DebugTraceTransaction", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_DebugTraceTransaction_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -304,7 +338,7 @@ func (c *enclaveProtoClient) DebugTraceTransaction(ctx context.Context, in *Debu } func (c *enclaveProtoClient) StreamL2Updates(ctx context.Context, in *StreamL2UpdatesRequest, opts ...grpc.CallOption) (EnclaveProto_StreamL2UpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &EnclaveProto_ServiceDesc.Streams[0], "/generated.EnclaveProto/StreamL2Updates", opts...) + stream, err := c.cc.NewStream(ctx, &EnclaveProto_ServiceDesc.Streams[0], EnclaveProto_StreamL2Updates_FullMethodName, opts...) if err != nil { return nil, err } @@ -337,7 +371,7 @@ func (x *enclaveProtoStreamL2UpdatesClient) Recv() (*EncodedUpdateResponse, erro func (c *enclaveProtoClient) DebugEventLogRelevancy(ctx context.Context, in *DebugEventLogRelevancyRequest, opts ...grpc.CallOption) (*DebugEventLogRelevancyResponse, error) { out := new(DebugEventLogRelevancyResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/DebugEventLogRelevancy", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_DebugEventLogRelevancy_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -346,7 +380,7 @@ func (c *enclaveProtoClient) DebugEventLogRelevancy(ctx context.Context, in *Deb func (c *enclaveProtoClient) GetTotalContractCount(ctx context.Context, in *GetTotalContractCountRequest, opts ...grpc.CallOption) (*GetTotalContractCountResponse, error) { out := new(GetTotalContractCountResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetTotalContractCount", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetTotalContractCount_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -355,7 +389,7 @@ func (c *enclaveProtoClient) GetTotalContractCount(ctx context.Context, in *GetT func (c *enclaveProtoClient) GetReceiptsByAddress(ctx context.Context, in *GetReceiptsByAddressRequest, opts ...grpc.CallOption) (*GetReceiptsByAddressResponse, error) { out := new(GetReceiptsByAddressResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetReceiptsByAddress", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetReceiptsByAddress_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -364,7 +398,7 @@ func (c *enclaveProtoClient) GetReceiptsByAddress(ctx context.Context, in *GetRe func (c *enclaveProtoClient) GetPublicTransactionData(ctx context.Context, in *GetPublicTransactionDataRequest, opts ...grpc.CallOption) (*GetPublicTransactionDataResponse, error) { out := new(GetPublicTransactionDataResponse) - err := c.cc.Invoke(ctx, "/generated.EnclaveProto/GetPublicTransactionData", in, out, opts...) + err := c.cc.Invoke(ctx, EnclaveProto_GetPublicTransactionData_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -384,8 +418,10 @@ type EnclaveProtoServer interface { // Init - initialise an enclave with a seed received by another enclave InitEnclave(context.Context, *InitEnclaveRequest) (*InitEnclaveResponse, error) // SubmitL1Block - Used for the host to submit blocks to the enclave, these may be: - // a. historic block - if the enclave is behind and in the process of catching up with the L1 state - // b. the latest block published by the L1, to which the enclave should respond with a rollup + // + // a. historic block - if the enclave is behind and in the process of catching up with the L1 state + // b. the latest block published by the L1, to which the enclave should respond with a rollup + // // It is the responsibility of the host to gossip the returned rollup // For good functioning the caller should always submit blocks ordered by height // submitting a block before receiving ancestors of it, will result in it being ignored @@ -547,7 +583,7 @@ func _EnclaveProto_Status_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/Status", + FullMethod: EnclaveProto_Status_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).Status(ctx, req.(*StatusRequest)) @@ -565,7 +601,7 @@ func _EnclaveProto_Attestation_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/Attestation", + FullMethod: EnclaveProto_Attestation_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).Attestation(ctx, req.(*AttestationRequest)) @@ -583,7 +619,7 @@ func _EnclaveProto_GenerateSecret_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GenerateSecret", + FullMethod: EnclaveProto_GenerateSecret_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GenerateSecret(ctx, req.(*GenerateSecretRequest)) @@ -601,7 +637,7 @@ func _EnclaveProto_InitEnclave_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/InitEnclave", + FullMethod: EnclaveProto_InitEnclave_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).InitEnclave(ctx, req.(*InitEnclaveRequest)) @@ -619,7 +655,7 @@ func _EnclaveProto_SubmitL1Block_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/SubmitL1Block", + FullMethod: EnclaveProto_SubmitL1Block_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).SubmitL1Block(ctx, req.(*SubmitBlockRequest)) @@ -637,7 +673,7 @@ func _EnclaveProto_SubmitTx_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/SubmitTx", + FullMethod: EnclaveProto_SubmitTx_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).SubmitTx(ctx, req.(*SubmitTxRequest)) @@ -655,7 +691,7 @@ func _EnclaveProto_SubmitBatch_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/SubmitBatch", + FullMethod: EnclaveProto_SubmitBatch_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).SubmitBatch(ctx, req.(*SubmitBatchRequest)) @@ -673,7 +709,7 @@ func _EnclaveProto_ObsCall_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/ObsCall", + FullMethod: EnclaveProto_ObsCall_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).ObsCall(ctx, req.(*ObsCallRequest)) @@ -691,7 +727,7 @@ func _EnclaveProto_GetTransactionCount_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetTransactionCount", + FullMethod: EnclaveProto_GetTransactionCount_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetTransactionCount(ctx, req.(*GetTransactionCountRequest)) @@ -709,7 +745,7 @@ func _EnclaveProto_Stop_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/Stop", + FullMethod: EnclaveProto_Stop_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).Stop(ctx, req.(*StopRequest)) @@ -727,7 +763,7 @@ func _EnclaveProto_GetTransaction_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetTransaction", + FullMethod: EnclaveProto_GetTransaction_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetTransaction(ctx, req.(*GetTransactionRequest)) @@ -745,7 +781,7 @@ func _EnclaveProto_GetTransactionReceipt_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetTransactionReceipt", + FullMethod: EnclaveProto_GetTransactionReceipt_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetTransactionReceipt(ctx, req.(*GetTransactionReceiptRequest)) @@ -763,7 +799,7 @@ func _EnclaveProto_GetBalance_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetBalance", + FullMethod: EnclaveProto_GetBalance_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetBalance(ctx, req.(*GetBalanceRequest)) @@ -781,7 +817,7 @@ func _EnclaveProto_GetCode_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetCode", + FullMethod: EnclaveProto_GetCode_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetCode(ctx, req.(*GetCodeRequest)) @@ -799,7 +835,7 @@ func _EnclaveProto_Subscribe_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/Subscribe", + FullMethod: EnclaveProto_Subscribe_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).Subscribe(ctx, req.(*SubscribeRequest)) @@ -817,7 +853,7 @@ func _EnclaveProto_Unsubscribe_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/Unsubscribe", + FullMethod: EnclaveProto_Unsubscribe_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).Unsubscribe(ctx, req.(*UnsubscribeRequest)) @@ -835,7 +871,7 @@ func _EnclaveProto_EstimateGas_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/EstimateGas", + FullMethod: EnclaveProto_EstimateGas_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).EstimateGas(ctx, req.(*EstimateGasRequest)) @@ -853,7 +889,7 @@ func _EnclaveProto_GetLogs_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetLogs", + FullMethod: EnclaveProto_GetLogs_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetLogs(ctx, req.(*GetLogsRequest)) @@ -871,7 +907,7 @@ func _EnclaveProto_HealthCheck_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/HealthCheck", + FullMethod: EnclaveProto_HealthCheck_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).HealthCheck(ctx, req.(*EmptyArgs)) @@ -889,7 +925,7 @@ func _EnclaveProto_GetBatch_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetBatch", + FullMethod: EnclaveProto_GetBatch_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetBatch(ctx, req.(*GetBatchRequest)) @@ -907,7 +943,7 @@ func _EnclaveProto_GetBatchBySeqNo_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetBatchBySeqNo", + FullMethod: EnclaveProto_GetBatchBySeqNo_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetBatchBySeqNo(ctx, req.(*GetBatchBySeqNoRequest)) @@ -925,7 +961,7 @@ func _EnclaveProto_CreateBatch_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/CreateBatch", + FullMethod: EnclaveProto_CreateBatch_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).CreateBatch(ctx, req.(*CreateBatchRequest)) @@ -943,7 +979,7 @@ func _EnclaveProto_CreateRollup_Handler(srv interface{}, ctx context.Context, de } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/CreateRollup", + FullMethod: EnclaveProto_CreateRollup_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).CreateRollup(ctx, req.(*CreateRollupRequest)) @@ -961,7 +997,7 @@ func _EnclaveProto_DebugTraceTransaction_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/DebugTraceTransaction", + FullMethod: EnclaveProto_DebugTraceTransaction_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).DebugTraceTransaction(ctx, req.(*DebugTraceTransactionRequest)) @@ -1000,7 +1036,7 @@ func _EnclaveProto_DebugEventLogRelevancy_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/DebugEventLogRelevancy", + FullMethod: EnclaveProto_DebugEventLogRelevancy_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).DebugEventLogRelevancy(ctx, req.(*DebugEventLogRelevancyRequest)) @@ -1018,7 +1054,7 @@ func _EnclaveProto_GetTotalContractCount_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetTotalContractCount", + FullMethod: EnclaveProto_GetTotalContractCount_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetTotalContractCount(ctx, req.(*GetTotalContractCountRequest)) @@ -1036,7 +1072,7 @@ func _EnclaveProto_GetReceiptsByAddress_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetReceiptsByAddress", + FullMethod: EnclaveProto_GetReceiptsByAddress_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetReceiptsByAddress(ctx, req.(*GetReceiptsByAddressRequest)) @@ -1054,7 +1090,7 @@ func _EnclaveProto_GetPublicTransactionData_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/generated.EnclaveProto/GetPublicTransactionData", + FullMethod: EnclaveProto_GetPublicTransactionData_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EnclaveProtoServer).GetPublicTransactionData(ctx, req.(*GetPublicTransactionDataRequest)) diff --git a/go/host/enclave/guardian.go b/go/host/enclave/guardian.go index 23c94b470e..83387ebdde 100644 --- a/go/host/enclave/guardian.go +++ b/go/host/enclave/guardian.go @@ -62,6 +62,7 @@ type Guardian struct { batchInterval time.Duration rollupInterval time.Duration + blockTime time.Duration l1StartHash gethcommon.Hash maxRollupSize uint64 @@ -80,6 +81,7 @@ func NewGuardian(cfg *config.HostConfig, hostData host.Identity, serviceLocator rollupInterval: cfg.RollupInterval, l1StartHash: cfg.L1StartHash, maxRollupSize: cfg.MaxRollupSize, + blockTime: cfg.L1BlockTime, db: db, hostInterrupter: interrupter, logger: logger, @@ -517,81 +519,50 @@ func (g *Guardian) periodicBatchProduction() { } } -func (g *Guardian) periodicRollupProduction() { //nolint:gocognit +func (g *Guardian) periodicRollupProduction() { defer g.logger.Info("Stopping rollup production") - // rollup at least at every g.rollupInterval - rollupInterval := g.rollupInterval - if rollupInterval == 0 { - g.logger.Crit("invalid rollup interval 0") - } - rollupIntervalBasedTicker := time.NewTicker(rollupInterval) - - // every 5sec check if it should create a new rollup - rollupSizeCheckTicker := time.NewTicker(5 * time.Second) + // check rollup every l1 block time + rollupCheckTicker := time.NewTicker(g.blockTime) + lastSuccessfulRollup := time.Now() for { select { - case <-rollupIntervalBasedTicker.C: - if !g.state.IsUpToDate() { - // if we're behind the L1, we don't want to produce rollups - g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) - continue - } - - fromBatch, err := g.getLastestBatchNo() - if err != nil { - g.logger.Warn("encountered error while trying to retrieve latest sequence number", log.ErrKey, err) - continue - } - - producedRollup, err := g.enclaveClient.CreateRollup(fromBatch) - if err != nil { - g.logger.Error("unable to produce rollup", log.ErrKey, err) - } else { - fmt.Println(time.Now().String(), " - PRODUCING rollup from config'd rollupInterval - lastBatchNo: ", fromBatch) - g.sl.L1Publisher().PublishRollup(producedRollup) - fmt.Println(time.Now().String(), " - FINISHED PRODUCED rollup from config'd rollupInterval ") - } - - case <-rollupSizeCheckTicker.C: + case <-rollupCheckTicker.C: if !g.state.IsUpToDate() { // if we're behind the L1, we don't want to produce rollups g.logger.Debug("skipping rollup production because L1 is not up to date", "state", g.state) continue } - fromBatch, err := g.getLastestBatchNo() + fromBatch, err := g.getLatestBatchNo() if err != nil { g.logger.Warn("encountered error while trying to retrieve latest sequence number", log.ErrKey, err) continue } - fmt.Println(time.Now().String(), " - 5sec rollup creation CHECK - lastBatchNo: ", fromBatch) - availBatchesSumSize, err := g.getBatchesAfterSize(fromBatch) + availBatchesSumSize, err := g.calculateNonRolledupBatchesSize(fromBatch) if err != nil { g.logger.Error("unable to GetBatchesAfterSize rollup", log.ErrKey, err) - continue } - fmt.Println(time.Now().String(), " - Sum of bytes of Batches not yet rolled up: - ", availBatchesSumSize, " bytes") - if availBatchesSumSize >= g.maxRollupSize { + // produce and issue rollup when either: + // it has passed g.rollupInterval from last lastSuccessfulRollup + // or the size of accumulated batches is > g.maxRollupSize + if time.Since(lastSuccessfulRollup) > g.rollupInterval || availBatchesSumSize >= g.maxRollupSize { producedRollup, err := g.enclaveClient.CreateRollup(fromBatch) if err != nil { - g.logger.Error("unable to produce rollup", log.ErrKey, err) - } else { - fmt.Println(time.Now().String(), " - PRODUCING rollup from 5sec check ") - g.sl.L1Publisher().PublishRollup(producedRollup) + g.logger.Error("unable to create rollup", "batchSeqNo", fromBatch) + continue } - rollupSizeCheckTicker.Reset(5 * time.Second) - rollupIntervalBasedTicker.Reset(rollupInterval) - fmt.Println(time.Now().String(), " - FINISHED PRODUCING rollup from 5sec check ") + // this method waits until the receipt is received + g.sl.L1Publisher().PublishRollup(producedRollup) + lastSuccessfulRollup = time.Now() } case <-g.hostInterrupter.Done(): // interrupted - end periodic process - rollupIntervalBasedTicker.Stop() - rollupSizeCheckTicker.Stop() + rollupCheckTicker.Stop() return } } @@ -647,9 +618,13 @@ func (g *Guardian) streamEnclaveData() { } } -func (g *Guardian) getBatchesAfterSize(seqNo uint64) (uint64, error) { +func (g *Guardian) calculateNonRolledupBatchesSize(seqNo uint64) (uint64, error) { var size uint64 + if seqNo == 0 { // don't calculate for seqNo 0 batches + return 0, nil + } + currentNo := seqNo for { batch, err := g.sl.L2Repo().FetchBatchBySeqNo(big.NewInt(int64(currentNo))) @@ -671,10 +646,9 @@ func (g *Guardian) getBatchesAfterSize(seqNo uint64) (uint64, error) { return size, nil } -func (g *Guardian) getLastestBatchNo() (uint64, error) { +func (g *Guardian) getLatestBatchNo() (uint64, error) { lastBatchNo, err := g.sl.L1Publisher().FetchLatestSeqNo() if err != nil { - fmt.Println(err) return 0, err } fromBatch := lastBatchNo.Uint64() diff --git a/go/node/docker_node.go b/go/node/docker_node.go index f17ad39b2c..baa3ac1247 100644 --- a/go/node/docker_node.go +++ b/go/node/docker_node.go @@ -111,6 +111,7 @@ func (d *DockerNode) startHost() error { "-p2pBindAddress", fmt.Sprintf("0.0.0.0:%d", d.cfg.hostP2PPort), "-clientRPCPortHttp", fmt.Sprintf("%d", d.cfg.hostHTTPPort), "-clientRPCPortWs", fmt.Sprintf("%d", d.cfg.hostWSPort), + "-maxRollupSize=65536", // host persistence hardcoded to use /data dir within the container, this needs to be mounted fmt.Sprintf("-useInMemoryDB=%t", d.cfg.hostInMemDB), fmt.Sprintf("-debugNamespaceEnabled=%t", d.cfg.debugNamespaceEnabled), From ccb697cb142d4d16a2365e93ccedfabf4265dc1f Mon Sep 17 00:00:00 2001 From: otherview Date: Mon, 25 Sep 2023 11:55:05 +0100 Subject: [PATCH 5/5] ci fix --- go/host/container/cli.go | 1 + 1 file changed, 1 insertion(+) diff --git a/go/host/container/cli.go b/go/host/container/cli.go index a855e3f1fe..63767d418e 100644 --- a/go/host/container/cli.go +++ b/go/host/container/cli.go @@ -50,6 +50,7 @@ type HostConfigToml struct { RollupInterval string IsInboundP2PDisabled bool L1BlockTime int + MaxRollupSize int } // ParseConfig returns a config.HostInputConfig based on either the file identified by the `config` flag, or the flags with