// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 // protoc v3.21.12 // source: trace.proto package pb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type TraceEvent_Type int32 const ( TraceEvent_PUBLISH_MESSAGE TraceEvent_Type = 0 TraceEvent_REJECT_MESSAGE TraceEvent_Type = 1 TraceEvent_DUPLICATE_MESSAGE TraceEvent_Type = 2 TraceEvent_DELIVER_MESSAGE TraceEvent_Type = 3 TraceEvent_ADD_PEER TraceEvent_Type = 4 TraceEvent_REMOVE_PEER TraceEvent_Type = 5 TraceEvent_RECV_RPC TraceEvent_Type = 6 TraceEvent_SEND_RPC TraceEvent_Type = 7 TraceEvent_DROP_RPC TraceEvent_Type = 8 TraceEvent_JOIN TraceEvent_Type = 9 TraceEvent_LEAVE TraceEvent_Type = 10 TraceEvent_GRAFT TraceEvent_Type = 11 TraceEvent_PRUNE TraceEvent_Type = 12 ) // Enum value maps for TraceEvent_Type. var ( TraceEvent_Type_name = map[int32]string{ 0: "PUBLISH_MESSAGE", 1: "REJECT_MESSAGE", 2: "DUPLICATE_MESSAGE", 3: "DELIVER_MESSAGE", 4: "ADD_PEER", 5: "REMOVE_PEER", 6: "RECV_RPC", 7: "SEND_RPC", 8: "DROP_RPC", 9: "JOIN", 10: "LEAVE", 11: "GRAFT", 12: "PRUNE", } TraceEvent_Type_value = map[string]int32{ "PUBLISH_MESSAGE": 0, "REJECT_MESSAGE": 1, "DUPLICATE_MESSAGE": 2, "DELIVER_MESSAGE": 3, "ADD_PEER": 4, "REMOVE_PEER": 5, "RECV_RPC": 6, "SEND_RPC": 7, "DROP_RPC": 8, "JOIN": 9, "LEAVE": 10, "GRAFT": 11, "PRUNE": 12, } ) func (x TraceEvent_Type) Enum() *TraceEvent_Type { p := new(TraceEvent_Type) *p = x return p } func (x TraceEvent_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TraceEvent_Type) Descriptor() protoreflect.EnumDescriptor { return file_trace_proto_enumTypes[0].Descriptor() } func (TraceEvent_Type) Type() protoreflect.EnumType { return &file_trace_proto_enumTypes[0] } func (x TraceEvent_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TraceEvent_Type.Descriptor instead. func (TraceEvent_Type) EnumDescriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 0} } type TraceEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type *TraceEvent_Type `protobuf:"varint,1,opt,name=type,proto3,enum=blossomsub.pb.TraceEvent_Type,oneof" json:"type,omitempty"` PeerID []byte `protobuf:"bytes,2,opt,name=peerID,proto3,oneof" json:"peerID,omitempty"` Timestamp *int64 `protobuf:"varint,3,opt,name=timestamp,proto3,oneof" json:"timestamp,omitempty"` PublishMessage *TraceEvent_PublishMessage `protobuf:"bytes,4,opt,name=publishMessage,proto3,oneof" json:"publishMessage,omitempty"` RejectMessage *TraceEvent_RejectMessage `protobuf:"bytes,5,opt,name=rejectMessage,proto3,oneof" json:"rejectMessage,omitempty"` DuplicateMessage *TraceEvent_DuplicateMessage `protobuf:"bytes,6,opt,name=duplicateMessage,proto3,oneof" json:"duplicateMessage,omitempty"` DeliverMessage *TraceEvent_DeliverMessage `protobuf:"bytes,7,opt,name=deliverMessage,proto3,oneof" json:"deliverMessage,omitempty"` AddPeer *TraceEvent_AddPeer `protobuf:"bytes,8,opt,name=addPeer,proto3,oneof" json:"addPeer,omitempty"` RemovePeer *TraceEvent_RemovePeer `protobuf:"bytes,9,opt,name=removePeer,proto3,oneof" json:"removePeer,omitempty"` RecvRPC *TraceEvent_RecvRPC `protobuf:"bytes,10,opt,name=recvRPC,proto3,oneof" json:"recvRPC,omitempty"` SendRPC *TraceEvent_SendRPC `protobuf:"bytes,11,opt,name=sendRPC,proto3,oneof" json:"sendRPC,omitempty"` DropRPC *TraceEvent_DropRPC `protobuf:"bytes,12,opt,name=dropRPC,proto3,oneof" json:"dropRPC,omitempty"` Join *TraceEvent_Join `protobuf:"bytes,13,opt,name=join,proto3,oneof" json:"join,omitempty"` Leave *TraceEvent_Leave `protobuf:"bytes,14,opt,name=leave,proto3,oneof" json:"leave,omitempty"` Graft *TraceEvent_Graft `protobuf:"bytes,15,opt,name=graft,proto3,oneof" json:"graft,omitempty"` Prune *TraceEvent_Prune `protobuf:"bytes,16,opt,name=prune,proto3,oneof" json:"prune,omitempty"` } func (x *TraceEvent) Reset() { *x = TraceEvent{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent) ProtoMessage() {} func (x *TraceEvent) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[0] 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 TraceEvent.ProtoReflect.Descriptor instead. func (*TraceEvent) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0} } func (x *TraceEvent) GetType() TraceEvent_Type { if x != nil && x.Type != nil { return *x.Type } return TraceEvent_PUBLISH_MESSAGE } func (x *TraceEvent) GetPeerID() []byte { if x != nil { return x.PeerID } return nil } func (x *TraceEvent) GetTimestamp() int64 { if x != nil && x.Timestamp != nil { return *x.Timestamp } return 0 } func (x *TraceEvent) GetPublishMessage() *TraceEvent_PublishMessage { if x != nil { return x.PublishMessage } return nil } func (x *TraceEvent) GetRejectMessage() *TraceEvent_RejectMessage { if x != nil { return x.RejectMessage } return nil } func (x *TraceEvent) GetDuplicateMessage() *TraceEvent_DuplicateMessage { if x != nil { return x.DuplicateMessage } return nil } func (x *TraceEvent) GetDeliverMessage() *TraceEvent_DeliverMessage { if x != nil { return x.DeliverMessage } return nil } func (x *TraceEvent) GetAddPeer() *TraceEvent_AddPeer { if x != nil { return x.AddPeer } return nil } func (x *TraceEvent) GetRemovePeer() *TraceEvent_RemovePeer { if x != nil { return x.RemovePeer } return nil } func (x *TraceEvent) GetRecvRPC() *TraceEvent_RecvRPC { if x != nil { return x.RecvRPC } return nil } func (x *TraceEvent) GetSendRPC() *TraceEvent_SendRPC { if x != nil { return x.SendRPC } return nil } func (x *TraceEvent) GetDropRPC() *TraceEvent_DropRPC { if x != nil { return x.DropRPC } return nil } func (x *TraceEvent) GetJoin() *TraceEvent_Join { if x != nil { return x.Join } return nil } func (x *TraceEvent) GetLeave() *TraceEvent_Leave { if x != nil { return x.Leave } return nil } func (x *TraceEvent) GetGraft() *TraceEvent_Graft { if x != nil { return x.Graft } return nil } func (x *TraceEvent) GetPrune() *TraceEvent_Prune { if x != nil { return x.Prune } return nil } type TraceEventBatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Batch []*TraceEvent `protobuf:"bytes,1,rep,name=batch,proto3" json:"batch,omitempty"` } func (x *TraceEventBatch) Reset() { *x = TraceEventBatch{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEventBatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEventBatch) ProtoMessage() {} func (x *TraceEventBatch) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[1] 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 TraceEventBatch.ProtoReflect.Descriptor instead. func (*TraceEventBatch) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{1} } func (x *TraceEventBatch) GetBatch() []*TraceEvent { if x != nil { return x.Batch } return nil } type TraceEvent_PublishMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageID []byte `protobuf:"bytes,1,opt,name=messageID,proto3,oneof" json:"messageID,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_PublishMessage) Reset() { *x = TraceEvent_PublishMessage{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_PublishMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_PublishMessage) ProtoMessage() {} func (x *TraceEvent_PublishMessage) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_PublishMessage.ProtoReflect.Descriptor instead. func (*TraceEvent_PublishMessage) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 0} } func (x *TraceEvent_PublishMessage) GetMessageID() []byte { if x != nil { return x.MessageID } return nil } func (x *TraceEvent_PublishMessage) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_RejectMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageID []byte `protobuf:"bytes,1,opt,name=messageID,proto3,oneof" json:"messageID,omitempty"` ReceivedFrom []byte `protobuf:"bytes,2,opt,name=receivedFrom,proto3,oneof" json:"receivedFrom,omitempty"` Reason *string `protobuf:"bytes,3,opt,name=reason,proto3,oneof" json:"reason,omitempty"` Bitmask []byte `protobuf:"bytes,4,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_RejectMessage) Reset() { *x = TraceEvent_RejectMessage{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_RejectMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_RejectMessage) ProtoMessage() {} func (x *TraceEvent_RejectMessage) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_RejectMessage.ProtoReflect.Descriptor instead. func (*TraceEvent_RejectMessage) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 1} } func (x *TraceEvent_RejectMessage) GetMessageID() []byte { if x != nil { return x.MessageID } return nil } func (x *TraceEvent_RejectMessage) GetReceivedFrom() []byte { if x != nil { return x.ReceivedFrom } return nil } func (x *TraceEvent_RejectMessage) GetReason() string { if x != nil && x.Reason != nil { return *x.Reason } return "" } func (x *TraceEvent_RejectMessage) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_DuplicateMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageID []byte `protobuf:"bytes,1,opt,name=messageID,proto3,oneof" json:"messageID,omitempty"` ReceivedFrom []byte `protobuf:"bytes,2,opt,name=receivedFrom,proto3,oneof" json:"receivedFrom,omitempty"` Bitmask []byte `protobuf:"bytes,3,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_DuplicateMessage) Reset() { *x = TraceEvent_DuplicateMessage{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_DuplicateMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_DuplicateMessage) ProtoMessage() {} func (x *TraceEvent_DuplicateMessage) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_DuplicateMessage.ProtoReflect.Descriptor instead. func (*TraceEvent_DuplicateMessage) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 2} } func (x *TraceEvent_DuplicateMessage) GetMessageID() []byte { if x != nil { return x.MessageID } return nil } func (x *TraceEvent_DuplicateMessage) GetReceivedFrom() []byte { if x != nil { return x.ReceivedFrom } return nil } func (x *TraceEvent_DuplicateMessage) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_DeliverMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageID []byte `protobuf:"bytes,1,opt,name=messageID,proto3,oneof" json:"messageID,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` ReceivedFrom []byte `protobuf:"bytes,3,opt,name=receivedFrom,proto3,oneof" json:"receivedFrom,omitempty"` } func (x *TraceEvent_DeliverMessage) Reset() { *x = TraceEvent_DeliverMessage{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_DeliverMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_DeliverMessage) ProtoMessage() {} func (x *TraceEvent_DeliverMessage) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_DeliverMessage.ProtoReflect.Descriptor instead. func (*TraceEvent_DeliverMessage) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 3} } func (x *TraceEvent_DeliverMessage) GetMessageID() []byte { if x != nil { return x.MessageID } return nil } func (x *TraceEvent_DeliverMessage) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } func (x *TraceEvent_DeliverMessage) GetReceivedFrom() []byte { if x != nil { return x.ReceivedFrom } return nil } type TraceEvent_AddPeer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PeerID []byte `protobuf:"bytes,1,opt,name=peerID,proto3,oneof" json:"peerID,omitempty"` Proto *string `protobuf:"bytes,2,opt,name=proto,proto3,oneof" json:"proto,omitempty"` } func (x *TraceEvent_AddPeer) Reset() { *x = TraceEvent_AddPeer{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_AddPeer) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_AddPeer) ProtoMessage() {} func (x *TraceEvent_AddPeer) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_AddPeer.ProtoReflect.Descriptor instead. func (*TraceEvent_AddPeer) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 4} } func (x *TraceEvent_AddPeer) GetPeerID() []byte { if x != nil { return x.PeerID } return nil } func (x *TraceEvent_AddPeer) GetProto() string { if x != nil && x.Proto != nil { return *x.Proto } return "" } type TraceEvent_RemovePeer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PeerID []byte `protobuf:"bytes,1,opt,name=peerID,proto3,oneof" json:"peerID,omitempty"` } func (x *TraceEvent_RemovePeer) Reset() { *x = TraceEvent_RemovePeer{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_RemovePeer) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_RemovePeer) ProtoMessage() {} func (x *TraceEvent_RemovePeer) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_RemovePeer.ProtoReflect.Descriptor instead. func (*TraceEvent_RemovePeer) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 5} } func (x *TraceEvent_RemovePeer) GetPeerID() []byte { if x != nil { return x.PeerID } return nil } type TraceEvent_RecvRPC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ReceivedFrom []byte `protobuf:"bytes,1,opt,name=receivedFrom,proto3,oneof" json:"receivedFrom,omitempty"` Meta *TraceEvent_RPCMeta `protobuf:"bytes,2,opt,name=meta,proto3,oneof" json:"meta,omitempty"` } func (x *TraceEvent_RecvRPC) Reset() { *x = TraceEvent_RecvRPC{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_RecvRPC) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_RecvRPC) ProtoMessage() {} func (x *TraceEvent_RecvRPC) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_RecvRPC.ProtoReflect.Descriptor instead. func (*TraceEvent_RecvRPC) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 6} } func (x *TraceEvent_RecvRPC) GetReceivedFrom() []byte { if x != nil { return x.ReceivedFrom } return nil } func (x *TraceEvent_RecvRPC) GetMeta() *TraceEvent_RPCMeta { if x != nil { return x.Meta } return nil } type TraceEvent_SendRPC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SendTo []byte `protobuf:"bytes,1,opt,name=sendTo,proto3,oneof" json:"sendTo,omitempty"` Meta *TraceEvent_RPCMeta `protobuf:"bytes,2,opt,name=meta,proto3,oneof" json:"meta,omitempty"` } func (x *TraceEvent_SendRPC) Reset() { *x = TraceEvent_SendRPC{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_SendRPC) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_SendRPC) ProtoMessage() {} func (x *TraceEvent_SendRPC) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_SendRPC.ProtoReflect.Descriptor instead. func (*TraceEvent_SendRPC) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 7} } func (x *TraceEvent_SendRPC) GetSendTo() []byte { if x != nil { return x.SendTo } return nil } func (x *TraceEvent_SendRPC) GetMeta() *TraceEvent_RPCMeta { if x != nil { return x.Meta } return nil } type TraceEvent_DropRPC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SendTo []byte `protobuf:"bytes,1,opt,name=sendTo,proto3,oneof" json:"sendTo,omitempty"` Meta *TraceEvent_RPCMeta `protobuf:"bytes,2,opt,name=meta,proto3,oneof" json:"meta,omitempty"` } func (x *TraceEvent_DropRPC) Reset() { *x = TraceEvent_DropRPC{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_DropRPC) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_DropRPC) ProtoMessage() {} func (x *TraceEvent_DropRPC) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_DropRPC.ProtoReflect.Descriptor instead. func (*TraceEvent_DropRPC) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 8} } func (x *TraceEvent_DropRPC) GetSendTo() []byte { if x != nil { return x.SendTo } return nil } func (x *TraceEvent_DropRPC) GetMeta() *TraceEvent_RPCMeta { if x != nil { return x.Meta } return nil } type TraceEvent_Join struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Bitmask []byte `protobuf:"bytes,1,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_Join) Reset() { *x = TraceEvent_Join{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_Join) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_Join) ProtoMessage() {} func (x *TraceEvent_Join) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_Join.ProtoReflect.Descriptor instead. func (*TraceEvent_Join) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 9} } func (x *TraceEvent_Join) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_Leave struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_Leave) Reset() { *x = TraceEvent_Leave{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_Leave) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_Leave) ProtoMessage() {} func (x *TraceEvent_Leave) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[12] 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 TraceEvent_Leave.ProtoReflect.Descriptor instead. func (*TraceEvent_Leave) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 10} } func (x *TraceEvent_Leave) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_Graft struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PeerID []byte `protobuf:"bytes,1,opt,name=peerID,proto3,oneof" json:"peerID,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_Graft) Reset() { *x = TraceEvent_Graft{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_Graft) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_Graft) ProtoMessage() {} func (x *TraceEvent_Graft) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_Graft.ProtoReflect.Descriptor instead. func (*TraceEvent_Graft) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 11} } func (x *TraceEvent_Graft) GetPeerID() []byte { if x != nil { return x.PeerID } return nil } func (x *TraceEvent_Graft) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_Prune struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PeerID []byte `protobuf:"bytes,1,opt,name=peerID,proto3,oneof" json:"peerID,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_Prune) Reset() { *x = TraceEvent_Prune{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_Prune) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_Prune) ProtoMessage() {} func (x *TraceEvent_Prune) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TraceEvent_Prune.ProtoReflect.Descriptor instead. func (*TraceEvent_Prune) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 12} } func (x *TraceEvent_Prune) GetPeerID() []byte { if x != nil { return x.PeerID } return nil } func (x *TraceEvent_Prune) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_RPCMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Messages []*TraceEvent_MessageMeta `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` Subscription []*TraceEvent_SubMeta `protobuf:"bytes,2,rep,name=subscription,proto3" json:"subscription,omitempty"` Control *TraceEvent_ControlMeta `protobuf:"bytes,3,opt,name=control,proto3,oneof" json:"control,omitempty"` } func (x *TraceEvent_RPCMeta) Reset() { *x = TraceEvent_RPCMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_RPCMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_RPCMeta) ProtoMessage() {} func (x *TraceEvent_RPCMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[15] 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 TraceEvent_RPCMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_RPCMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 13} } func (x *TraceEvent_RPCMeta) GetMessages() []*TraceEvent_MessageMeta { if x != nil { return x.Messages } return nil } func (x *TraceEvent_RPCMeta) GetSubscription() []*TraceEvent_SubMeta { if x != nil { return x.Subscription } return nil } func (x *TraceEvent_RPCMeta) GetControl() *TraceEvent_ControlMeta { if x != nil { return x.Control } return nil } type TraceEvent_MessageMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageID []byte `protobuf:"bytes,1,opt,name=messageID,proto3,oneof" json:"messageID,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_MessageMeta) Reset() { *x = TraceEvent_MessageMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_MessageMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_MessageMeta) ProtoMessage() {} func (x *TraceEvent_MessageMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[16] 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 TraceEvent_MessageMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_MessageMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 14} } func (x *TraceEvent_MessageMeta) GetMessageID() []byte { if x != nil { return x.MessageID } return nil } func (x *TraceEvent_MessageMeta) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_SubMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Subscribe *bool `protobuf:"varint,1,opt,name=subscribe,proto3,oneof" json:"subscribe,omitempty"` Bitmask []byte `protobuf:"bytes,2,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_SubMeta) Reset() { *x = TraceEvent_SubMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_SubMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_SubMeta) ProtoMessage() {} func (x *TraceEvent_SubMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[17] 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 TraceEvent_SubMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_SubMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 15} } func (x *TraceEvent_SubMeta) GetSubscribe() bool { if x != nil && x.Subscribe != nil { return *x.Subscribe } return false } func (x *TraceEvent_SubMeta) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_ControlMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ihave []*TraceEvent_ControlIHaveMeta `protobuf:"bytes,1,rep,name=ihave,proto3" json:"ihave,omitempty"` Iwant []*TraceEvent_ControlIWantMeta `protobuf:"bytes,2,rep,name=iwant,proto3" json:"iwant,omitempty"` Graft []*TraceEvent_ControlGraftMeta `protobuf:"bytes,3,rep,name=graft,proto3" json:"graft,omitempty"` Prune []*TraceEvent_ControlPruneMeta `protobuf:"bytes,4,rep,name=prune,proto3" json:"prune,omitempty"` } func (x *TraceEvent_ControlMeta) Reset() { *x = TraceEvent_ControlMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_ControlMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_ControlMeta) ProtoMessage() {} func (x *TraceEvent_ControlMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[18] 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 TraceEvent_ControlMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_ControlMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 16} } func (x *TraceEvent_ControlMeta) GetIhave() []*TraceEvent_ControlIHaveMeta { if x != nil { return x.Ihave } return nil } func (x *TraceEvent_ControlMeta) GetIwant() []*TraceEvent_ControlIWantMeta { if x != nil { return x.Iwant } return nil } func (x *TraceEvent_ControlMeta) GetGraft() []*TraceEvent_ControlGraftMeta { if x != nil { return x.Graft } return nil } func (x *TraceEvent_ControlMeta) GetPrune() []*TraceEvent_ControlPruneMeta { if x != nil { return x.Prune } return nil } type TraceEvent_ControlIHaveMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Bitmask []byte `protobuf:"bytes,1,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` MessageIDs [][]byte `protobuf:"bytes,2,rep,name=messageIDs,proto3" json:"messageIDs,omitempty"` } func (x *TraceEvent_ControlIHaveMeta) Reset() { *x = TraceEvent_ControlIHaveMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_ControlIHaveMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_ControlIHaveMeta) ProtoMessage() {} func (x *TraceEvent_ControlIHaveMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[19] 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 TraceEvent_ControlIHaveMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_ControlIHaveMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 17} } func (x *TraceEvent_ControlIHaveMeta) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } func (x *TraceEvent_ControlIHaveMeta) GetMessageIDs() [][]byte { if x != nil { return x.MessageIDs } return nil } type TraceEvent_ControlIWantMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageIDs [][]byte `protobuf:"bytes,1,rep,name=messageIDs,proto3" json:"messageIDs,omitempty"` } func (x *TraceEvent_ControlIWantMeta) Reset() { *x = TraceEvent_ControlIWantMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_ControlIWantMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_ControlIWantMeta) ProtoMessage() {} func (x *TraceEvent_ControlIWantMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_proto_msgTypes[20] 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 TraceEvent_ControlIWantMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_ControlIWantMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 18} } func (x *TraceEvent_ControlIWantMeta) GetMessageIDs() [][]byte { if x != nil { return x.MessageIDs } return nil } type TraceEvent_ControlGraftMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Bitmask []byte `protobuf:"bytes,1,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` } func (x *TraceEvent_ControlGraftMeta) Reset() { *x = TraceEvent_ControlGraftMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_ControlGraftMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_ControlGraftMeta) ProtoMessage() {} func (x *TraceEvent_ControlGraftMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_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 TraceEvent_ControlGraftMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_ControlGraftMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 19} } func (x *TraceEvent_ControlGraftMeta) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } type TraceEvent_ControlPruneMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Bitmask []byte `protobuf:"bytes,1,opt,name=bitmask,proto3,oneof" json:"bitmask,omitempty"` Peers [][]byte `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"` } func (x *TraceEvent_ControlPruneMeta) Reset() { *x = TraceEvent_ControlPruneMeta{} if protoimpl.UnsafeEnabled { mi := &file_trace_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TraceEvent_ControlPruneMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TraceEvent_ControlPruneMeta) ProtoMessage() {} func (x *TraceEvent_ControlPruneMeta) ProtoReflect() protoreflect.Message { mi := &file_trace_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 TraceEvent_ControlPruneMeta.ProtoReflect.Descriptor instead. func (*TraceEvent_ControlPruneMeta) Descriptor() ([]byte, []int) { return file_trace_proto_rawDescGZIP(), []int{0, 20} } func (x *TraceEvent_ControlPruneMeta) GetBitmask() []byte { if x != nil { return x.Bitmask } return nil } func (x *TraceEvent_ControlPruneMeta) GetPeers() [][]byte { if x != nil { return x.Peers } return nil } var File_trace_proto protoreflect.FileDescriptor var file_trace_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x22, 0xfe, 0x1e, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x03, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x04, 0x52, 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x10, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x05, 0x52, 0x10, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x06, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x48, 0x07, 0x52, 0x07, 0x61, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x48, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x48, 0x09, 0x52, 0x07, 0x72, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x48, 0x0a, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x48, 0x0b, 0x52, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x0c, 0x52, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x48, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x66, 0x74, 0x48, 0x0e, 0x52, 0x05, 0x67, 0x72, 0x61, 0x66, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x48, 0x0f, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x6c, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0xcd, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x03, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0xa8, 0x01, 0x0a, 0x10, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x02, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0xa6, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x1a, 0x56, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x1a, 0x88, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x76, 0x0a, 0x07, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x76, 0x0a, 0x07, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x31, 0x0a, 0x04, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x32, 0x0a, 0x05, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x5a, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x66, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x5a, 0x0a, 0x05, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0xe5, 0x01, 0x0a, 0x07, 0x52, 0x50, 0x43, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x1a, 0x69, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x65, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x95, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x05, 0x69, 0x68, 0x61, 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x69, 0x68, 0x61, 0x76, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x69, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x69, 0x77, 0x61, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x66, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, 0x66, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x67, 0x72, 0x61, 0x66, 0x74, 0x12, 0x40, 0x0a, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x1a, 0x5d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x48, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x32, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x57, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x73, 0x1a, 0x3d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x61, 0x66, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x1a, 0x53, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xcf, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x43, 0x56, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x50, 0x43, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x52, 0x41, 0x46, 0x54, 0x10, 0x0b, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x10, 0x0c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x49, 0x44, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x63, 0x76, 0x52, 0x50, 0x43, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x50, 0x43, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x50, 0x43, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x67, 0x72, 0x61, 0x66, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x22, 0x42, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2f, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x42, 0x43, 0x5a, 0x41, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, 0x69, 0x6c, 0x69, 0x62, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x6d, 0x6f, 0x6e, 0x6f, 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x67, 0x6f, 0x2d, 0x6c, 0x69, 0x62, 0x70, 0x32, 0x70, 0x2d, 0x62, 0x6c, 0x6f, 0x73, 0x73, 0x6f, 0x6d, 0x73, 0x75, 0x62, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_trace_proto_rawDescOnce sync.Once file_trace_proto_rawDescData = file_trace_proto_rawDesc ) func file_trace_proto_rawDescGZIP() []byte { file_trace_proto_rawDescOnce.Do(func() { file_trace_proto_rawDescData = protoimpl.X.CompressGZIP(file_trace_proto_rawDescData) }) return file_trace_proto_rawDescData } var file_trace_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_trace_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_trace_proto_goTypes = []interface{}{ (TraceEvent_Type)(0), // 0: blossomsub.pb.TraceEvent.Type (*TraceEvent)(nil), // 1: blossomsub.pb.TraceEvent (*TraceEventBatch)(nil), // 2: blossomsub.pb.TraceEventBatch (*TraceEvent_PublishMessage)(nil), // 3: blossomsub.pb.TraceEvent.PublishMessage (*TraceEvent_RejectMessage)(nil), // 4: blossomsub.pb.TraceEvent.RejectMessage (*TraceEvent_DuplicateMessage)(nil), // 5: blossomsub.pb.TraceEvent.DuplicateMessage (*TraceEvent_DeliverMessage)(nil), // 6: blossomsub.pb.TraceEvent.DeliverMessage (*TraceEvent_AddPeer)(nil), // 7: blossomsub.pb.TraceEvent.AddPeer (*TraceEvent_RemovePeer)(nil), // 8: blossomsub.pb.TraceEvent.RemovePeer (*TraceEvent_RecvRPC)(nil), // 9: blossomsub.pb.TraceEvent.RecvRPC (*TraceEvent_SendRPC)(nil), // 10: blossomsub.pb.TraceEvent.SendRPC (*TraceEvent_DropRPC)(nil), // 11: blossomsub.pb.TraceEvent.DropRPC (*TraceEvent_Join)(nil), // 12: blossomsub.pb.TraceEvent.Join (*TraceEvent_Leave)(nil), // 13: blossomsub.pb.TraceEvent.Leave (*TraceEvent_Graft)(nil), // 14: blossomsub.pb.TraceEvent.Graft (*TraceEvent_Prune)(nil), // 15: blossomsub.pb.TraceEvent.Prune (*TraceEvent_RPCMeta)(nil), // 16: blossomsub.pb.TraceEvent.RPCMeta (*TraceEvent_MessageMeta)(nil), // 17: blossomsub.pb.TraceEvent.MessageMeta (*TraceEvent_SubMeta)(nil), // 18: blossomsub.pb.TraceEvent.SubMeta (*TraceEvent_ControlMeta)(nil), // 19: blossomsub.pb.TraceEvent.ControlMeta (*TraceEvent_ControlIHaveMeta)(nil), // 20: blossomsub.pb.TraceEvent.ControlIHaveMeta (*TraceEvent_ControlIWantMeta)(nil), // 21: blossomsub.pb.TraceEvent.ControlIWantMeta (*TraceEvent_ControlGraftMeta)(nil), // 22: blossomsub.pb.TraceEvent.ControlGraftMeta (*TraceEvent_ControlPruneMeta)(nil), // 23: blossomsub.pb.TraceEvent.ControlPruneMeta } var file_trace_proto_depIdxs = []int32{ 0, // 0: blossomsub.pb.TraceEvent.type:type_name -> blossomsub.pb.TraceEvent.Type 3, // 1: blossomsub.pb.TraceEvent.publishMessage:type_name -> blossomsub.pb.TraceEvent.PublishMessage 4, // 2: blossomsub.pb.TraceEvent.rejectMessage:type_name -> blossomsub.pb.TraceEvent.RejectMessage 5, // 3: blossomsub.pb.TraceEvent.duplicateMessage:type_name -> blossomsub.pb.TraceEvent.DuplicateMessage 6, // 4: blossomsub.pb.TraceEvent.deliverMessage:type_name -> blossomsub.pb.TraceEvent.DeliverMessage 7, // 5: blossomsub.pb.TraceEvent.addPeer:type_name -> blossomsub.pb.TraceEvent.AddPeer 8, // 6: blossomsub.pb.TraceEvent.removePeer:type_name -> blossomsub.pb.TraceEvent.RemovePeer 9, // 7: blossomsub.pb.TraceEvent.recvRPC:type_name -> blossomsub.pb.TraceEvent.RecvRPC 10, // 8: blossomsub.pb.TraceEvent.sendRPC:type_name -> blossomsub.pb.TraceEvent.SendRPC 11, // 9: blossomsub.pb.TraceEvent.dropRPC:type_name -> blossomsub.pb.TraceEvent.DropRPC 12, // 10: blossomsub.pb.TraceEvent.join:type_name -> blossomsub.pb.TraceEvent.Join 13, // 11: blossomsub.pb.TraceEvent.leave:type_name -> blossomsub.pb.TraceEvent.Leave 14, // 12: blossomsub.pb.TraceEvent.graft:type_name -> blossomsub.pb.TraceEvent.Graft 15, // 13: blossomsub.pb.TraceEvent.prune:type_name -> blossomsub.pb.TraceEvent.Prune 1, // 14: blossomsub.pb.TraceEventBatch.batch:type_name -> blossomsub.pb.TraceEvent 16, // 15: blossomsub.pb.TraceEvent.RecvRPC.meta:type_name -> blossomsub.pb.TraceEvent.RPCMeta 16, // 16: blossomsub.pb.TraceEvent.SendRPC.meta:type_name -> blossomsub.pb.TraceEvent.RPCMeta 16, // 17: blossomsub.pb.TraceEvent.DropRPC.meta:type_name -> blossomsub.pb.TraceEvent.RPCMeta 17, // 18: blossomsub.pb.TraceEvent.RPCMeta.messages:type_name -> blossomsub.pb.TraceEvent.MessageMeta 18, // 19: blossomsub.pb.TraceEvent.RPCMeta.subscription:type_name -> blossomsub.pb.TraceEvent.SubMeta 19, // 20: blossomsub.pb.TraceEvent.RPCMeta.control:type_name -> blossomsub.pb.TraceEvent.ControlMeta 20, // 21: blossomsub.pb.TraceEvent.ControlMeta.ihave:type_name -> blossomsub.pb.TraceEvent.ControlIHaveMeta 21, // 22: blossomsub.pb.TraceEvent.ControlMeta.iwant:type_name -> blossomsub.pb.TraceEvent.ControlIWantMeta 22, // 23: blossomsub.pb.TraceEvent.ControlMeta.graft:type_name -> blossomsub.pb.TraceEvent.ControlGraftMeta 23, // 24: blossomsub.pb.TraceEvent.ControlMeta.prune:type_name -> blossomsub.pb.TraceEvent.ControlPruneMeta 25, // [25:25] is the sub-list for method output_type 25, // [25:25] is the sub-list for method input_type 25, // [25:25] is the sub-list for extension type_name 25, // [25:25] is the sub-list for extension extendee 0, // [0:25] is the sub-list for field type_name } func init() { file_trace_proto_init() } func file_trace_proto_init() { if File_trace_proto != nil { return } if !protoimpl.UnsafeEnabled { file_trace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEventBatch); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_PublishMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_RejectMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_DuplicateMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_DeliverMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_AddPeer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_RemovePeer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_RecvRPC); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_SendRPC); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_DropRPC); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_Join); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_Leave); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_Graft); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_Prune); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_RPCMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_MessageMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_SubMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_ControlMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_ControlIHaveMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_ControlIWantMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_ControlGraftMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_trace_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TraceEvent_ControlPruneMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_trace_proto_msgTypes[0].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[2].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[3].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[4].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[5].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[6].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[7].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[8].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[9].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[10].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[11].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[12].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[13].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[14].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[15].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[16].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[17].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[19].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[21].OneofWrappers = []interface{}{} file_trace_proto_msgTypes[22].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_trace_proto_rawDesc, NumEnums: 1, NumMessages: 23, NumExtensions: 0, NumServices: 0, }, GoTypes: file_trace_proto_goTypes, DependencyIndexes: file_trace_proto_depIdxs, EnumInfos: file_trace_proto_enumTypes, MessageInfos: file_trace_proto_msgTypes, }.Build() File_trace_proto = out.File file_trace_proto_rawDesc = nil file_trace_proto_goTypes = nil file_trace_proto_depIdxs = nil }