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

package types

import (
	context "context"
	reflect "reflect"
	sync "sync"

	types "github.com/33cn/chain33/types"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

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)
)

// stateDB
type ParacrossStatusDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addrs     []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	BlockHash [][]byte `protobuf:"bytes,2,rep,name=blockHash,proto3" json:"blockHash,omitempty"`
}

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

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

func (*ParacrossStatusDetails) ProtoMessage() {}

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

func (x *ParacrossStatusDetails) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

func (x *ParacrossStatusDetails) GetBlockHash() [][]byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

//记录不同blockHash的详细数据
type ParacrossStatusBlockDetails struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHashs [][]byte `protobuf:"bytes,1,rep,name=blockHashs,proto3" json:"blockHashs,omitempty"`
	TxResults  [][]byte `protobuf:"bytes,2,rep,name=txResults,proto3" json:"txResults,omitempty"`
}

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

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

func (*ParacrossStatusBlockDetails) ProtoMessage() {}

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

func (x *ParacrossStatusBlockDetails) GetBlockHashs() [][]byte {
	if x != nil {
		return x.BlockHashs
	}
	return nil
}

func (x *ParacrossStatusBlockDetails) GetTxResults() [][]byte {
	if x != nil {
		return x.TxResults
	}
	return nil
}

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

	// ing, done
	Status             int32                        `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Title              string                       `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Height             int64                        `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	Details            *ParacrossStatusDetails      `protobuf:"bytes,4,opt,name=details,proto3" json:"details,omitempty"`
	MainHeight         int64                        `protobuf:"varint,5,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash           []byte                       `protobuf:"bytes,6,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	BlockDetails       *ParacrossStatusBlockDetails `protobuf:"bytes,7,opt,name=blockDetails,proto3" json:"blockDetails,omitempty"`
	SupervisionDetails *ParacrossStatusDetails      `protobuf:"bytes,8,opt,name=supervisionDetails,proto3" json:"supervisionDetails,omitempty"`
}

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

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

func (*ParacrossHeightStatus) ProtoMessage() {}

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

func (x *ParacrossHeightStatus) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParacrossHeightStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *ParacrossHeightStatus) GetDetails() *ParacrossStatusDetails {
	if x != nil {
		return x.Details
	}
	return nil
}

func (x *ParacrossHeightStatus) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossHeightStatus) GetMainHash() []byte {
	if x != nil {
		return x.MainHash
	}
	return nil
}

func (x *ParacrossHeightStatus) GetBlockDetails() *ParacrossStatusBlockDetails {
	if x != nil {
		return x.BlockDetails
	}
	return nil
}

func (x *ParacrossHeightStatus) GetSupervisionDetails() *ParacrossStatusDetails {
	if x != nil {
		return x.SupervisionDetails
	}
	return nil
}

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

	Status                     int32    `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Title                      string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Height                     int64    `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	MainHeight                 int64    `protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash                   string   `protobuf:"bytes,5,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
	CommitAddrs                []string `protobuf:"bytes,6,rep,name=commitAddrs,proto3" json:"commitAddrs,omitempty"`
	CommitBlockHash            []string `protobuf:"bytes,7,rep,name=commitBlockHash,proto3" json:"commitBlockHash,omitempty"`
	CommitSupervisionAddrs     []string `protobuf:"bytes,8,rep,name=commitSupervisionAddrs,proto3" json:"commitSupervisionAddrs,omitempty"`
	CommitSupervisionBlockHash []string `protobuf:"bytes,9,rep,name=commitSupervisionBlockHash,proto3" json:"commitSupervisionBlockHash,omitempty"`
}

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

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

func (*ParacrossHeightStatusRsp) ProtoMessage() {}

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

func (x *ParacrossHeightStatusRsp) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ParacrossHeightStatusRsp) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *ParacrossHeightStatusRsp) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossHeightStatusRsp) GetMainHash() string {
	if x != nil {
		return x.MainHash
	}
	return ""
}

func (x *ParacrossHeightStatusRsp) GetCommitAddrs() []string {
	if x != nil {
		return x.CommitAddrs
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitBlockHash() []string {
	if x != nil {
		return x.CommitBlockHash
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitSupervisionAddrs() []string {
	if x != nil {
		return x.CommitSupervisionAddrs
	}
	return nil
}

func (x *ParacrossHeightStatusRsp) GetCommitSupervisionBlockHash() []string {
	if x != nil {
		return x.CommitSupervisionBlockHash
	}
	return nil
}

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

	Title      string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Height     int64  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	BlockHash  []byte `protobuf:"bytes,3,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	MainHeight int64  `protobuf:"varint,4,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash   []byte `protobuf:"bytes,5,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
}

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

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

func (*ParacrossStatus) ProtoMessage() {}

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

func (x *ParacrossStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *ParacrossStatus) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ParacrossStatus) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParacrossStatus) GetMainHash() []byte {
	if x != nil {
		return x.MainHash
	}
	return nil
}

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

	Title            string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	ChainHeight      int64  `protobuf:"varint,2,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"`
	ConsensHeight    int64  `protobuf:"varint,3,opt,name=consensHeight,proto3" json:"consensHeight,omitempty"`
	ConsensBlockHash string `protobuf:"bytes,4,opt,name=consensBlockHash,proto3" json:"consensBlockHash,omitempty"`
}

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

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

func (*ParacrossConsensusStatus) ProtoMessage() {}

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

func (x *ParacrossConsensusStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParacrossConsensusStatus) GetChainHeight() int64 {
	if x != nil {
		return x.ChainHeight
	}
	return 0
}

func (x *ParacrossConsensusStatus) GetConsensHeight() int64 {
	if x != nil {
		return x.ConsensHeight
	}
	return 0
}

func (x *ParacrossConsensusStatus) GetConsensBlockHash() string {
	if x != nil {
		return x.ConsensBlockHash
	}
	return ""
}

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

	Height     int64  `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	BlockHash  string `protobuf:"bytes,2,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	MainHeight int64  `protobuf:"varint,3,opt,name=mainHeight,proto3" json:"mainHeight,omitempty"`
	MainHash   string `protobuf:"bytes,4,opt,name=mainHash,proto3" json:"mainHash,omitempty"`
}

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

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

func (*ParaBlock2MainMap) ProtoMessage() {}

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

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

func (x *ParaBlock2MainMap) GetBlockHash() string {
	if x != nil {
		return x.BlockHash
	}
	return ""
}

func (x *ParaBlock2MainMap) GetMainHeight() int64 {
	if x != nil {
		return x.MainHeight
	}
	return 0
}

func (x *ParaBlock2MainMap) GetMainHash() string {
	if x != nil {
		return x.MainHash
	}
	return ""
}

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

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

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

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

func (*ParaBlock2MainInfo) ProtoMessage() {}

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

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

// action
type ParacrossNodeStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MainBlockHash     []byte   `protobuf:"bytes,1,opt,name=mainBlockHash,proto3" json:"mainBlockHash,omitempty"`
	MainBlockHeight   int64    `protobuf:"varint,2,opt,name=mainBlockHeight,proto3" json:"mainBlockHeight,omitempty"`
	Title             string   `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	Height            int64    `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	PreBlockHash      []byte   `protobuf:"bytes,5,opt,name=preBlockHash,proto3" json:"preBlockHash,omitempty"`
	BlockHash         []byte   `protobuf:"bytes,6,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	PreStateHash      []byte   `protobuf:"bytes,7,opt,name=preStateHash,proto3" json:"preStateHash,omitempty"`
	StateHash         []byte   `protobuf:"bytes,8,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts          uint32   `protobuf:"varint,9,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult          []byte   `protobuf:"bytes,10,opt,name=txResult,proto3" json:"txResult,omitempty"`
	TxHashs           [][]byte `protobuf:"bytes,11,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
	CrossTxResult     []byte   `protobuf:"bytes,12,opt,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
	CrossTxHashs      [][]byte `protobuf:"bytes,13,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
	NonCommitTxCounts uint32   `protobuf:"varint,14,opt,name=nonCommitTxCounts,proto3" json:"nonCommitTxCounts,omitempty"`
}

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

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

func (*ParacrossNodeStatus) ProtoMessage() {}

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

func (x *ParacrossNodeStatus) GetMainBlockHash() []byte {
	if x != nil {
		return x.MainBlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetMainBlockHeight() int64 {
	if x != nil {
		return x.MainBlockHeight
	}
	return 0
}

func (x *ParacrossNodeStatus) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *ParacrossNodeStatus) GetPreBlockHash() []byte {
	if x != nil {
		return x.PreBlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetPreStateHash() []byte {
	if x != nil {
		return x.PreStateHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetStateHash() []byte {
	if x != nil {
		return x.StateHash
	}
	return nil
}

func (x *ParacrossNodeStatus) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *ParacrossNodeStatus) GetTxResult() []byte {
	if x != nil {
		return x.TxResult
	}
	return nil
}

func (x *ParacrossNodeStatus) GetTxHashs() [][]byte {
	if x != nil {
		return x.TxHashs
	}
	return nil
}

func (x *ParacrossNodeStatus) GetCrossTxResult() []byte {
	if x != nil {
		return x.CrossTxResult
	}
	return nil
}

func (x *ParacrossNodeStatus) GetCrossTxHashs() [][]byte {
	if x != nil {
		return x.CrossTxHashs
	}
	return nil
}

func (x *ParacrossNodeStatus) GetNonCommitTxCounts() uint32 {
	if x != nil {
		return x.NonCommitTxCounts
	}
	return 0
}

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

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

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

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

func (*SelfConsensStages) ProtoMessage() {}

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

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

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

	StartHeight int64  `protobuf:"varint,1,opt,name=startHeight,proto3" json:"startHeight,omitempty"`
	Enable      uint32 `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
}

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

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

func (*SelfConsensStage) ProtoMessage() {}

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

func (x *SelfConsensStage) GetStartHeight() int64 {
	if x != nil {
		return x.StartHeight
	}
	return 0
}

func (x *SelfConsensStage) GetEnable() uint32 {
	if x != nil {
		return x.Enable
	}
	return 0
}

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

	Id         string              `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status     uint32              `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	Stage      *SelfConsensStage   `protobuf:"bytes,3,opt,name=stage,proto3" json:"stage,omitempty"`
	FromAddr   string              `protobuf:"bytes,4,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	ExecHeight int64               `protobuf:"varint,5,opt,name=execHeight,proto3" json:"execHeight,omitempty"`
	Votes      *ParaNodeVoteDetail `protobuf:"bytes,6,opt,name=votes,proto3" json:"votes,omitempty"`
}

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

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

func (*SelfConsensStageInfo) ProtoMessage() {}

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

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

func (x *SelfConsensStageInfo) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *SelfConsensStageInfo) GetStage() *SelfConsensStage {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *SelfConsensStageInfo) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *SelfConsensStageInfo) GetExecHeight() int64 {
	if x != nil {
		return x.ExecHeight
	}
	return 0
}

func (x *SelfConsensStageInfo) GetVotes() *ParaNodeVoteDetail {
	if x != nil {
		return x.Votes
	}
	return nil
}

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

	Stage   *SelfConsensStageInfo `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"`
	TxIndex string                `protobuf:"bytes,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
}

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

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

func (*LocalSelfConsStageInfo) ProtoMessage() {}

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

func (x *LocalSelfConsStageInfo) GetStage() *SelfConsensStageInfo {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *LocalSelfConsStageInfo) GetTxIndex() string {
	if x != nil {
		return x.TxIndex
	}
	return ""
}

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

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// 投票值　１:ok 2:nok
	Value uint32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

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

func (*ConfigVoteInfo) ProtoMessage() {}

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

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

func (x *ConfigVoteInfo) GetValue() uint32 {
	if x != nil {
		return x.Value
	}
	return 0
}

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

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*ConfigCancelInfo) ProtoMessage() {}

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

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

//广义配置类型
type ParaStageConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// 配置类型
	Ty uint32 `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
	// Types that are assignable to Value:
	//	*ParaStageConfig_Stage
	//	*ParaStageConfig_Vote
	//	*ParaStageConfig_Cancel
	Value isParaStageConfig_Value `protobuf_oneof:"value"`
}

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

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

func (*ParaStageConfig) ProtoMessage() {}

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

func (x *ParaStageConfig) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ParaStageConfig) GetTy() uint32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

func (m *ParaStageConfig) GetValue() isParaStageConfig_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *ParaStageConfig) GetStage() *SelfConsensStage {
	if x, ok := x.GetValue().(*ParaStageConfig_Stage); ok {
		return x.Stage
	}
	return nil
}

func (x *ParaStageConfig) GetVote() *ConfigVoteInfo {
	if x, ok := x.GetValue().(*ParaStageConfig_Vote); ok {
		return x.Vote
	}
	return nil
}

func (x *ParaStageConfig) GetCancel() *ConfigCancelInfo {
	if x, ok := x.GetValue().(*ParaStageConfig_Cancel); ok {
		return x.Cancel
	}
	return nil
}

type isParaStageConfig_Value interface {
	isParaStageConfig_Value()
}

type ParaStageConfig_Stage struct {
	Stage *SelfConsensStage `protobuf:"bytes,10,opt,name=stage,proto3,oneof"`
}

type ParaStageConfig_Vote struct {
	Vote *ConfigVoteInfo `protobuf:"bytes,11,opt,name=vote,proto3,oneof"`
}

type ParaStageConfig_Cancel struct {
	Cancel *ConfigCancelInfo `protobuf:"bytes,12,opt,name=cancel,proto3,oneof"`
}

func (*ParaStageConfig_Stage) isParaStageConfig_Value() {}

func (*ParaStageConfig_Vote) isParaStageConfig_Value() {}

func (*ParaStageConfig_Cancel) isParaStageConfig_Value() {}

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

	Prev    *SelfConsensStageInfo `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *SelfConsensStageInfo `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

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

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

func (*ReceiptSelfConsStageConfig) ProtoMessage() {}

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

func (x *ReceiptSelfConsStageConfig) GetPrev() *SelfConsensStageInfo {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptSelfConsStageConfig) GetCurrent() *SelfConsensStageInfo {
	if x != nil {
		return x.Current
	}
	return nil
}

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

	Id         string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Stage      *SelfConsensStage `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"`
	TotalNodes int32             `protobuf:"varint,3,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalVote  int32             `protobuf:"varint,4,opt,name=totalVote,proto3" json:"totalVote,omitempty"`
	MostVote   int32             `protobuf:"varint,5,opt,name=mostVote,proto3" json:"mostVote,omitempty"`
	VoteRst    string            `protobuf:"bytes,6,opt,name=voteRst,proto3" json:"voteRst,omitempty"`
}

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

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

func (*ReceiptSelfConsStageVoteDone) ProtoMessage() {}

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

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

func (x *ReceiptSelfConsStageVoteDone) GetStage() *SelfConsensStage {
	if x != nil {
		return x.Stage
	}
	return nil
}

func (x *ReceiptSelfConsStageVoteDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetTotalVote() int32 {
	if x != nil {
		return x.TotalVote
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetMostVote() int32 {
	if x != nil {
		return x.MostVote
	}
	return 0
}

func (x *ReceiptSelfConsStageVoteDone) GetVoteRst() string {
	if x != nil {
		return x.VoteRst
	}
	return ""
}

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

	Prev    *SelfConsensStages `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *SelfConsensStages `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

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

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

func (*ReceiptSelfConsStagesUpdate) ProtoMessage() {}

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

func (x *ReceiptSelfConsStagesUpdate) GetPrev() *SelfConsensStages {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptSelfConsStagesUpdate) GetCurrent() *SelfConsensStages {
	if x != nil {
		return x.Current
	}
	return nil
}

// query
type ReqQuerySelfStages struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status    uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Count     int32  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Direction int32  `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	Height    int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	Index     int32  `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
}

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

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

func (*ReqQuerySelfStages) ProtoMessage() {}

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

func (x *ReqQuerySelfStages) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

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

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

func (x *ReqQuerySelfStages) GetDirection() int32 {
	if x != nil {
		return x.Direction
	}
	return 0
}

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

func (x *ReqQuerySelfStages) GetIndex() int32 {
	if x != nil {
		return x.Index
	}
	return 0
}

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

	StageInfo []*SelfConsensStageInfo `protobuf:"bytes,1,rep,name=stageInfo,proto3" json:"stageInfo,omitempty"`
}

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

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

func (*ReplyQuerySelfStages) ProtoMessage() {}

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

func (x *ReplyQuerySelfStages) GetStageInfo() []*SelfConsensStageInfo {
	if x != nil {
		return x.StageInfo
	}
	return nil
}

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

	Sign     []byte   `protobuf:"bytes,1,opt,name=sign,proto3" json:"sign,omitempty"`
	AddrsMap []byte   `protobuf:"bytes,2,opt,name=addrsMap,proto3" json:"addrsMap,omitempty"` //addrs' bitmap
	Addrs    []string `protobuf:"bytes,3,rep,name=addrs,proto3" json:"addrs,omitempty"`       //addr's array
}

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

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

func (*ParacrossCommitBlsInfo) ProtoMessage() {}

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

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

func (x *ParacrossCommitBlsInfo) GetAddrsMap() []byte {
	if x != nil {
		return x.AddrsMap
	}
	return nil
}

func (x *ParacrossCommitBlsInfo) GetAddrs() []string {
	if x != nil {
		return x.Addrs
	}
	return nil
}

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

	Status *ParacrossNodeStatus    `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	Bls    *ParacrossCommitBlsInfo `protobuf:"bytes,2,opt,name=bls,proto3" json:"bls,omitempty"`
}

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

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

func (*ParacrossCommitAction) ProtoMessage() {}

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

func (x *ParacrossCommitAction) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParacrossCommitAction) GetBls() *ParacrossCommitBlsInfo {
	if x != nil {
		return x.Bls
	}
	return nil
}

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

	Status          *ParacrossNodeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	IsSelfConsensus bool                 `protobuf:"varint,2,opt,name=isSelfConsensus,proto3" json:"isSelfConsensus,omitempty"`
	AddIssueCoins   int64                `protobuf:"varint,3,opt,name=addIssueCoins,proto3" json:"addIssueCoins,omitempty"`
}

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

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

func (*ParacrossMinerAction) ProtoMessage() {}

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

func (x *ParacrossMinerAction) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParacrossMinerAction) GetIsSelfConsensus() bool {
	if x != nil {
		return x.IsSelfConsensus
	}
	return false
}

func (x *ParacrossMinerAction) GetAddIssueCoins() int64 {
	if x != nil {
		return x.AddIssueCoins
	}
	return 0
}

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

	Addr   string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Amount int64  `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
}

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

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

func (*ParaMinerReward) ProtoMessage() {}

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

func (x *ParaMinerReward) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ParaMinerReward) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

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

	AssetExec   string `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Amount      int64  `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	//default signed addr
	ToAddr string `protobuf:"bytes,4,opt,name=toAddr,proto3" json:"toAddr,omitempty"`
	Note   string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
}

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

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

func (*CrossAssetTransfer) ProtoMessage() {}

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

func (x *CrossAssetTransfer) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *CrossAssetTransfer) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *CrossAssetTransfer) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *CrossAssetTransfer) GetToAddr() string {
	if x != nil {
		return x.ToAddr
	}
	return ""
}

func (x *CrossAssetTransfer) GetNote() string {
	if x != nil {
		return x.Note
	}
	return ""
}

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

	BlockHeight int64  `protobuf:"varint,1,opt,name=blockHeight,proto3" json:"blockHeight,omitempty"`
	FilterIndex int32  `protobuf:"varint,2,opt,name=filterIndex,proto3" json:"filterIndex,omitempty"`
	TxHash      []byte `protobuf:"bytes,3,opt,name=txHash,proto3" json:"txHash,omitempty"`
}

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

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

func (*CrossTxIndex) ProtoMessage() {}

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

func (x *CrossTxIndex) GetBlockHeight() int64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

func (x *CrossTxIndex) GetFilterIndex() int32 {
	if x != nil {
		return x.FilterIndex
	}
	return 0
}

func (x *CrossTxIndex) GetTxHash() []byte {
	if x != nil {
		return x.TxHash
	}
	return nil
}

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

	ChainTitle  string          `protobuf:"bytes,1,opt,name=chainTitle,proto3" json:"chainTitle,omitempty"`
	CommitRound int64           `protobuf:"varint,2,opt,name=commitRound,proto3" json:"commitRound,omitempty"`
	TxIndices   []*CrossTxIndex `protobuf:"bytes,3,rep,name=txIndices,proto3" json:"txIndices,omitempty"`
}

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

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

func (*RollupCrossTx) ProtoMessage() {}

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

func (x *RollupCrossTx) GetChainTitle() string {
	if x != nil {
		return x.ChainTitle
	}
	return ""
}

func (x *RollupCrossTx) GetCommitRound() int64 {
	if x != nil {
		return x.CommitRound
	}
	return 0
}

func (x *RollupCrossTx) GetTxIndices() []*CrossTxIndex {
	if x != nil {
		return x.TxIndices
	}
	return nil
}

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

	CommitRound      int64    `protobuf:"varint,1,opt,name=commitRound,proto3" json:"commitRound,omitempty"`
	ChainTitle       string   `protobuf:"bytes,2,opt,name=chainTitle,proto3" json:"chainTitle,omitempty"`
	CrossTxResults   string   `protobuf:"bytes,3,opt,name=crossTxResults,proto3" json:"crossTxResults,omitempty"`
	CrossTxCheckHash string   `protobuf:"bytes,4,opt,name=crossTxCheckHash,proto3" json:"crossTxCheckHash,omitempty"`
	CrossTxHashes    []string `protobuf:"bytes,5,rep,name=crossTxHashes,proto3" json:"crossTxHashes,omitempty"`
}

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

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

func (*RollupCrossTxLog) ProtoMessage() {}

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

func (x *RollupCrossTxLog) GetCommitRound() int64 {
	if x != nil {
		return x.CommitRound
	}
	return 0
}

func (x *RollupCrossTxLog) GetChainTitle() string {
	if x != nil {
		return x.ChainTitle
	}
	return ""
}

func (x *RollupCrossTxLog) GetCrossTxResults() string {
	if x != nil {
		return x.CrossTxResults
	}
	return ""
}

func (x *RollupCrossTxLog) GetCrossTxCheckHash() string {
	if x != nil {
		return x.CrossTxCheckHash
	}
	return ""
}

func (x *RollupCrossTxLog) GetCrossTxHashes() []string {
	if x != nil {
		return x.CrossTxHashes
	}
	return nil
}

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

	// Types that are assignable to Value:
	//	*ParacrossAction_Commit
	//	*ParacrossAction_Miner
	//	*ParacrossAction_AssetTransfer
	//	*ParacrossAction_AssetWithdraw
	//	*ParacrossAction_Transfer
	//	*ParacrossAction_Withdraw
	//	*ParacrossAction_TransferToExec
	//	*ParacrossAction_NodeConfig
	//	*ParacrossAction_NodeGroupConfig
	//	*ParacrossAction_SelfStageConfig
	//	*ParacrossAction_CrossAssetTransfer
	//	*ParacrossAction_ParaBindMiner
	//	*ParacrossAction_SupervisionNodeConfig
	//	*ParacrossAction_RollupCrossTx
	Value isParacrossAction_Value `protobuf_oneof:"value"`
	Ty    int32                   `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*ParacrossAction) ProtoMessage() {}

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

func (m *ParacrossAction) GetValue() isParacrossAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *ParacrossAction) GetCommit() *ParacrossCommitAction {
	if x, ok := x.GetValue().(*ParacrossAction_Commit); ok {
		return x.Commit
	}
	return nil
}

func (x *ParacrossAction) GetMiner() *ParacrossMinerAction {
	if x, ok := x.GetValue().(*ParacrossAction_Miner); ok {
		return x.Miner
	}
	return nil
}

func (x *ParacrossAction) GetAssetTransfer() *types.AssetsTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_AssetTransfer); ok {
		return x.AssetTransfer
	}
	return nil
}

func (x *ParacrossAction) GetAssetWithdraw() *types.AssetsWithdraw {
	if x, ok := x.GetValue().(*ParacrossAction_AssetWithdraw); ok {
		return x.AssetWithdraw
	}
	return nil
}

func (x *ParacrossAction) GetTransfer() *types.AssetsTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_Transfer); ok {
		return x.Transfer
	}
	return nil
}

func (x *ParacrossAction) GetWithdraw() *types.AssetsWithdraw {
	if x, ok := x.GetValue().(*ParacrossAction_Withdraw); ok {
		return x.Withdraw
	}
	return nil
}

func (x *ParacrossAction) GetTransferToExec() *types.AssetsTransferToExec {
	if x, ok := x.GetValue().(*ParacrossAction_TransferToExec); ok {
		return x.TransferToExec
	}
	return nil
}

func (x *ParacrossAction) GetNodeConfig() *ParaNodeAddrConfig {
	if x, ok := x.GetValue().(*ParacrossAction_NodeConfig); ok {
		return x.NodeConfig
	}
	return nil
}

func (x *ParacrossAction) GetNodeGroupConfig() *ParaNodeGroupConfig {
	if x, ok := x.GetValue().(*ParacrossAction_NodeGroupConfig); ok {
		return x.NodeGroupConfig
	}
	return nil
}

func (x *ParacrossAction) GetSelfStageConfig() *ParaStageConfig {
	if x, ok := x.GetValue().(*ParacrossAction_SelfStageConfig); ok {
		return x.SelfStageConfig
	}
	return nil
}

func (x *ParacrossAction) GetCrossAssetTransfer() *CrossAssetTransfer {
	if x, ok := x.GetValue().(*ParacrossAction_CrossAssetTransfer); ok {
		return x.CrossAssetTransfer
	}
	return nil
}

func (x *ParacrossAction) GetParaBindMiner() *ParaBindMinerCmd {
	if x, ok := x.GetValue().(*ParacrossAction_ParaBindMiner); ok {
		return x.ParaBindMiner
	}
	return nil
}

func (x *ParacrossAction) GetSupervisionNodeConfig() *ParaNodeGroupConfig {
	if x, ok := x.GetValue().(*ParacrossAction_SupervisionNodeConfig); ok {
		return x.SupervisionNodeConfig
	}
	return nil
}

func (x *ParacrossAction) GetRollupCrossTx() *RollupCrossTx {
	if x, ok := x.GetValue().(*ParacrossAction_RollupCrossTx); ok {
		return x.RollupCrossTx
	}
	return nil
}

func (x *ParacrossAction) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

type isParacrossAction_Value interface {
	isParacrossAction_Value()
}

type ParacrossAction_Commit struct {
	Commit *ParacrossCommitAction `protobuf:"bytes,1,opt,name=commit,proto3,oneof"`
}

type ParacrossAction_Miner struct {
	Miner *ParacrossMinerAction `protobuf:"bytes,3,opt,name=miner,proto3,oneof"`
}

type ParacrossAction_AssetTransfer struct {
	AssetTransfer *types.AssetsTransfer `protobuf:"bytes,4,opt,name=assetTransfer,proto3,oneof"`
}

type ParacrossAction_AssetWithdraw struct {
	AssetWithdraw *types.AssetsWithdraw `protobuf:"bytes,5,opt,name=assetWithdraw,proto3,oneof"`
}

type ParacrossAction_Transfer struct {
	Transfer *types.AssetsTransfer `protobuf:"bytes,6,opt,name=transfer,proto3,oneof"`
}

type ParacrossAction_Withdraw struct {
	Withdraw *types.AssetsWithdraw `protobuf:"bytes,7,opt,name=withdraw,proto3,oneof"`
}

type ParacrossAction_TransferToExec struct {
	TransferToExec *types.AssetsTransferToExec `protobuf:"bytes,8,opt,name=transferToExec,proto3,oneof"`
}

type ParacrossAction_NodeConfig struct {
	NodeConfig *ParaNodeAddrConfig `protobuf:"bytes,9,opt,name=nodeConfig,proto3,oneof"`
}

type ParacrossAction_NodeGroupConfig struct {
	NodeGroupConfig *ParaNodeGroupConfig `protobuf:"bytes,10,opt,name=nodeGroupConfig,proto3,oneof"`
}

type ParacrossAction_SelfStageConfig struct {
	SelfStageConfig *ParaStageConfig `protobuf:"bytes,11,opt,name=selfStageConfig,proto3,oneof"`
}

type ParacrossAction_CrossAssetTransfer struct {
	CrossAssetTransfer *CrossAssetTransfer `protobuf:"bytes,12,opt,name=crossAssetTransfer,proto3,oneof"`
}

type ParacrossAction_ParaBindMiner struct {
	ParaBindMiner *ParaBindMinerCmd `protobuf:"bytes,13,opt,name=paraBindMiner,proto3,oneof"`
}

type ParacrossAction_SupervisionNodeConfig struct {
	SupervisionNodeConfig *ParaNodeGroupConfig `protobuf:"bytes,14,opt,name=supervisionNodeConfig,proto3,oneof"`
}

type ParacrossAction_RollupCrossTx struct {
	RollupCrossTx *RollupCrossTx `protobuf:"bytes,15,opt,name=rollupCrossTx,proto3,oneof"`
}

func (*ParacrossAction_Commit) isParacrossAction_Value() {}

func (*ParacrossAction_Miner) isParacrossAction_Value() {}

func (*ParacrossAction_AssetTransfer) isParacrossAction_Value() {}

func (*ParacrossAction_AssetWithdraw) isParacrossAction_Value() {}

func (*ParacrossAction_Transfer) isParacrossAction_Value() {}

func (*ParacrossAction_Withdraw) isParacrossAction_Value() {}

func (*ParacrossAction_TransferToExec) isParacrossAction_Value() {}

func (*ParacrossAction_NodeConfig) isParacrossAction_Value() {}

func (*ParacrossAction_NodeGroupConfig) isParacrossAction_Value() {}

func (*ParacrossAction_SelfStageConfig) isParacrossAction_Value() {}

func (*ParacrossAction_CrossAssetTransfer) isParacrossAction_Value() {}

func (*ParacrossAction_ParaBindMiner) isParacrossAction_Value() {}

func (*ParacrossAction_SupervisionNodeConfig) isParacrossAction_Value() {}

func (*ParacrossAction_RollupCrossTx) isParacrossAction_Value() {}

// logs
type ReceiptParacrossCommit struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr    string                 `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Status  *ParacrossNodeStatus   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	Prev    *ParacrossHeightStatus `protobuf:"bytes,3,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *ParacrossHeightStatus `protobuf:"bytes,4,opt,name=current,proto3" json:"current,omitempty"`
}

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

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

func (*ReceiptParacrossCommit) ProtoMessage() {}

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

func (x *ReceiptParacrossCommit) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParacrossCommit) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ReceiptParacrossCommit) GetPrev() *ParacrossHeightStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptParacrossCommit) GetCurrent() *ParacrossHeightStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

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

	Status *ParacrossNodeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*ReceiptParacrossMiner) ProtoMessage() {}

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

func (x *ReceiptParacrossMiner) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

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

	TotalNodes             int32    `protobuf:"varint,1,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalCommit            int32    `protobuf:"varint,2,opt,name=totalCommit,proto3" json:"totalCommit,omitempty"`
	MostSameCommit         int32    `protobuf:"varint,3,opt,name=mostSameCommit,proto3" json:"mostSameCommit,omitempty"`
	Title                  string   `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Height                 int64    `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	StateHash              []byte   `protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts               uint32   `protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult               []byte   `protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
	BlockHash              []byte   `protobuf:"bytes,9,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
	TxHashs                [][]byte `protobuf:"bytes,10,rep,name=txHashs,proto3" json:"txHashs,omitempty"`
	CrossTxResult          []byte   `protobuf:"bytes,11,opt,name=crossTxResult,proto3" json:"crossTxResult,omitempty"`
	CrossTxHashs           [][]byte `protobuf:"bytes,12,rep,name=crossTxHashs,proto3" json:"crossTxHashs,omitempty"`
	MainBlockHash          []byte   `protobuf:"bytes,13,opt,name=mainBlockHash,proto3" json:"mainBlockHash,omitempty"`
	MainBlockHeight        int64    `protobuf:"varint,14,opt,name=mainBlockHeight,proto3" json:"mainBlockHeight,omitempty"`
	ChainExecHeight        int64    `protobuf:"varint,15,opt,name=chainExecHeight,proto3" json:"chainExecHeight,omitempty"`
	TotalSupervisionNodes  int32    `protobuf:"varint,16,opt,name=totalSupervisionNodes,proto3" json:"totalSupervisionNodes,omitempty"`
	TotalSupervisionCommit int32    `protobuf:"varint,17,opt,name=totalSupervisionCommit,proto3" json:"totalSupervisionCommit,omitempty"`
	MostSupervisionCommit  int32    `protobuf:"varint,18,opt,name=mostSupervisionCommit,proto3" json:"mostSupervisionCommit,omitempty"`
}

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

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

func (*ReceiptParacrossDone) ProtoMessage() {}

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

func (x *ReceiptParacrossDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalCommit() int32 {
	if x != nil {
		return x.TotalCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetMostSameCommit() int32 {
	if x != nil {
		return x.MostSameCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *ReceiptParacrossDone) GetStateHash() []byte {
	if x != nil {
		return x.StateHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTxResult() []byte {
	if x != nil {
		return x.TxResult
	}
	return nil
}

func (x *ReceiptParacrossDone) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetTxHashs() [][]byte {
	if x != nil {
		return x.TxHashs
	}
	return nil
}

func (x *ReceiptParacrossDone) GetCrossTxResult() []byte {
	if x != nil {
		return x.CrossTxResult
	}
	return nil
}

func (x *ReceiptParacrossDone) GetCrossTxHashs() [][]byte {
	if x != nil {
		return x.CrossTxHashs
	}
	return nil
}

func (x *ReceiptParacrossDone) GetMainBlockHash() []byte {
	if x != nil {
		return x.MainBlockHash
	}
	return nil
}

func (x *ReceiptParacrossDone) GetMainBlockHeight() int64 {
	if x != nil {
		return x.MainBlockHeight
	}
	return 0
}

func (x *ReceiptParacrossDone) GetChainExecHeight() int64 {
	if x != nil {
		return x.ChainExecHeight
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalSupervisionNodes() int32 {
	if x != nil {
		return x.TotalSupervisionNodes
	}
	return 0
}

func (x *ReceiptParacrossDone) GetTotalSupervisionCommit() int32 {
	if x != nil {
		return x.TotalSupervisionCommit
	}
	return 0
}

func (x *ReceiptParacrossDone) GetMostSupervisionCommit() int32 {
	if x != nil {
		return x.MostSupervisionCommit
	}
	return 0
}

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

	Addr   string               `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Status *ParacrossNodeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*ReceiptParacrossRecord) ProtoMessage() {}

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

func (x *ReceiptParacrossRecord) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

func (x *ReceiptParacrossRecord) GetStatus() *ParacrossNodeStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

// LocalDB
// title-height-addr : txHash
type ParacrossTx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TxHash string `protobuf:"bytes,1,opt,name=txHash,proto3" json:"txHash,omitempty"`
}

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

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

func (*ParacrossTx) ProtoMessage() {}

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

func (x *ParacrossTx) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

// query
type ReqParacrossTitleHeight struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title  string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Height int64  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
}

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

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

func (*ReqParacrossTitleHeight) ProtoMessage() {}

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

func (x *ReqParacrossTitleHeight) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

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

	TotalNodes     int32  `protobuf:"varint,1,opt,name=totalNodes,proto3" json:"totalNodes,omitempty"`
	TotalCommit    int32  `protobuf:"varint,2,opt,name=totalCommit,proto3" json:"totalCommit,omitempty"`
	MostSameCommit int32  `protobuf:"varint,3,opt,name=mostSameCommit,proto3" json:"mostSameCommit,omitempty"`
	Title          string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Height         int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	StateHash      string `protobuf:"bytes,6,opt,name=stateHash,proto3" json:"stateHash,omitempty"`
	TxCounts       uint32 `protobuf:"varint,7,opt,name=txCounts,proto3" json:"txCounts,omitempty"`
	TxResult       string `protobuf:"bytes,8,opt,name=txResult,proto3" json:"txResult,omitempty"`
	// commitDone chainHeight
	ChainExecHeight int64 `protobuf:"varint,9,opt,name=chainExecHeight,proto3" json:"chainExecHeight,omitempty"`
}

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

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

func (*RespParacrossDone) ProtoMessage() {}

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

func (x *RespParacrossDone) GetTotalNodes() int32 {
	if x != nil {
		return x.TotalNodes
	}
	return 0
}

func (x *RespParacrossDone) GetTotalCommit() int32 {
	if x != nil {
		return x.TotalCommit
	}
	return 0
}

func (x *RespParacrossDone) GetMostSameCommit() int32 {
	if x != nil {
		return x.MostSameCommit
	}
	return 0
}

func (x *RespParacrossDone) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *RespParacrossDone) GetStateHash() string {
	if x != nil {
		return x.StateHash
	}
	return ""
}

func (x *RespParacrossDone) GetTxCounts() uint32 {
	if x != nil {
		return x.TxCounts
	}
	return 0
}

func (x *RespParacrossDone) GetTxResult() string {
	if x != nil {
		return x.TxResult
	}
	return ""
}

func (x *RespParacrossDone) GetChainExecHeight() int64 {
	if x != nil {
		return x.ChainExecHeight
	}
	return 0
}

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

	Titles []*RespParacrossDone `protobuf:"bytes,1,rep,name=titles,proto3" json:"titles,omitempty"`
}

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

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

func (*RespParacrossTitles) ProtoMessage() {}

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

func (x *RespParacrossTitles) GetTitles() []*RespParacrossDone {
	if x != nil {
		return x.Titles
	}
	return nil
}

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

	Title     string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	BlockHash []byte `protobuf:"bytes,2,opt,name=blockHash,proto3" json:"blockHash,omitempty"`
}

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

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

func (*ReqParacrossTitleHash) ProtoMessage() {}

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

func (x *ReqParacrossTitleHash) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *ReqParacrossTitleHash) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// 跨链转账相关
type ParacrossAsset struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// input
	From       string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
	To         string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
	IsWithdraw bool   `protobuf:"varint,3,opt,name=isWithdraw,proto3" json:"isWithdraw,omitempty"`
	TxHash     string `protobuf:"bytes,4,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Amount     int64  `protobuf:"varint,5,opt,name=amount,proto3" json:"amount,omitempty"`
	Exec       string `protobuf:"bytes,6,opt,name=exec,proto3" json:"exec,omitempty"`
	Symbol     string `protobuf:"bytes,7,opt,name=symbol,proto3" json:"symbol,omitempty"`
	//跨链类型　0:to para, 1:to main
	CrossType uint32 `protobuf:"varint,8,opt,name=crossType,proto3" json:"crossType,omitempty"`
	// 主链部分
	Height int64 `protobuf:"varint,10,opt,name=height,proto3" json:"height,omitempty"`
	// 平行链部分
	CommitDoneHeight int64 `protobuf:"varint,21,opt,name=commitDoneHeight,proto3" json:"commitDoneHeight,omitempty"`
	ParaHeight       int64 `protobuf:"varint,22,opt,name=paraHeight,proto3" json:"paraHeight,omitempty"`
	Success          bool  `protobuf:"varint,23,opt,name=success,proto3" json:"success,omitempty"`
}

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

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

func (*ParacrossAsset) ProtoMessage() {}

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

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

func (x *ParacrossAsset) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *ParacrossAsset) GetIsWithdraw() bool {
	if x != nil {
		return x.IsWithdraw
	}
	return false
}

func (x *ParacrossAsset) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

func (x *ParacrossAsset) GetAmount() int64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *ParacrossAsset) GetExec() string {
	if x != nil {
		return x.Exec
	}
	return ""
}

func (x *ParacrossAsset) GetSymbol() string {
	if x != nil {
		return x.Symbol
	}
	return ""
}

func (x *ParacrossAsset) GetCrossType() uint32 {
	if x != nil {
		return x.CrossType
	}
	return 0
}

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

func (x *ParacrossAsset) GetCommitDoneHeight() int64 {
	if x != nil {
		return x.CommitDoneHeight
	}
	return 0
}

func (x *ParacrossAsset) GetParaHeight() int64 {
	if x != nil {
		return x.ParaHeight
	}
	return 0
}

func (x *ParacrossAsset) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

var File_paracross_proto protoreflect.FileDescriptor

var file_paracross_proto_rawDesc = []byte{
	0x0a, 0x0f, 0x70, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x63, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x70, 0x61, 0x72,
	0x61, 0x6d, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x70, 0x61,
	0x72, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x22, 0x4c, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61,
	0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72,
	0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22,
	0x5b, 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1e,
	0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0c, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0c, 0x52, 0x09, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xe9, 0x02, 0x0a,
	0x15, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x07,
	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65,
	0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73,
	0x68, 0x12, 0x46, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x73, 0x75, 0x70,
	0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61,
	0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x73, 0x52, 0x12, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f,
	0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xe0, 0x02, 0x0a, 0x18, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
	0x74, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f,
	0x6d, 0x6d, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70,
	0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x08, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x1a, 0x63,
	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x99, 0x01, 0x0a, 0x0f,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a,
	0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d,
	0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0xa4, 0x01, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x24, 0x0a, 0x0d,
	0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x48, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f,
	0x6e, 0x73, 0x65, 0x6e, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x85,
	0x01, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x32, 0x4d, 0x61, 0x69,
	0x6e, 0x4d, 0x61, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61,
	0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
	0x6d, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61,
	0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61,
	0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x44, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c,
	0x6f, 0x63, 0x6b, 0x32, 0x4d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x05,
	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x32, 0x4d, 0x61,
	0x69, 0x6e, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xe1, 0x03, 0x0a,
	0x13, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6d, 0x61, 0x69,
	0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61,
	0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61,
	0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48,
	0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74,
	0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74, 0x61,
	0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18,
	0x0a, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c, 0x52,
	0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x22,
	0x0a, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x0d,
	0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73,
	0x68, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54,
	0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6e,
	0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73,
	0x22, 0x42, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53,
	0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c,
	0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69,
	0x74, 0x65, 0x6d, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e,
	0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65,
	0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43,
	0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61,
	0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1e,
	0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2f,
	0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f,
	0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x22,
	0x65, 0x0a, 0x16, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67,
	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74,
	0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x36, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x22,
	0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x53, 0x74, 0x61, 0x67, 0x65,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02,
	0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x05,
	0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53,
	0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a,
	0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x49, 0x6e,
	0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x61,
	0x6e, 0x63, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x07, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x63, 0x65, 0x69,
	0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66,
	0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xd1, 0x01,
	0x0a, 0x1c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e,
	0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2d,
	0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e,
	0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a,
	0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a,
	0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d,
	0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6d,
	0x6f, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x52,
	0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x6f, 0x74, 0x65, 0x52, 0x73,
	0x74, 0x22, 0x7f, 0x0a, 0x1b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x66,
	0x43, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x12, 0x2c, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65,
	0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x32,
	0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53,
	0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e,
	0x64, 0x65, 0x78, 0x22, 0x51, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x53, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x73,
	0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65,
	0x6e, 0x73, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x73, 0x74, 0x61,
	0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
	0x73, 0x69, 0x67, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x72, 0x73, 0x4d, 0x61, 0x70,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x64, 0x64, 0x72, 0x73, 0x4d, 0x61, 0x70,
	0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x22, 0x7c, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x03, 0x62, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x03, 0x62, 0x6c, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e,
	0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65,
	0x6e, 0x73, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x53, 0x65,
	0x6c, 0x66, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61,
	0x64, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x69, 0x6e,
	0x73, 0x22, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
	0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0x98, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x16, 0x0a, 0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0x6a, 0x0a, 0x0c, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a,
	0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0d, 0x52, 0x6f, 0x6c, 0x6c,
	0x75, 0x70, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x74,
	0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x49, 0x6e,
	0x64, 0x65, 0x78, 0x52, 0x09, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xce,
	0x01, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78,
	0x4c, 0x6f, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x6f, 0x75,
	0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x54, 0x69,
	0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78,
	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2a, 0x0a,
	0x10, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x61, 0x73,
	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22,
	0xaf, 0x07, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x6d,
	0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4d, 0x69, 0x6e, 0x65,
	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x65, 0x72,
	0x12, 0x3d, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00,
	0x52, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12,
	0x3d, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41,
	0x73, 0x73, 0x65, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x48, 0x00, 0x52,
	0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x33,
	0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73,
	0x73, 0x65, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x48, 0x00, 0x52, 0x08,
	0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x45, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e,
	0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x48, 0x00, 0x52,
	0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x45, 0x78, 0x65, 0x63, 0x12,
	0x3b, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61,
	0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00,
	0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0f,
	0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61,
	0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x67,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x53, 0x74, 0x61, 0x67, 0x65, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61,
	0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x12, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x6f,
	0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48,
	0x00, 0x52, 0x12, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e,
	0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x6e,
	0x65, 0x72, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x42, 0x69, 0x6e,
	0x64, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
	0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61,
	0x72, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x48, 0x00, 0x52, 0x15, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x6f,
	0x6c, 0x6c, 0x75, 0x70, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70,
	0x43, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x75,
	0x70, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x76, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x36, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x4b,
	0x0a, 0x15, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa4, 0x05, 0x0a, 0x14,
	0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73,
	0x44, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e,
	0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61,
	0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
	0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x78,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x78, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28,
	0x0c, 0x52, 0x07, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x12, 0x22, 0x0a, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x73,
	0x18, 0x0c, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x78, 0x48,
	0x61, 0x73, 0x68, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63,
	0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6d, 0x61, 0x69,
	0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61,
	0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65,
	0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x34,
	0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e,
	0x6f, 0x64, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70,
	0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x65, 0x72,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x15,
	0x6d, 0x6f, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43,
	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x6f, 0x73,
	0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d,
	0x69, 0x74, 0x22, 0x60, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72,
	0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f,
	0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x22, 0x25, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73,
	0x73, 0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x47, 0x0a, 0x17, 0x52,
	0x65, 0x71, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65,
	0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 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, 0xab, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e,
	0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x43, 0x6f,
	0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x08, 0x74, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08,
	0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x74, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x45, 0x78, 0x65, 0x63, 0x48, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x22, 0x47, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72,
	0x6f, 0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x44,
	0x6f, 0x6e, 0x65, 0x52, 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x52,
	0x65, 0x71, 0x50, 0x61, 0x72, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xcc, 0x02, 0x0a, 0x0e, 0x50, 0x61, 0x72,
	0x61, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66,
	0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12,
	0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12,
	0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12,
	0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65,
	0x78, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09,
	0x63, 0x72, 0x6f, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x6f, 0x6e, 0x65, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x44, 0x6f, 0x6e, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a,
	0x0a, 0x70, 0x61, 0x72, 0x61, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a,
	0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0x39, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x63,
	0x72, 0x6f, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x0d,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x4e, 0x69, 0x6c, 0x1a, 0x11, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x73, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x55, 0x70,
	0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_paracross_proto_rawDescOnce sync.Once
	file_paracross_proto_rawDescData = file_paracross_proto_rawDesc
)

func file_paracross_proto_rawDescGZIP() []byte {
	file_paracross_proto_rawDescOnce.Do(func() {
		file_paracross_proto_rawDescData = protoimpl.X.CompressGZIP(file_paracross_proto_rawDescData)
	})
	return file_paracross_proto_rawDescData
}

var file_paracross_proto_msgTypes = make([]protoimpl.MessageInfo, 40)
var file_paracross_proto_goTypes = []interface{}{
	(*ParacrossStatusDetails)(nil),       // 0: types.ParacrossStatusDetails
	(*ParacrossStatusBlockDetails)(nil),  // 1: types.ParacrossStatusBlockDetails
	(*ParacrossHeightStatus)(nil),        // 2: types.ParacrossHeightStatus
	(*ParacrossHeightStatusRsp)(nil),     // 3: types.ParacrossHeightStatusRsp
	(*ParacrossStatus)(nil),              // 4: types.ParacrossStatus
	(*ParacrossConsensusStatus)(nil),     // 5: types.ParacrossConsensusStatus
	(*ParaBlock2MainMap)(nil),            // 6: types.ParaBlock2MainMap
	(*ParaBlock2MainInfo)(nil),           // 7: types.ParaBlock2MainInfo
	(*ParacrossNodeStatus)(nil),          // 8: types.ParacrossNodeStatus
	(*SelfConsensStages)(nil),            // 9: types.SelfConsensStages
	(*SelfConsensStage)(nil),             // 10: types.SelfConsensStage
	(*SelfConsensStageInfo)(nil),         // 11: types.SelfConsensStageInfo
	(*LocalSelfConsStageInfo)(nil),       // 12: types.LocalSelfConsStageInfo
	(*ConfigVoteInfo)(nil),               // 13: types.ConfigVoteInfo
	(*ConfigCancelInfo)(nil),             // 14: types.ConfigCancelInfo
	(*ParaStageConfig)(nil),              // 15: types.ParaStageConfig
	(*ReceiptSelfConsStageConfig)(nil),   // 16: types.ReceiptSelfConsStageConfig
	(*ReceiptSelfConsStageVoteDone)(nil), // 17: types.ReceiptSelfConsStageVoteDone
	(*ReceiptSelfConsStagesUpdate)(nil),  // 18: types.ReceiptSelfConsStagesUpdate
	(*ReqQuerySelfStages)(nil),           // 19: types.ReqQuerySelfStages
	(*ReplyQuerySelfStages)(nil),         // 20: types.ReplyQuerySelfStages
	(*ParacrossCommitBlsInfo)(nil),       // 21: types.ParacrossCommitBlsInfo
	(*ParacrossCommitAction)(nil),        // 22: types.ParacrossCommitAction
	(*ParacrossMinerAction)(nil),         // 23: types.ParacrossMinerAction
	(*ParaMinerReward)(nil),              // 24: types.ParaMinerReward
	(*CrossAssetTransfer)(nil),           // 25: types.CrossAssetTransfer
	(*CrossTxIndex)(nil),                 // 26: types.crossTxIndex
	(*RollupCrossTx)(nil),                // 27: types.RollupCrossTx
	(*RollupCrossTxLog)(nil),             // 28: types.RollupCrossTxLog
	(*ParacrossAction)(nil),              // 29: types.ParacrossAction
	(*ReceiptParacrossCommit)(nil),       // 30: types.ReceiptParacrossCommit
	(*ReceiptParacrossMiner)(nil),        // 31: types.ReceiptParacrossMiner
	(*ReceiptParacrossDone)(nil),         // 32: types.ReceiptParacrossDone
	(*ReceiptParacrossRecord)(nil),       // 33: types.ReceiptParacrossRecord
	(*ParacrossTx)(nil),                  // 34: types.ParacrossTx
	(*ReqParacrossTitleHeight)(nil),      // 35: types.ReqParacrossTitleHeight
	(*RespParacrossDone)(nil),            // 36: types.RespParacrossDone
	(*RespParacrossTitles)(nil),          // 37: types.RespParacrossTitles
	(*ReqParacrossTitleHash)(nil),        // 38: types.ReqParacrossTitleHash
	(*ParacrossAsset)(nil),               // 39: types.ParacrossAsset
	(*ParaNodeVoteDetail)(nil),           // 40: types.ParaNodeVoteDetail
	(*types.AssetsTransfer)(nil),         // 41: types.AssetsTransfer
	(*types.AssetsWithdraw)(nil),         // 42: types.AssetsWithdraw
	(*types.AssetsTransferToExec)(nil),   // 43: types.AssetsTransferToExec
	(*ParaNodeAddrConfig)(nil),           // 44: types.ParaNodeAddrConfig
	(*ParaNodeGroupConfig)(nil),          // 45: types.ParaNodeGroupConfig
	(*ParaBindMinerCmd)(nil),             // 46: types.ParaBindMinerCmd
	(*types.ReqNil)(nil),                 // 47: types.ReqNil
	(*types.IsCaughtUp)(nil),             // 48: types.IsCaughtUp
}
var file_paracross_proto_depIdxs = []int32{
	0,  // 0: types.ParacrossHeightStatus.details:type_name -> types.ParacrossStatusDetails
	1,  // 1: types.ParacrossHeightStatus.blockDetails:type_name -> types.ParacrossStatusBlockDetails
	0,  // 2: types.ParacrossHeightStatus.supervisionDetails:type_name -> types.ParacrossStatusDetails
	6,  // 3: types.ParaBlock2MainInfo.items:type_name -> types.ParaBlock2MainMap
	10, // 4: types.SelfConsensStages.items:type_name -> types.SelfConsensStage
	10, // 5: types.SelfConsensStageInfo.stage:type_name -> types.SelfConsensStage
	40, // 6: types.SelfConsensStageInfo.votes:type_name -> types.ParaNodeVoteDetail
	11, // 7: types.LocalSelfConsStageInfo.stage:type_name -> types.SelfConsensStageInfo
	10, // 8: types.ParaStageConfig.stage:type_name -> types.SelfConsensStage
	13, // 9: types.ParaStageConfig.vote:type_name -> types.ConfigVoteInfo
	14, // 10: types.ParaStageConfig.cancel:type_name -> types.ConfigCancelInfo
	11, // 11: types.ReceiptSelfConsStageConfig.prev:type_name -> types.SelfConsensStageInfo
	11, // 12: types.ReceiptSelfConsStageConfig.current:type_name -> types.SelfConsensStageInfo
	10, // 13: types.ReceiptSelfConsStageVoteDone.stage:type_name -> types.SelfConsensStage
	9,  // 14: types.ReceiptSelfConsStagesUpdate.prev:type_name -> types.SelfConsensStages
	9,  // 15: types.ReceiptSelfConsStagesUpdate.current:type_name -> types.SelfConsensStages
	11, // 16: types.ReplyQuerySelfStages.stageInfo:type_name -> types.SelfConsensStageInfo
	8,  // 17: types.ParacrossCommitAction.status:type_name -> types.ParacrossNodeStatus
	21, // 18: types.ParacrossCommitAction.bls:type_name -> types.ParacrossCommitBlsInfo
	8,  // 19: types.ParacrossMinerAction.status:type_name -> types.ParacrossNodeStatus
	26, // 20: types.RollupCrossTx.txIndices:type_name -> types.crossTxIndex
	22, // 21: types.ParacrossAction.commit:type_name -> types.ParacrossCommitAction
	23, // 22: types.ParacrossAction.miner:type_name -> types.ParacrossMinerAction
	41, // 23: types.ParacrossAction.assetTransfer:type_name -> types.AssetsTransfer
	42, // 24: types.ParacrossAction.assetWithdraw:type_name -> types.AssetsWithdraw
	41, // 25: types.ParacrossAction.transfer:type_name -> types.AssetsTransfer
	42, // 26: types.ParacrossAction.withdraw:type_name -> types.AssetsWithdraw
	43, // 27: types.ParacrossAction.transferToExec:type_name -> types.AssetsTransferToExec
	44, // 28: types.ParacrossAction.nodeConfig:type_name -> types.ParaNodeAddrConfig
	45, // 29: types.ParacrossAction.nodeGroupConfig:type_name -> types.ParaNodeGroupConfig
	15, // 30: types.ParacrossAction.selfStageConfig:type_name -> types.ParaStageConfig
	25, // 31: types.ParacrossAction.crossAssetTransfer:type_name -> types.CrossAssetTransfer
	46, // 32: types.ParacrossAction.paraBindMiner:type_name -> types.ParaBindMinerCmd
	45, // 33: types.ParacrossAction.supervisionNodeConfig:type_name -> types.ParaNodeGroupConfig
	27, // 34: types.ParacrossAction.rollupCrossTx:type_name -> types.RollupCrossTx
	8,  // 35: types.ReceiptParacrossCommit.status:type_name -> types.ParacrossNodeStatus
	2,  // 36: types.ReceiptParacrossCommit.prev:type_name -> types.ParacrossHeightStatus
	2,  // 37: types.ReceiptParacrossCommit.current:type_name -> types.ParacrossHeightStatus
	8,  // 38: types.ReceiptParacrossMiner.status:type_name -> types.ParacrossNodeStatus
	8,  // 39: types.ReceiptParacrossRecord.status:type_name -> types.ParacrossNodeStatus
	36, // 40: types.RespParacrossTitles.titles:type_name -> types.RespParacrossDone
	47, // 41: types.paracross.IsSync:input_type -> types.ReqNil
	48, // 42: types.paracross.IsSync:output_type -> types.IsCaughtUp
	42, // [42:43] is the sub-list for method output_type
	41, // [41:42] is the sub-list for method input_type
	41, // [41:41] is the sub-list for extension type_name
	41, // [41:41] is the sub-list for extension extendee
	0,  // [0:41] is the sub-list for field type_name
}

func init() { file_paracross_proto_init() }
func file_paracross_proto_init() {
	if File_paracross_proto != nil {
		return
	}
	file_paraminer_proto_init()
	file_paranodegroup_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_paracross_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatusDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatusBlockDetails); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossHeightStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossHeightStatusRsp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossConsensusStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlock2MainMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaBlock2MainInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossNodeStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelfConsensStageInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalSelfConsStageInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ConfigVoteInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ConfigCancelInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaStageConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStageConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStageVoteDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSelfConsStagesUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqQuerySelfStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyQuerySelfStages); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossCommitBlsInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossCommitAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossMinerAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParaMinerReward); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CrossAssetTransfer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CrossTxIndex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RollupCrossTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RollupCrossTxLog); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossCommit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossMiner); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptParacrossRecord); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqParacrossTitleHeight); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossDone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespParacrossTitles); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqParacrossTitleHash); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_paracross_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParacrossAsset); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_paracross_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*ParaStageConfig_Stage)(nil),
		(*ParaStageConfig_Vote)(nil),
		(*ParaStageConfig_Cancel)(nil),
	}
	file_paracross_proto_msgTypes[29].OneofWrappers = []interface{}{
		(*ParacrossAction_Commit)(nil),
		(*ParacrossAction_Miner)(nil),
		(*ParacrossAction_AssetTransfer)(nil),
		(*ParacrossAction_AssetWithdraw)(nil),
		(*ParacrossAction_Transfer)(nil),
		(*ParacrossAction_Withdraw)(nil),
		(*ParacrossAction_TransferToExec)(nil),
		(*ParacrossAction_NodeConfig)(nil),
		(*ParacrossAction_NodeGroupConfig)(nil),
		(*ParacrossAction_SelfStageConfig)(nil),
		(*ParacrossAction_CrossAssetTransfer)(nil),
		(*ParacrossAction_ParaBindMiner)(nil),
		(*ParacrossAction_SupervisionNodeConfig)(nil),
		(*ParacrossAction_RollupCrossTx)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_paracross_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   40,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_paracross_proto_goTypes,
		DependencyIndexes: file_paracross_proto_depIdxs,
		MessageInfos:      file_paracross_proto_msgTypes,
	}.Build()
	File_paracross_proto = out.File
	file_paracross_proto_rawDesc = nil
	file_paracross_proto_goTypes = nil
	file_paracross_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// ParacrossClient is the client API for Paracross service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ParacrossClient interface {
	IsSync(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.IsCaughtUp, error)
}

type paracrossClient struct {
	cc grpc.ClientConnInterface
}

func NewParacrossClient(cc grpc.ClientConnInterface) ParacrossClient {
	return &paracrossClient{cc}
}

func (c *paracrossClient) IsSync(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.IsCaughtUp, error) {
	out := new(types.IsCaughtUp)
	err := c.cc.Invoke(ctx, "/types.paracross/IsSync", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ParacrossServer is the server API for Paracross service.
type ParacrossServer interface {
	IsSync(context.Context, *types.ReqNil) (*types.IsCaughtUp, error)
}

// UnimplementedParacrossServer can be embedded to have forward compatible implementations.
type UnimplementedParacrossServer struct {
}

func (*UnimplementedParacrossServer) IsSync(context.Context, *types.ReqNil) (*types.IsCaughtUp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method IsSync not implemented")
}

func RegisterParacrossServer(s *grpc.Server, srv ParacrossServer) {
	s.RegisterService(&_Paracross_serviceDesc, srv)
}

func _Paracross_IsSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqNil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ParacrossServer).IsSync(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.paracross/IsSync",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ParacrossServer).IsSync(ctx, req.(*types.ReqNil))
	}
	return interceptor(ctx, in, info, handler)
}

var _Paracross_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.paracross",
	HandlerType: (*ParacrossServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "IsSync",
			Handler:    _Paracross_IsSync_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "paracross.proto",
}
