// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.17.3
// source: p2pnext.proto

package types

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 MessageComm struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// shared between all requests
	Version    string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`       // client version
	Timestamp  int64  `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`  // unix time
	Id         string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`                 // allows requesters to use request data when processing a response
	Gossip     bool   `protobuf:"varint,4,opt,name=gossip,proto3" json:"gossip,omitempty"`        // true to have receiver peer gossip the message to neighbors
	NodeId     string `protobuf:"bytes,5,opt,name=nodeId,proto3" json:"nodeId,omitempty"`         // id of node that created the message (not the peer that may have sent it). =base58(multihash(nodePubKey))
	NodePubKey []byte `protobuf:"bytes,6,opt,name=nodePubKey,proto3" json:"nodePubKey,omitempty"` // Authoring node Secp256k1 public key (32bytes) - protobufs serielized
	Sign       []byte `protobuf:"bytes,7,opt,name=sign,proto3" json:"sign,omitempty"`             // signature of message data + method specific data by message authoring node.
}

func (x *MessageComm) Reset() {
	*x = MessageComm{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageComm) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageComm) ProtoMessage() {}

func (x *MessageComm) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageComm.ProtoReflect.Descriptor instead.
func (*MessageComm) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{0}
}

func (x *MessageComm) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *MessageComm) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *MessageComm) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *MessageComm) GetGossip() bool {
	if x != nil {
		return x.Gossip
	}
	return false
}

func (x *MessageComm) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *MessageComm) GetNodePubKey() []byte {
	if x != nil {
		return x.NodePubKey
	}
	return nil
}

func (x *MessageComm) GetSign() []byte {
	if x != nil {
		return x.Sign
	}
	return nil
}

type MessageUtil struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *MessageComm `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// Types that are assignable to Value:
	//	*MessageUtil_PeerInfo
	//	*MessageUtil_Version
	//	*MessageUtil_VersionAck
	//	*MessageUtil_External
	//	*MessageUtil_Getblocks
	//	*MessageUtil_Invdatas
	Value isMessageUtil_Value `protobuf_oneof:"value"`
}

func (x *MessageUtil) Reset() {
	*x = MessageUtil{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageUtil) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageUtil) ProtoMessage() {}

func (x *MessageUtil) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageUtil.ProtoReflect.Descriptor instead.
func (*MessageUtil) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{1}
}

func (x *MessageUtil) GetCommon() *MessageComm {
	if x != nil {
		return x.Common
	}
	return nil
}

func (m *MessageUtil) GetValue() isMessageUtil_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *MessageUtil) GetPeerInfo() *P2PPeerInfo {
	if x, ok := x.GetValue().(*MessageUtil_PeerInfo); ok {
		return x.PeerInfo
	}
	return nil
}

func (x *MessageUtil) GetVersion() *P2PVersion {
	if x, ok := x.GetValue().(*MessageUtil_Version); ok {
		return x.Version
	}
	return nil
}

func (x *MessageUtil) GetVersionAck() *P2PVerAck {
	if x, ok := x.GetValue().(*MessageUtil_VersionAck); ok {
		return x.VersionAck
	}
	return nil
}

func (x *MessageUtil) GetExternal() *P2PExternalInfo {
	if x, ok := x.GetValue().(*MessageUtil_External); ok {
		return x.External
	}
	return nil
}

func (x *MessageUtil) GetGetblocks() *P2PGetBlocks {
	if x, ok := x.GetValue().(*MessageUtil_Getblocks); ok {
		return x.Getblocks
	}
	return nil
}

func (x *MessageUtil) GetInvdatas() *InvDatas {
	if x, ok := x.GetValue().(*MessageUtil_Invdatas); ok {
		return x.Invdatas
	}
	return nil
}

type isMessageUtil_Value interface {
	isMessageUtil_Value()
}

type MessageUtil_PeerInfo struct {
	PeerInfo *P2PPeerInfo `protobuf:"bytes,2,opt,name=peerInfo,proto3,oneof"`
}

type MessageUtil_Version struct {
	Version *P2PVersion `protobuf:"bytes,3,opt,name=version,proto3,oneof"`
}

type MessageUtil_VersionAck struct {
	VersionAck *P2PVerAck `protobuf:"bytes,4,opt,name=versionAck,proto3,oneof"`
}

type MessageUtil_External struct {
	External *P2PExternalInfo `protobuf:"bytes,5,opt,name=external,proto3,oneof"`
}

type MessageUtil_Getblocks struct {
	Getblocks *P2PGetBlocks `protobuf:"bytes,6,opt,name=getblocks,proto3,oneof"`
}

type MessageUtil_Invdatas struct {
	Invdatas *InvDatas `protobuf:"bytes,7,opt,name=invdatas,proto3,oneof"`
}

func (*MessageUtil_PeerInfo) isMessageUtil_Value() {}

func (*MessageUtil_Version) isMessageUtil_Value() {}

func (*MessageUtil_VersionAck) isMessageUtil_Value() {}

func (*MessageUtil_External) isMessageUtil_Value() {}

func (*MessageUtil_Getblocks) isMessageUtil_Value() {}

func (*MessageUtil_Invdatas) isMessageUtil_Value() {}

//*
// 请求获取远程节点的节点信息
type MessagePeerInfoReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	/// p2p版本
	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
}

func (x *MessagePeerInfoReq) Reset() {
	*x = MessagePeerInfoReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePeerInfoReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePeerInfoReq) ProtoMessage() {}

func (x *MessagePeerInfoReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePeerInfoReq.ProtoReflect.Descriptor instead.
func (*MessagePeerInfoReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{2}
}

func (x *MessagePeerInfoReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

type MessagePeerInfoResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PPeerInfo `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessagePeerInfoResp) Reset() {
	*x = MessagePeerInfoResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePeerInfoResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePeerInfoResp) ProtoMessage() {}

func (x *MessagePeerInfoResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePeerInfoResp.ProtoReflect.Descriptor instead.
func (*MessagePeerInfoResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{3}
}

func (x *MessagePeerInfoResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessagePeerInfoResp) GetMessage() *P2PPeerInfo {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageP2PVersionReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PVersion  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageP2PVersionReq) Reset() {
	*x = MessageP2PVersionReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageP2PVersionReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageP2PVersionReq) ProtoMessage() {}

func (x *MessageP2PVersionReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageP2PVersionReq.ProtoReflect.Descriptor instead.
func (*MessageP2PVersionReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{4}
}

func (x *MessageP2PVersionReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageP2PVersionReq) GetMessage() *P2PVersion {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageP2PVersionResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PVersion  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageP2PVersionResp) Reset() {
	*x = MessageP2PVersionResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageP2PVersionResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageP2PVersionResp) ProtoMessage() {}

func (x *MessageP2PVersionResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageP2PVersionResp.ProtoReflect.Descriptor instead.
func (*MessageP2PVersionResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{5}
}

func (x *MessageP2PVersionResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageP2PVersionResp) GetMessage() *P2PVersion {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessagePingReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PPing     `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessagePingReq) Reset() {
	*x = MessagePingReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePingReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePingReq) ProtoMessage() {}

func (x *MessagePingReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePingReq.ProtoReflect.Descriptor instead.
func (*MessagePingReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{6}
}

func (x *MessagePingReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessagePingReq) GetMessage() *P2PPing {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessagePingResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PPong     `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessagePingResp) Reset() {
	*x = MessagePingResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePingResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePingResp) ProtoMessage() {}

func (x *MessagePingResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePingResp.ProtoReflect.Descriptor instead.
func (*MessagePingResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{7}
}

func (x *MessagePingResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessagePingResp) GetMessage() *P2PPong {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageAddrReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PGetAddr  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageAddrReq) Reset() {
	*x = MessageAddrReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageAddrReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageAddrReq) ProtoMessage() {}

func (x *MessageAddrReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageAddrReq.ProtoReflect.Descriptor instead.
func (*MessageAddrReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{8}
}

func (x *MessageAddrReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageAddrReq) GetMessage() *P2PGetAddr {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageAddrResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PAddr     `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageAddrResp) Reset() {
	*x = MessageAddrResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageAddrResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageAddrResp) ProtoMessage() {}

func (x *MessageAddrResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageAddrResp.ProtoReflect.Descriptor instead.
func (*MessageAddrResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{9}
}

func (x *MessageAddrResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageAddrResp) GetMessage() *P2PAddr {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageAddrList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PAddrList `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageAddrList) Reset() {
	*x = MessageAddrList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageAddrList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageAddrList) ProtoMessage() {}

func (x *MessageAddrList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageAddrList.ProtoReflect.Descriptor instead.
func (*MessageAddrList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{10}
}

func (x *MessageAddrList) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageAddrList) GetMessage() *P2PAddrList {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageExternalNetReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
}

func (x *MessageExternalNetReq) Reset() {
	*x = MessageExternalNetReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageExternalNetReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageExternalNetReq) ProtoMessage() {}

func (x *MessageExternalNetReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageExternalNetReq.ProtoReflect.Descriptor instead.
func (*MessageExternalNetReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{11}
}

func (x *MessageExternalNetReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

type MessageExternalNetResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm     `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PExternalInfo `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageExternalNetResp) Reset() {
	*x = MessageExternalNetResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageExternalNetResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageExternalNetResp) ProtoMessage() {}

func (x *MessageExternalNetResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageExternalNetResp.ProtoReflect.Descriptor instead.
func (*MessageExternalNetResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{12}
}

func (x *MessageExternalNetResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageExternalNetResp) GetMessage() *P2PExternalInfo {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageGetBlocksReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm  `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PGetBlocks `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageGetBlocksReq) Reset() {
	*x = MessageGetBlocksReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageGetBlocksReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageGetBlocksReq) ProtoMessage() {}

func (x *MessageGetBlocksReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageGetBlocksReq.ProtoReflect.Descriptor instead.
func (*MessageGetBlocksReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{13}
}

func (x *MessageGetBlocksReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageGetBlocksReq) GetMessage() *P2PGetBlocks {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageGetBlocksResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *InvDatas    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageGetBlocksResp) Reset() {
	*x = MessageGetBlocksResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageGetBlocksResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageGetBlocksResp) ProtoMessage() {}

func (x *MessageGetBlocksResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageGetBlocksResp.ProtoReflect.Descriptor instead.
func (*MessageGetBlocksResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{14}
}

func (x *MessageGetBlocksResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageGetBlocksResp) GetMessage() *InvDatas {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageGetMempoolReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm   `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PGetMempool `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageGetMempoolReq) Reset() {
	*x = MessageGetMempoolReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageGetMempoolReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageGetMempoolReq) ProtoMessage() {}

func (x *MessageGetMempoolReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageGetMempoolReq.ProtoReflect.Descriptor instead.
func (*MessageGetMempoolReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{15}
}

func (x *MessageGetMempoolReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageGetMempoolReq) GetMessage() *P2PGetMempool {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageVersion struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *Versions    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageVersion) Reset() {
	*x = MessageVersion{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageVersion) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageVersion) ProtoMessage() {}

func (x *MessageVersion) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageVersion.ProtoReflect.Descriptor instead.
func (*MessageVersion) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{16}
}

func (x *MessageVersion) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageVersion) GetMessage() *Versions {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageHeaderReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm   `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PGetHeaders `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageHeaderReq) Reset() {
	*x = MessageHeaderReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageHeaderReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageHeaderReq) ProtoMessage() {}

func (x *MessageHeaderReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageHeaderReq.ProtoReflect.Descriptor instead.
func (*MessageHeaderReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{17}
}

func (x *MessageHeaderReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageHeaderReq) GetMessage() *P2PGetHeaders {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageHeaderResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *P2PHeaders  `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageHeaderResp) Reset() {
	*x = MessageHeaderResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageHeaderResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageHeaderResp) ProtoMessage() {}

func (x *MessageHeaderResp) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageHeaderResp.ProtoReflect.Descriptor instead.
func (*MessageHeaderResp) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{18}
}

func (x *MessageHeaderResp) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageHeaderResp) GetMessage() *P2PHeaders {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageInvDataReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *InvData     `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageInvDataReq) Reset() {
	*x = MessageInvDataReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageInvDataReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageInvDataReq) ProtoMessage() {}

func (x *MessageInvDataReq) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageInvDataReq.ProtoReflect.Descriptor instead.
func (*MessageInvDataReq) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{19}
}

func (x *MessageInvDataReq) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageInvDataReq) GetMessage() *InvData {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessagePeerList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *PeerList    `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessagePeerList) Reset() {
	*x = MessagePeerList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePeerList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePeerList) ProtoMessage() {}

func (x *MessagePeerList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePeerList.ProtoReflect.Descriptor instead.
func (*MessagePeerList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{20}
}

func (x *MessagePeerList) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessagePeerList) GetMessage() *PeerList {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessageNetInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MessageData *MessageComm `protobuf:"bytes,1,opt,name=messageData,proto3" json:"messageData,omitempty"`
	Message     *NodeNetInfo `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageNetInfo) Reset() {
	*x = MessageNetInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageNetInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageNetInfo) ProtoMessage() {}

func (x *MessageNetInfo) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessageNetInfo.ProtoReflect.Descriptor instead.
func (*MessageNetInfo) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{21}
}

func (x *MessageNetInfo) GetMessageData() *MessageComm {
	if x != nil {
		return x.MessageData
	}
	return nil
}

func (x *MessageNetInfo) GetMessage() *NodeNetInfo {
	if x != nil {
		return x.Message
	}
	return nil
}

type MessagePeersReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common     *MessageComm `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	PeersReply *PeersReply  `protobuf:"bytes,2,opt,name=peersReply,proto3" json:"peersReply,omitempty"`
}

func (x *MessagePeersReply) Reset() {
	*x = MessagePeersReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessagePeersReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessagePeersReply) ProtoMessage() {}

func (x *MessagePeersReply) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_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 MessagePeersReply.ProtoReflect.Descriptor instead.
func (*MessagePeersReply) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{22}
}

func (x *MessagePeersReply) GetCommon() *MessageComm {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *MessagePeersReply) GetPeersReply() *PeersReply {
	if x != nil {
		return x.PeersReply
	}
	return nil
}

type MessageBroadCast struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common  *MessageComm   `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	Message *BroadCastData `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *MessageBroadCast) Reset() {
	*x = MessageBroadCast{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MessageBroadCast) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MessageBroadCast) ProtoMessage() {}

func (x *MessageBroadCast) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[23]
	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 MessageBroadCast.ProtoReflect.Descriptor instead.
func (*MessageBroadCast) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{23}
}

func (x *MessageBroadCast) GetCommon() *MessageComm {
	if x != nil {
		return x.Common
	}
	return nil
}

func (x *MessageBroadCast) GetMessage() *BroadCastData {
	if x != nil {
		return x.Message
	}
	return nil
}

type P2PMessageHeaders struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// shared between all requests
	Version   string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`      // client version
	Timestamp int64  `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // unix time
	Id        int64  `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"`               // allows requesters to use request data when processing a response
	Sign      []byte `protobuf:"bytes,5,opt,name=sign,proto3" json:"sign,omitempty"`            // signature of message data + method specific data by message authoring node.
}

func (x *P2PMessageHeaders) Reset() {
	*x = P2PMessageHeaders{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *P2PMessageHeaders) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*P2PMessageHeaders) ProtoMessage() {}

func (x *P2PMessageHeaders) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[24]
	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 P2PMessageHeaders.ProtoReflect.Descriptor instead.
func (*P2PMessageHeaders) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{24}
}

func (x *P2PMessageHeaders) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *P2PMessageHeaders) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *P2PMessageHeaders) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *P2PMessageHeaders) GetSign() []byte {
	if x != nil {
		return x.Sign
	}
	return nil
}

type P2PRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Headers *P2PMessageHeaders `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"`
	// Types that are assignable to Request:
	//	*P2PRequest_ReqChunkRecords
	//	*P2PRequest_ChunkInfoMsg
	//	*P2PRequest_ChunkInfoList
	//	*P2PRequest_ReqBlocks
	//	*P2PRequest_ReqPeers
	//	*P2PRequest_Pid
	//	*P2PRequest_PeerInfo
	//	*P2PRequest_Provider
	Request isP2PRequest_Request `protobuf_oneof:"request"`
}

func (x *P2PRequest) Reset() {
	*x = P2PRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *P2PRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*P2PRequest) ProtoMessage() {}

func (x *P2PRequest) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[25]
	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 P2PRequest.ProtoReflect.Descriptor instead.
func (*P2PRequest) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{25}
}

func (x *P2PRequest) GetHeaders() *P2PMessageHeaders {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (m *P2PRequest) GetRequest() isP2PRequest_Request {
	if m != nil {
		return m.Request
	}
	return nil
}

func (x *P2PRequest) GetReqChunkRecords() *ReqChunkRecords {
	if x, ok := x.GetRequest().(*P2PRequest_ReqChunkRecords); ok {
		return x.ReqChunkRecords
	}
	return nil
}

func (x *P2PRequest) GetChunkInfoMsg() *ChunkInfoMsg {
	if x, ok := x.GetRequest().(*P2PRequest_ChunkInfoMsg); ok {
		return x.ChunkInfoMsg
	}
	return nil
}

func (x *P2PRequest) GetChunkInfoList() *ChunkInfoList {
	if x, ok := x.GetRequest().(*P2PRequest_ChunkInfoList); ok {
		return x.ChunkInfoList
	}
	return nil
}

func (x *P2PRequest) GetReqBlocks() *ReqBlocks {
	if x, ok := x.GetRequest().(*P2PRequest_ReqBlocks); ok {
		return x.ReqBlocks
	}
	return nil
}

func (x *P2PRequest) GetReqPeers() *ReqPeers {
	if x, ok := x.GetRequest().(*P2PRequest_ReqPeers); ok {
		return x.ReqPeers
	}
	return nil
}

func (x *P2PRequest) GetPid() string {
	if x, ok := x.GetRequest().(*P2PRequest_Pid); ok {
		return x.Pid
	}
	return ""
}

func (x *P2PRequest) GetPeerInfo() *PeerInfo {
	if x, ok := x.GetRequest().(*P2PRequest_PeerInfo); ok {
		return x.PeerInfo
	}
	return nil
}

func (x *P2PRequest) GetProvider() *ChunkProvider {
	if x, ok := x.GetRequest().(*P2PRequest_Provider); ok {
		return x.Provider
	}
	return nil
}

type isP2PRequest_Request interface {
	isP2PRequest_Request()
}

type P2PRequest_ReqChunkRecords struct {
	ReqChunkRecords *ReqChunkRecords `protobuf:"bytes,2,opt,name=reqChunkRecords,proto3,oneof"`
}

type P2PRequest_ChunkInfoMsg struct {
	ChunkInfoMsg *ChunkInfoMsg `protobuf:"bytes,3,opt,name=chunkInfoMsg,proto3,oneof"`
}

type P2PRequest_ChunkInfoList struct {
	ChunkInfoList *ChunkInfoList `protobuf:"bytes,4,opt,name=chunkInfoList,proto3,oneof"`
}

type P2PRequest_ReqBlocks struct {
	ReqBlocks *ReqBlocks `protobuf:"bytes,5,opt,name=reqBlocks,proto3,oneof"`
}

type P2PRequest_ReqPeers struct {
	//新的协议可以继续添加request类型
	ReqPeers *ReqPeers `protobuf:"bytes,6,opt,name=reqPeers,proto3,oneof"`
}

type P2PRequest_Pid struct {
	Pid string `protobuf:"bytes,7,opt,name=pid,proto3,oneof"`
}

type P2PRequest_PeerInfo struct {
	PeerInfo *PeerInfo `protobuf:"bytes,8,opt,name=peerInfo,proto3,oneof"`
}

type P2PRequest_Provider struct {
	Provider *ChunkProvider `protobuf:"bytes,9,opt,name=provider,proto3,oneof"`
}

func (*P2PRequest_ReqChunkRecords) isP2PRequest_Request() {}

func (*P2PRequest_ChunkInfoMsg) isP2PRequest_Request() {}

func (*P2PRequest_ChunkInfoList) isP2PRequest_Request() {}

func (*P2PRequest_ReqBlocks) isP2PRequest_Request() {}

func (*P2PRequest_ReqPeers) isP2PRequest_Request() {}

func (*P2PRequest_Pid) isP2PRequest_Request() {}

func (*P2PRequest_PeerInfo) isP2PRequest_Request() {}

func (*P2PRequest_Provider) isP2PRequest_Request() {}

type ReqPeers struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReferKey []byte `protobuf:"bytes,1,opt,name=referKey,proto3" json:"referKey,omitempty"`
	Count    int32  `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *ReqPeers) Reset() {
	*x = ReqPeers{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqPeers) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqPeers) ProtoMessage() {}

func (x *ReqPeers) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[26]
	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 ReqPeers.ProtoReflect.Descriptor instead.
func (*ReqPeers) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{26}
}

func (x *ReqPeers) GetReferKey() []byte {
	if x != nil {
		return x.ReferKey
	}
	return nil
}

func (x *ReqPeers) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

type HashList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hashes [][]byte `protobuf:"bytes,1,rep,name=hashes,proto3" json:"hashes,omitempty"`
}

func (x *HashList) Reset() {
	*x = HashList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HashList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HashList) ProtoMessage() {}

func (x *HashList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[27]
	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 HashList.ProtoReflect.Descriptor instead.
func (*HashList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{27}
}

func (x *HashList) GetHashes() [][]byte {
	if x != nil {
		return x.Hashes
	}
	return nil
}

type ChunkInfoList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Items []*ChunkInfoMsg `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

func (x *ChunkInfoList) Reset() {
	*x = ChunkInfoList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ChunkInfoList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChunkInfoList) ProtoMessage() {}

func (x *ChunkInfoList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[28]
	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 ChunkInfoList.ProtoReflect.Descriptor instead.
func (*ChunkInfoList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{28}
}

func (x *ChunkInfoList) GetItems() []*ChunkInfoMsg {
	if x != nil {
		return x.Items
	}
	return nil
}

type P2PResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Headers     *P2PMessageHeaders `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"`
	Error       string             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	CloserPeers []*PeerInfo        `protobuf:"bytes,3,rep,name=closerPeers,proto3" json:"closerPeers,omitempty"`
	// Types that are assignable to Response:
	//	*P2PResponse_BlockBody
	//	*P2PResponse_BlockHeaders
	//	*P2PResponse_ChunkRecords
	//	*P2PResponse_NodeInfo
	//	*P2PResponse_PeerInfo
	//	*P2PResponse_PeerInfos
	Response isP2PResponse_Response `protobuf_oneof:"response"`
}

func (x *P2PResponse) Reset() {
	*x = P2PResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *P2PResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*P2PResponse) ProtoMessage() {}

func (x *P2PResponse) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[29]
	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 P2PResponse.ProtoReflect.Descriptor instead.
func (*P2PResponse) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{29}
}

func (x *P2PResponse) GetHeaders() *P2PMessageHeaders {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *P2PResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *P2PResponse) GetCloserPeers() []*PeerInfo {
	if x != nil {
		return x.CloserPeers
	}
	return nil
}

func (m *P2PResponse) GetResponse() isP2PResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *P2PResponse) GetBlockBody() *BlockBody {
	if x, ok := x.GetResponse().(*P2PResponse_BlockBody); ok {
		return x.BlockBody
	}
	return nil
}

func (x *P2PResponse) GetBlockHeaders() *Headers {
	if x, ok := x.GetResponse().(*P2PResponse_BlockHeaders); ok {
		return x.BlockHeaders
	}
	return nil
}

func (x *P2PResponse) GetChunkRecords() *ChunkRecords {
	if x, ok := x.GetResponse().(*P2PResponse_ChunkRecords); ok {
		return x.ChunkRecords
	}
	return nil
}

func (x *P2PResponse) GetNodeInfo() *NodeInfo {
	if x, ok := x.GetResponse().(*P2PResponse_NodeInfo); ok {
		return x.NodeInfo
	}
	return nil
}

func (x *P2PResponse) GetPeerInfo() *PeerInfo {
	if x, ok := x.GetResponse().(*P2PResponse_PeerInfo); ok {
		return x.PeerInfo
	}
	return nil
}

func (x *P2PResponse) GetPeerInfos() *PeerInfoList {
	if x, ok := x.GetResponse().(*P2PResponse_PeerInfos); ok {
		return x.PeerInfos
	}
	return nil
}

type isP2PResponse_Response interface {
	isP2PResponse_Response()
}

type P2PResponse_BlockBody struct {
	BlockBody *BlockBody `protobuf:"bytes,5,opt,name=blockBody,proto3,oneof"`
}

type P2PResponse_BlockHeaders struct {
	BlockHeaders *Headers `protobuf:"bytes,6,opt,name=blockHeaders,proto3,oneof"`
}

type P2PResponse_ChunkRecords struct {
	ChunkRecords *ChunkRecords `protobuf:"bytes,7,opt,name=chunkRecords,proto3,oneof"`
}

type P2PResponse_NodeInfo struct {
	//新的协议可以继续添加response类型
	NodeInfo *NodeInfo `protobuf:"bytes,8,opt,name=nodeInfo,proto3,oneof"`
}

type P2PResponse_PeerInfo struct {
	PeerInfo *PeerInfo `protobuf:"bytes,9,opt,name=peerInfo,proto3,oneof"`
}

type P2PResponse_PeerInfos struct {
	PeerInfos *PeerInfoList `protobuf:"bytes,10,opt,name=peerInfos,proto3,oneof"`
}

func (*P2PResponse_BlockBody) isP2PResponse_Response() {}

func (*P2PResponse_BlockHeaders) isP2PResponse_Response() {}

func (*P2PResponse_ChunkRecords) isP2PResponse_Response() {}

func (*P2PResponse_NodeInfo) isP2PResponse_Response() {}

func (*P2PResponse_PeerInfo) isP2PResponse_Response() {}

func (*P2PResponse_PeerInfos) isP2PResponse_Response() {}

type NodeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Answer bool  `protobuf:"varint,1,opt,name=answer,proto3" json:"answer,omitempty"`
	Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
}

func (x *NodeInfo) Reset() {
	*x = NodeInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NodeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeInfo) ProtoMessage() {}

func (x *NodeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[30]
	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 NodeInfo.ProtoReflect.Descriptor instead.
func (*NodeInfo) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{30}
}

func (x *NodeInfo) GetAnswer() bool {
	if x != nil {
		return x.Answer
	}
	return false
}

func (x *NodeInfo) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

type PeerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ID        []byte   `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	MultiAddr [][]byte `protobuf:"bytes,2,rep,name=MultiAddr,proto3" json:"MultiAddr,omitempty"`
}

func (x *PeerInfo) Reset() {
	*x = PeerInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PeerInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PeerInfo) ProtoMessage() {}

func (x *PeerInfo) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[31]
	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 PeerInfo.ProtoReflect.Descriptor instead.
func (*PeerInfo) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{31}
}

func (x *PeerInfo) GetID() []byte {
	if x != nil {
		return x.ID
	}
	return nil
}

func (x *PeerInfo) GetMultiAddr() [][]byte {
	if x != nil {
		return x.MultiAddr
	}
	return nil
}

type ChunkProvider struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ChunkHash []byte      `protobuf:"bytes,1,opt,name=chunkHash,proto3" json:"chunkHash,omitempty"`
	PeerInfos []*PeerInfo `protobuf:"bytes,2,rep,name=peerInfos,proto3" json:"peerInfos,omitempty"`
}

func (x *ChunkProvider) Reset() {
	*x = ChunkProvider{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ChunkProvider) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChunkProvider) ProtoMessage() {}

func (x *ChunkProvider) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[32]
	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 ChunkProvider.ProtoReflect.Descriptor instead.
func (*ChunkProvider) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{32}
}

func (x *ChunkProvider) GetChunkHash() []byte {
	if x != nil {
		return x.ChunkHash
	}
	return nil
}

func (x *ChunkProvider) GetPeerInfos() []*PeerInfo {
	if x != nil {
		return x.PeerInfos
	}
	return nil
}

type PeerInfoList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PeerInfos []*PeerInfo `protobuf:"bytes,1,rep,name=peerInfos,proto3" json:"peerInfos,omitempty"`
}

func (x *PeerInfoList) Reset() {
	*x = PeerInfoList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PeerInfoList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PeerInfoList) ProtoMessage() {}

func (x *PeerInfoList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[33]
	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 PeerInfoList.ProtoReflect.Descriptor instead.
func (*PeerInfoList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{33}
}

func (x *PeerInfoList) GetPeerInfos() []*PeerInfo {
	if x != nil {
		return x.PeerInfos
	}
	return nil
}

type SubTopic struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic  string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Module string `protobuf:"bytes,2,opt,name=module,proto3" json:"module,omitempty"`
}

func (x *SubTopic) Reset() {
	*x = SubTopic{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SubTopic) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubTopic) ProtoMessage() {}

func (x *SubTopic) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[34]
	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 SubTopic.ProtoReflect.Descriptor instead.
func (*SubTopic) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{34}
}

func (x *SubTopic) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *SubTopic) GetModule() string {
	if x != nil {
		return x.Module
	}
	return ""
}

type SubTopicReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status bool   `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Msg    string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *SubTopicReply) Reset() {
	*x = SubTopicReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SubTopicReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubTopicReply) ProtoMessage() {}

func (x *SubTopicReply) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[35]
	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 SubTopicReply.ProtoReflect.Descriptor instead.
func (*SubTopicReply) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{35}
}

func (x *SubTopicReply) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

func (x *SubTopicReply) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

type PublishTopicMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Msg   []byte `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *PublishTopicMsg) Reset() {
	*x = PublishTopicMsg{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PublishTopicMsg) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublishTopicMsg) ProtoMessage() {}

func (x *PublishTopicMsg) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[36]
	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 PublishTopicMsg.ProtoReflect.Descriptor instead.
func (*PublishTopicMsg) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{36}
}

func (x *PublishTopicMsg) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *PublishTopicMsg) GetMsg() []byte {
	if x != nil {
		return x.Msg
	}
	return nil
}

type PublishTopicMsgReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic  string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Status bool   `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Msg    string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *PublishTopicMsgReply) Reset() {
	*x = PublishTopicMsgReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PublishTopicMsgReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublishTopicMsgReply) ProtoMessage() {}

func (x *PublishTopicMsgReply) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[37]
	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 PublishTopicMsgReply.ProtoReflect.Descriptor instead.
func (*PublishTopicMsgReply) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{37}
}

func (x *PublishTopicMsgReply) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *PublishTopicMsgReply) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

func (x *PublishTopicMsgReply) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

//*
// p2p 接收topic消息
type TopicData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	From  string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"`
	Data  []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *TopicData) Reset() {
	*x = TopicData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TopicData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TopicData) ProtoMessage() {}

func (x *TopicData) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[38]
	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 TopicData.ProtoReflect.Descriptor instead.
func (*TopicData) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{38}
}

func (x *TopicData) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *TopicData) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *TopicData) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

type FetchTopicList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"`
}

func (x *FetchTopicList) Reset() {
	*x = FetchTopicList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FetchTopicList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FetchTopicList) ProtoMessage() {}

func (x *FetchTopicList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[39]
	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 FetchTopicList.ProtoReflect.Descriptor instead.
func (*FetchTopicList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{39}
}

func (x *FetchTopicList) GetModule() string {
	if x != nil {
		return x.Module
	}
	return ""
}

type TopicList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topics []string `protobuf:"bytes,1,rep,name=topics,proto3" json:"topics,omitempty"`
}

func (x *TopicList) Reset() {
	*x = TopicList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TopicList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TopicList) ProtoMessage() {}

func (x *TopicList) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[40]
	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 TopicList.ProtoReflect.Descriptor instead.
func (*TopicList) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{40}
}

func (x *TopicList) GetTopics() []string {
	if x != nil {
		return x.Topics
	}
	return nil
}

type RemoveTopic struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic  string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Module string `protobuf:"bytes,2,opt,name=module,proto3" json:"module,omitempty"`
}

func (x *RemoveTopic) Reset() {
	*x = RemoveTopic{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RemoveTopic) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveTopic) ProtoMessage() {}

func (x *RemoveTopic) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[41]
	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 RemoveTopic.ProtoReflect.Descriptor instead.
func (*RemoveTopic) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{41}
}

func (x *RemoveTopic) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *RemoveTopic) GetModule() string {
	if x != nil {
		return x.Module
	}
	return ""
}

type RemoveTopicReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Topic  string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
	Status bool   `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Msg    string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *RemoveTopicReply) Reset() {
	*x = RemoveTopicReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RemoveTopicReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveTopicReply) ProtoMessage() {}

func (x *RemoveTopicReply) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[42]
	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 RemoveTopicReply.ProtoReflect.Descriptor instead.
func (*RemoveTopicReply) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{42}
}

func (x *RemoveTopicReply) GetTopic() string {
	if x != nil {
		return x.Topic
	}
	return ""
}

func (x *RemoveTopicReply) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

func (x *RemoveTopicReply) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

//*
//dht protos 网络带宽信息
type NetProtocolInfos struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Protoinfo []*ProtocolInfo `protobuf:"bytes,1,rep,name=protoinfo,proto3" json:"protoinfo,omitempty"`
}

func (x *NetProtocolInfos) Reset() {
	*x = NetProtocolInfos{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetProtocolInfos) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetProtocolInfos) ProtoMessage() {}

func (x *NetProtocolInfos) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[43]
	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 NetProtocolInfos.ProtoReflect.Descriptor instead.
func (*NetProtocolInfos) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{43}
}

func (x *NetProtocolInfos) GetProtoinfo() []*ProtocolInfo {
	if x != nil {
		return x.Protoinfo
	}
	return nil
}

type ProtocolInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Protocol  string `protobuf:"bytes,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
	Ratein    string `protobuf:"bytes,2,opt,name=ratein,proto3" json:"ratein,omitempty"`
	Rateout   string `protobuf:"bytes,3,opt,name=rateout,proto3" json:"rateout,omitempty"`
	Ratetotal string `protobuf:"bytes,4,opt,name=ratetotal,proto3" json:"ratetotal,omitempty"`
}

func (x *ProtocolInfo) Reset() {
	*x = ProtocolInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ProtocolInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProtocolInfo) ProtoMessage() {}

func (x *ProtocolInfo) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[44]
	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 ProtocolInfo.ProtoReflect.Descriptor instead.
func (*ProtocolInfo) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{44}
}

func (x *ProtocolInfo) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

func (x *ProtocolInfo) GetRatein() string {
	if x != nil {
		return x.Ratein
	}
	return ""
}

func (x *ProtocolInfo) GetRateout() string {
	if x != nil {
		return x.Rateout
	}
	return ""
}

func (x *ProtocolInfo) GetRatetotal() string {
	if x != nil {
		return x.Ratetotal
	}
	return ""
}

type Blacklist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Blackinfo []*BlackInfo `protobuf:"bytes,1,rep,name=blackinfo,proto3" json:"blackinfo,omitempty"`
}

func (x *Blacklist) Reset() {
	*x = Blacklist{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Blacklist) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Blacklist) ProtoMessage() {}

func (x *Blacklist) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[45]
	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 Blacklist.ProtoReflect.Descriptor instead.
func (*Blacklist) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{45}
}

func (x *Blacklist) GetBlackinfo() []*BlackInfo {
	if x != nil {
		return x.Blackinfo
	}
	return nil
}

type BlackInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//节点名称，pid
	PeerName string `protobuf:"bytes,1,opt,name=peerName,proto3" json:"peerName,omitempty"`
	// 节点的IP地址
	RemoteAddr string `protobuf:"bytes,2,opt,name=remoteAddr,proto3" json:"remoteAddr,omitempty"`
	//生命周期，剩余解除的时间
	Lifetime int64 `protobuf:"varint,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
}

func (x *BlackInfo) Reset() {
	*x = BlackInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BlackInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlackInfo) ProtoMessage() {}

func (x *BlackInfo) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[46]
	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 BlackInfo.ProtoReflect.Descriptor instead.
func (*BlackInfo) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{46}
}

func (x *BlackInfo) GetPeerName() string {
	if x != nil {
		return x.PeerName
	}
	return ""
}

func (x *BlackInfo) GetRemoteAddr() string {
	if x != nil {
		return x.RemoteAddr
	}
	return ""
}

func (x *BlackInfo) GetLifetime() int64 {
	if x != nil {
		return x.Lifetime
	}
	return 0
}

type BlackPeer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PeerAddr string `protobuf:"bytes,1,opt,name=peerAddr,proto3" json:"peerAddr,omitempty"`
	PeerName string `protobuf:"bytes,2,opt,name=peerName,proto3" json:"peerName,omitempty"`
	Lifetime string `protobuf:"bytes,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
}

func (x *BlackPeer) Reset() {
	*x = BlackPeer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BlackPeer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlackPeer) ProtoMessage() {}

func (x *BlackPeer) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[47]
	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 BlackPeer.ProtoReflect.Descriptor instead.
func (*BlackPeer) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{47}
}

func (x *BlackPeer) GetPeerAddr() string {
	if x != nil {
		return x.PeerAddr
	}
	return ""
}

func (x *BlackPeer) GetPeerName() string {
	if x != nil {
		return x.PeerName
	}
	return ""
}

func (x *BlackPeer) GetLifetime() string {
	if x != nil {
		return x.Lifetime
	}
	return ""
}

// Statistical  用于统计信息的获取
type Statistical struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Peers    []*Peer      `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"`
	Nodeinfo *NodeNetInfo `protobuf:"bytes,2,opt,name=nodeinfo,proto3" json:"nodeinfo,omitempty"`
}

func (x *Statistical) Reset() {
	*x = Statistical{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Statistical) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Statistical) ProtoMessage() {}

func (x *Statistical) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[48]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Statistical.ProtoReflect.Descriptor instead.
func (*Statistical) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{48}
}

func (x *Statistical) GetPeers() []*Peer {
	if x != nil {
		return x.Peers
	}
	return nil
}

func (x *Statistical) GetNodeinfo() *NodeNetInfo {
	if x != nil {
		return x.Nodeinfo
	}
	return nil
}

// SetPeer 通过rpc 方式连接指定的节点
type SetPeer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PeerAddr string `protobuf:"bytes,1,opt,name=peerAddr,proto3" json:"peerAddr,omitempty"`
	Pid      string `protobuf:"bytes,2,opt,name=pid,proto3" json:"pid,omitempty"`
	Seed     bool   `protobuf:"varint,3,opt,name=seed,proto3" json:"seed,omitempty"`
}

func (x *SetPeer) Reset() {
	*x = SetPeer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_p2pnext_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetPeer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetPeer) ProtoMessage() {}

func (x *SetPeer) ProtoReflect() protoreflect.Message {
	mi := &file_p2pnext_proto_msgTypes[49]
	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 SetPeer.ProtoReflect.Descriptor instead.
func (*SetPeer) Descriptor() ([]byte, []int) {
	return file_p2pnext_proto_rawDescGZIP(), []int{49}
}

func (x *SetPeer) GetPeerAddr() string {
	if x != nil {
		return x.PeerAddr
	}
	return ""
}

func (x *SetPeer) GetPid() string {
	if x != nil {
		return x.Pid
	}
	return ""
}

func (x *SetPeer) GetSeed() bool {
	if x != nil {
		return x.Seed
	}
	return false
}

var File_p2pnext_proto protoreflect.FileDescriptor

var file_p2pnext_proto_rawDesc = []byte{
	0x0a, 0x0d, 0x70, 0x32, 0x70, 0x6e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x09, 0x70, 0x32, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x1a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6d, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a,
	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x67,
	0x6f, 0x73, 0x73, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x67, 0x6f, 0x73,
	0x73, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6e,
	0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73,
	0x69, 0x67, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22,
	0xf1, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x12,
	0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6d, 0x6d, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x08, 0x70,
	0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x48, 0x00, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a,
	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x48, 0x00, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x0a,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x56, 0x65, 0x72, 0x41,
	0x63, 0x6b, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b,
	0x12, 0x34, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x45, 0x78,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x32, 0x50, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x48, 0x00,
	0x52, 0x09, 0x67, 0x65, 0x74, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x69,
	0x6e, 0x76, 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x44, 0x61, 0x74, 0x61, 0x73, 0x48, 0x00,
	0x52, 0x08, 0x69, 0x6e, 0x76, 0x64, 0x61, 0x74, 0x61, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x22, 0x4a, 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f,
	0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22,
	0x79, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52,
	0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x79, 0x0a, 0x14, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x32, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74,
	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x50, 0x32, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7a, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x50, 0x32, 0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34,
	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32,
	0x50, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x22, 0x70, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x67,
	0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x22, 0x71, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69,
	0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52,
	0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x50, 0x6f, 0x6e, 0x67, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x73, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d,
	0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b,
	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x47, 0x65, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x71, 0x0a, 0x0f, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34,
	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32,
	0x50, 0x41, 0x64, 0x64, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x75,
	0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x72, 0x4c, 0x69, 0x73,
	0x74, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x64, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x34,
	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x22, 0x80, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12,
	0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50,
	0x32, 0x50, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7a, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x34,
	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32,
	0x50, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x47, 0x65,
	0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0b, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74,
	0x61, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x44, 0x61,
	0x74, 0x61, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x14,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f,
	0x6c, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f,
	0x6c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x71, 0x0a, 0x0e, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0b,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61,
	0x74, 0x61, 0x12, 0x29, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x78, 0x0a,
	0x10, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x50, 0x32, 0x50, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x76, 0x0a, 0x11, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0b,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61,
	0x74, 0x61, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x48,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
	0x73, 0x0a, 0x11, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x76, 0x44, 0x61, 0x74,
	0x61, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x22, 0x72, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50,
	0x65, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d,
	0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6d, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
	0x12, 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x65,
	0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x72,
	0x0a, 0x11, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65,
	0x70, 0x6c, 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12,
	0x31, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72,
	0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70,
	0x6c, 0x79, 0x22, 0x6e, 0x0a, 0x10, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x72, 0x6f,
	0x61, 0x64, 0x43, 0x61, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x72, 0x6f, 0x61,
	0x64, 0x43, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x22, 0x6f, 0x0a, 0x11, 0x50, 0x32, 0x50, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73,
	0x69, 0x67, 0x6e, 0x22, 0xe0, 0x03, 0x0a, 0x0a, 0x50, 0x32, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32, 0x50, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x43, 0x68, 0x75,
	0x6e, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x43, 0x68, 0x75, 0x6e, 0x6b,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x43, 0x68,
	0x75, 0x6e, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x63, 0x68,
	0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
	0x66, 0x6f, 0x4d, 0x73, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
	0x66, 0x6f, 0x4d, 0x73, 0x67, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
	0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69,
	0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x4c,
	0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
	0x65, 0x71, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x71, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x50, 0x65, 0x65, 0x72,
	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x52, 0x65, 0x71, 0x50, 0x65, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x71, 0x50,
	0x65, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x65, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x70,
	0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69,
	0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48,
	0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x72,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x52, 0x65, 0x71, 0x50, 0x65, 0x65,
	0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x22, 0x22, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c,
	0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x0d, 0x43, 0x68, 0x75, 0x6e,
	0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65,
	0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x69,
	0x74, 0x65, 0x6d, 0x73, 0x22, 0xcc, 0x03, 0x0a, 0x0b, 0x50, 0x32, 0x50, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x32,
	0x50, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52,
	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x31,
	0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72,
	0x73, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x42,
	0x6f, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x63, 0x68, 0x75,
	0x6e, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x63,
	0x6f, 0x72, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
	0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x70, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x3a, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22,
	0x38, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49,
	0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x4d,
	0x75, 0x6c, 0x74, 0x69, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09,
	0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x64, 0x64, 0x72, 0x22, 0x5c, 0x0a, 0x0d, 0x43, 0x68, 0x75,
	0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68,
	0x75, 0x6e, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63,
	0x68, 0x75, 0x6e, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x3d, 0x0a, 0x0c, 0x50, 0x65, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x65, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x38, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x54, 0x6f, 0x70,
	0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75,
	0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
	0x22, 0x39, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x70, 0x6c,
	0x79, 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, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x0f, 0x50,
	0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x56, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73,
	0x68, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03,
	0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x49,
	0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69,
	0x63, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x0e, 0x46, 0x65, 0x74,
	0x63, 0x68, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64,
	0x75, 0x6c, 0x65, 0x22, 0x23, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x22, 0x3b, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f,
	0x76, 0x65, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x16, 0x0a,
	0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x52, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54,
	0x6f, 0x70, 0x69, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12,
	0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x45, 0x0a, 0x10, 0x4e, 0x65, 0x74,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x31, 0x0a,
	0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x69, 0x6e, 0x66, 0x6f,
	0x22, 0x7a, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06,
	0x72, 0x61, 0x74, 0x65, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61,
	0x74, 0x65, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x61, 0x74, 0x65, 0x6f, 0x75, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x61, 0x74, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1c,
	0x0a, 0x09, 0x72, 0x61, 0x74, 0x65, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x72, 0x61, 0x74, 0x65, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x3b, 0x0a, 0x09,
	0x42, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x62, 0x6c, 0x61,
	0x63, 0x6b, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
	0x62, 0x6c, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x63, 0x0a, 0x09, 0x42, 0x6c, 0x61,
	0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x5f,
	0x0a, 0x09, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70,
	0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
	0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22,
	0x60, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x21,
	0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72,
	0x73, 0x12, 0x2e, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
	0x4e, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x66,
	0x6f, 0x22, 0x4b, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08,
	0x70, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x70, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65,
	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1f,
	0x5a, 0x1d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x33, 0x33, 0x63,
	0x6e, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62,
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_p2pnext_proto_rawDescOnce sync.Once
	file_p2pnext_proto_rawDescData = file_p2pnext_proto_rawDesc
)

func file_p2pnext_proto_rawDescGZIP() []byte {
	file_p2pnext_proto_rawDescOnce.Do(func() {
		file_p2pnext_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2pnext_proto_rawDescData)
	})
	return file_p2pnext_proto_rawDescData
}

var file_p2pnext_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_p2pnext_proto_goTypes = []interface{}{
	(*MessageComm)(nil),            // 0: types.MessageComm
	(*MessageUtil)(nil),            // 1: types.MessageUtil
	(*MessagePeerInfoReq)(nil),     // 2: types.MessagePeerInfoReq
	(*MessagePeerInfoResp)(nil),    // 3: types.MessagePeerInfoResp
	(*MessageP2PVersionReq)(nil),   // 4: types.MessageP2PVersionReq
	(*MessageP2PVersionResp)(nil),  // 5: types.MessageP2PVersionResp
	(*MessagePingReq)(nil),         // 6: types.MessagePingReq
	(*MessagePingResp)(nil),        // 7: types.MessagePingResp
	(*MessageAddrReq)(nil),         // 8: types.MessageAddrReq
	(*MessageAddrResp)(nil),        // 9: types.MessageAddrResp
	(*MessageAddrList)(nil),        // 10: types.MessageAddrList
	(*MessageExternalNetReq)(nil),  // 11: types.MessageExternalNetReq
	(*MessageExternalNetResp)(nil), // 12: types.MessageExternalNetResp
	(*MessageGetBlocksReq)(nil),    // 13: types.MessageGetBlocksReq
	(*MessageGetBlocksResp)(nil),   // 14: types.MessageGetBlocksResp
	(*MessageGetMempoolReq)(nil),   // 15: types.MessageGetMempoolReq
	(*MessageVersion)(nil),         // 16: types.MessageVersion
	(*MessageHeaderReq)(nil),       // 17: types.MessageHeaderReq
	(*MessageHeaderResp)(nil),      // 18: types.MessageHeaderResp
	(*MessageInvDataReq)(nil),      // 19: types.MessageInvDataReq
	(*MessagePeerList)(nil),        // 20: types.MessagePeerList
	(*MessageNetInfo)(nil),         // 21: types.MessageNetInfo
	(*MessagePeersReply)(nil),      // 22: types.MessagePeersReply
	(*MessageBroadCast)(nil),       // 23: types.MessageBroadCast
	(*P2PMessageHeaders)(nil),      // 24: types.P2PMessageHeaders
	(*P2PRequest)(nil),             // 25: types.P2PRequest
	(*ReqPeers)(nil),               // 26: types.ReqPeers
	(*HashList)(nil),               // 27: types.HashList
	(*ChunkInfoList)(nil),          // 28: types.ChunkInfoList
	(*P2PResponse)(nil),            // 29: types.P2PResponse
	(*NodeInfo)(nil),               // 30: types.NodeInfo
	(*PeerInfo)(nil),               // 31: types.PeerInfo
	(*ChunkProvider)(nil),          // 32: types.ChunkProvider
	(*PeerInfoList)(nil),           // 33: types.PeerInfoList
	(*SubTopic)(nil),               // 34: types.SubTopic
	(*SubTopicReply)(nil),          // 35: types.SubTopicReply
	(*PublishTopicMsg)(nil),        // 36: types.PublishTopicMsg
	(*PublishTopicMsgReply)(nil),   // 37: types.PublishTopicMsgReply
	(*TopicData)(nil),              // 38: types.TopicData
	(*FetchTopicList)(nil),         // 39: types.FetchTopicList
	(*TopicList)(nil),              // 40: types.TopicList
	(*RemoveTopic)(nil),            // 41: types.RemoveTopic
	(*RemoveTopicReply)(nil),       // 42: types.RemoveTopicReply
	(*NetProtocolInfos)(nil),       // 43: types.NetProtocolInfos
	(*ProtocolInfo)(nil),           // 44: types.ProtocolInfo
	(*Blacklist)(nil),              // 45: types.Blacklist
	(*BlackInfo)(nil),              // 46: types.BlackInfo
	(*BlackPeer)(nil),              // 47: types.BlackPeer
	(*Statistical)(nil),            // 48: types.Statistical
	(*SetPeer)(nil),                // 49: types.SetPeer
	(*P2PPeerInfo)(nil),            // 50: types.P2PPeerInfo
	(*P2PVersion)(nil),             // 51: types.P2PVersion
	(*P2PVerAck)(nil),              // 52: types.P2PVerAck
	(*P2PExternalInfo)(nil),        // 53: types.P2PExternalInfo
	(*P2PGetBlocks)(nil),           // 54: types.P2PGetBlocks
	(*InvDatas)(nil),               // 55: types.InvDatas
	(*P2PPing)(nil),                // 56: types.P2PPing
	(*P2PPong)(nil),                // 57: types.P2PPong
	(*P2PGetAddr)(nil),             // 58: types.P2PGetAddr
	(*P2PAddr)(nil),                // 59: types.P2PAddr
	(*P2PAddrList)(nil),            // 60: types.P2PAddrList
	(*P2PGetMempool)(nil),          // 61: types.P2PGetMempool
	(*Versions)(nil),               // 62: types.Versions
	(*P2PGetHeaders)(nil),          // 63: types.P2PGetHeaders
	(*P2PHeaders)(nil),             // 64: types.P2PHeaders
	(*InvData)(nil),                // 65: types.InvData
	(*PeerList)(nil),               // 66: types.PeerList
	(*NodeNetInfo)(nil),            // 67: types.NodeNetInfo
	(*PeersReply)(nil),             // 68: types.PeersReply
	(*BroadCastData)(nil),          // 69: types.BroadCastData
	(*ReqChunkRecords)(nil),        // 70: types.ReqChunkRecords
	(*ChunkInfoMsg)(nil),           // 71: types.ChunkInfoMsg
	(*ReqBlocks)(nil),              // 72: types.ReqBlocks
	(*BlockBody)(nil),              // 73: types.BlockBody
	(*Headers)(nil),                // 74: types.Headers
	(*ChunkRecords)(nil),           // 75: types.ChunkRecords
	(*Peer)(nil),                   // 76: types.Peer
}
var file_p2pnext_proto_depIdxs = []int32{
	0,  // 0: types.MessageUtil.common:type_name -> types.MessageComm
	50, // 1: types.MessageUtil.peerInfo:type_name -> types.P2PPeerInfo
	51, // 2: types.MessageUtil.version:type_name -> types.P2PVersion
	52, // 3: types.MessageUtil.versionAck:type_name -> types.P2PVerAck
	53, // 4: types.MessageUtil.external:type_name -> types.P2PExternalInfo
	54, // 5: types.MessageUtil.getblocks:type_name -> types.P2PGetBlocks
	55, // 6: types.MessageUtil.invdatas:type_name -> types.InvDatas
	0,  // 7: types.MessagePeerInfoReq.messageData:type_name -> types.MessageComm
	0,  // 8: types.MessagePeerInfoResp.messageData:type_name -> types.MessageComm
	50, // 9: types.MessagePeerInfoResp.message:type_name -> types.P2PPeerInfo
	0,  // 10: types.MessageP2PVersionReq.messageData:type_name -> types.MessageComm
	51, // 11: types.MessageP2PVersionReq.message:type_name -> types.P2PVersion
	0,  // 12: types.MessageP2PVersionResp.messageData:type_name -> types.MessageComm
	51, // 13: types.MessageP2PVersionResp.message:type_name -> types.P2PVersion
	0,  // 14: types.MessagePingReq.messageData:type_name -> types.MessageComm
	56, // 15: types.MessagePingReq.message:type_name -> types.P2PPing
	0,  // 16: types.MessagePingResp.messageData:type_name -> types.MessageComm
	57, // 17: types.MessagePingResp.message:type_name -> types.P2PPong
	0,  // 18: types.MessageAddrReq.messageData:type_name -> types.MessageComm
	58, // 19: types.MessageAddrReq.message:type_name -> types.P2PGetAddr
	0,  // 20: types.MessageAddrResp.messageData:type_name -> types.MessageComm
	59, // 21: types.MessageAddrResp.message:type_name -> types.P2PAddr
	0,  // 22: types.MessageAddrList.messageData:type_name -> types.MessageComm
	60, // 23: types.MessageAddrList.message:type_name -> types.P2PAddrList
	0,  // 24: types.MessageExternalNetReq.messageData:type_name -> types.MessageComm
	0,  // 25: types.MessageExternalNetResp.messageData:type_name -> types.MessageComm
	53, // 26: types.MessageExternalNetResp.message:type_name -> types.P2PExternalInfo
	0,  // 27: types.MessageGetBlocksReq.messageData:type_name -> types.MessageComm
	54, // 28: types.MessageGetBlocksReq.message:type_name -> types.P2PGetBlocks
	0,  // 29: types.MessageGetBlocksResp.messageData:type_name -> types.MessageComm
	55, // 30: types.MessageGetBlocksResp.message:type_name -> types.InvDatas
	0,  // 31: types.MessageGetMempoolReq.messageData:type_name -> types.MessageComm
	61, // 32: types.MessageGetMempoolReq.message:type_name -> types.P2PGetMempool
	0,  // 33: types.MessageVersion.messageData:type_name -> types.MessageComm
	62, // 34: types.MessageVersion.message:type_name -> types.Versions
	0,  // 35: types.MessageHeaderReq.messageData:type_name -> types.MessageComm
	63, // 36: types.MessageHeaderReq.message:type_name -> types.P2PGetHeaders
	0,  // 37: types.MessageHeaderResp.messageData:type_name -> types.MessageComm
	64, // 38: types.MessageHeaderResp.message:type_name -> types.P2PHeaders
	0,  // 39: types.MessageInvDataReq.messageData:type_name -> types.MessageComm
	65, // 40: types.MessageInvDataReq.message:type_name -> types.InvData
	0,  // 41: types.MessagePeerList.messageData:type_name -> types.MessageComm
	66, // 42: types.MessagePeerList.message:type_name -> types.PeerList
	0,  // 43: types.MessageNetInfo.messageData:type_name -> types.MessageComm
	67, // 44: types.MessageNetInfo.message:type_name -> types.NodeNetInfo
	0,  // 45: types.MessagePeersReply.common:type_name -> types.MessageComm
	68, // 46: types.MessagePeersReply.peersReply:type_name -> types.PeersReply
	0,  // 47: types.MessageBroadCast.common:type_name -> types.MessageComm
	69, // 48: types.MessageBroadCast.message:type_name -> types.BroadCastData
	24, // 49: types.P2PRequest.headers:type_name -> types.P2PMessageHeaders
	70, // 50: types.P2PRequest.reqChunkRecords:type_name -> types.ReqChunkRecords
	71, // 51: types.P2PRequest.chunkInfoMsg:type_name -> types.ChunkInfoMsg
	28, // 52: types.P2PRequest.chunkInfoList:type_name -> types.ChunkInfoList
	72, // 53: types.P2PRequest.reqBlocks:type_name -> types.ReqBlocks
	26, // 54: types.P2PRequest.reqPeers:type_name -> types.ReqPeers
	31, // 55: types.P2PRequest.peerInfo:type_name -> types.PeerInfo
	32, // 56: types.P2PRequest.provider:type_name -> types.ChunkProvider
	71, // 57: types.ChunkInfoList.items:type_name -> types.ChunkInfoMsg
	24, // 58: types.P2PResponse.headers:type_name -> types.P2PMessageHeaders
	31, // 59: types.P2PResponse.closerPeers:type_name -> types.PeerInfo
	73, // 60: types.P2PResponse.blockBody:type_name -> types.BlockBody
	74, // 61: types.P2PResponse.blockHeaders:type_name -> types.Headers
	75, // 62: types.P2PResponse.chunkRecords:type_name -> types.ChunkRecords
	30, // 63: types.P2PResponse.nodeInfo:type_name -> types.NodeInfo
	31, // 64: types.P2PResponse.peerInfo:type_name -> types.PeerInfo
	33, // 65: types.P2PResponse.peerInfos:type_name -> types.PeerInfoList
	31, // 66: types.ChunkProvider.peerInfos:type_name -> types.PeerInfo
	31, // 67: types.PeerInfoList.peerInfos:type_name -> types.PeerInfo
	44, // 68: types.NetProtocolInfos.protoinfo:type_name -> types.ProtocolInfo
	46, // 69: types.Blacklist.blackinfo:type_name -> types.BlackInfo
	76, // 70: types.Statistical.peers:type_name -> types.Peer
	67, // 71: types.Statistical.nodeinfo:type_name -> types.NodeNetInfo
	72, // [72:72] is the sub-list for method output_type
	72, // [72:72] is the sub-list for method input_type
	72, // [72:72] is the sub-list for extension type_name
	72, // [72:72] is the sub-list for extension extendee
	0,  // [0:72] is the sub-list for field type_name
}

func init() { file_p2pnext_proto_init() }
func file_p2pnext_proto_init() {
	if File_p2pnext_proto != nil {
		return
	}
	file_p2p_proto_init()
	file_blockchain_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_p2pnext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageComm); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageUtil); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePeerInfoReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePeerInfoResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageP2PVersionReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageP2PVersionResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePingReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePingResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageAddrReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageAddrResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageAddrList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageExternalNetReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageExternalNetResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageGetBlocksReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageGetBlocksResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageGetMempoolReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageVersion); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageHeaderReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageHeaderResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageInvDataReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePeerList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageNetInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessagePeersReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MessageBroadCast); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*P2PMessageHeaders); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*P2PRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqPeers); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HashList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChunkInfoList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*P2PResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NodeInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PeerInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChunkProvider); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PeerInfoList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubTopic); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubTopicReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PublishTopicMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PublishTopicMsgReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopicData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FetchTopicList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopicList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveTopic); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveTopicReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetProtocolInfos); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProtocolInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Blacklist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlackInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlackPeer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Statistical); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_p2pnext_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetPeer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_p2pnext_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*MessageUtil_PeerInfo)(nil),
		(*MessageUtil_Version)(nil),
		(*MessageUtil_VersionAck)(nil),
		(*MessageUtil_External)(nil),
		(*MessageUtil_Getblocks)(nil),
		(*MessageUtil_Invdatas)(nil),
	}
	file_p2pnext_proto_msgTypes[25].OneofWrappers = []interface{}{
		(*P2PRequest_ReqChunkRecords)(nil),
		(*P2PRequest_ChunkInfoMsg)(nil),
		(*P2PRequest_ChunkInfoList)(nil),
		(*P2PRequest_ReqBlocks)(nil),
		(*P2PRequest_ReqPeers)(nil),
		(*P2PRequest_Pid)(nil),
		(*P2PRequest_PeerInfo)(nil),
		(*P2PRequest_Provider)(nil),
	}
	file_p2pnext_proto_msgTypes[29].OneofWrappers = []interface{}{
		(*P2PResponse_BlockBody)(nil),
		(*P2PResponse_BlockHeaders)(nil),
		(*P2PResponse_ChunkRecords)(nil),
		(*P2PResponse_NodeInfo)(nil),
		(*P2PResponse_PeerInfo)(nil),
		(*P2PResponse_PeerInfos)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_p2pnext_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   50,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_p2pnext_proto_goTypes,
		DependencyIndexes: file_p2pnext_proto_depIdxs,
		MessageInfos:      file_p2pnext_proto_msgTypes,
	}.Build()
	File_p2pnext_proto = out.File
	file_p2pnext_proto_rawDesc = nil
	file_p2pnext_proto_goTypes = nil
	file_p2pnext_proto_depIdxs = nil
}
