Commit a02f9889 authored by jiangpeng's avatar jiangpeng Committed by vipwzw

fix parachain mining

parent 03552689
......@@ -703,7 +703,10 @@ func (client *client) addMinerTx(preStateHash []byte, block *types.Block, main *
MainBlockHash: main.Seq.Hash,
MainBlockHeight: main.Detail.Block.Height,
}
tx, err := paracross.CreateRawMinerTx(status)
tx, err := paracross.CreateRawMinerTx(&pt.ParacrossMinerAction{
Status:status,
IsSelfConsensus:isParaSelfConsensusForked(status.MainBlockHeight),
})
if err != nil {
return err
}
......
......@@ -359,6 +359,10 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
saveTitleHeight(a.db, calcTitleHeightKey(commit.Status.Title, commit.Status.Height), stat)
return receipt, nil
}
//add commit done receipt
receiptDone := makeDoneReceipt(a.fromaddr, commit, stat, int32(most), int32(commitCount), int32(len(nodes)))
receipt.KV = append(receipt.KV, receiptDone.KV...)
receipt.Logs = append(receipt.Logs, receiptDone.Logs...)
//平行连进行奖励分配,考虑可能的失败,需要在保存共识高度等数据之前处理
if types.IsPara() {
......@@ -376,9 +380,6 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
clog.Info("paracross.Commit commit ----pass", "most", most, "mostHash", hex.EncodeToString([]byte(mostHash)))
stat.Status = pt.ParacrossStatusCommitDone
receiptDone := makeDoneReceipt(a.fromaddr, commit, stat, int32(most), int32(commitCount), int32(len(nodes)))
receipt.KV = append(receipt.KV, receiptDone.KV...)
receipt.Logs = append(receipt.Logs, receiptDone.Logs...)
saveTitleHeight(a.db, calcTitleHeightKey(commit.Status.Title, commit.Status.Height), stat)
titleStatus.Title = commit.Status.Title
......@@ -526,18 +527,35 @@ func (a *action) Miner(miner *pt.ParacrossMinerAction) (*types.Receipt, error) {
logs = append(logs, log)
minerReceipt := &types.Receipt{Ty: types.ExecOk, KV: nil, Logs: logs}
//自共识后才挖矿
if miner.IsSelfConsensus {
//增发coins到paracross合约中,只处理发放,不做分配
reward := (types.MGInt("mver.consensus.coinReward", a.height) +
types.MGInt("mver.consensus.coinDevFund", a.height)) * types.Coin
issueReceipt, err := a.coinsAccount.ExecIssueCoins(a.execaddr, reward)
totalReward := int64(0)
coinReward := types.MGInt("mver.consensus.coinReward", a.height)
fundReward := types.MGInt("mver.consensus.coinDevFund", a.height)
if coinReward > 0 {
totalReward += coinReward
}
if fundReward > 0 {
totalReward += fundReward
}
totalReward *= types.Coin
if totalReward > 0 {
issueReceipt, err := a.coinsAccount.ExecIssueCoins(a.execaddr, totalReward)
if err != nil {
clog.Error("paracross miner issue err", "height", miner.Status.Height,
"execAddr", a.execaddr, "amount", reward/types.Coin)
"execAddr", a.execaddr, "amount", totalReward/types.Coin)
return nil, err
}
minerReceipt = mergeReceipt(minerReceipt, issueReceipt)
}
}
return mergeReceipt(minerReceipt, issueReceipt), nil
return minerReceipt, nil
}
func getTitleFrom(exec []byte) ([]byte, error) {
......
......@@ -449,7 +449,7 @@ func (s *VoteTestSuite) TestVoteTx() {
}
func (s *VoteTestSuite) createVoteTx(status *pt.ParacrossNodeStatus, privFrom string) (*types.Transaction, error) {
tx, err := pt.CreateRawMinerTx(status)
tx, err := pt.CreateRawMinerTx(&pt.ParacrossMinerAction{Status: status})
assert.Nil(s.T(), err, "create asset transfer failed")
if err != nil {
return nil, err
......
......@@ -16,12 +16,13 @@ func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHe
fundAddr := types.MGStr("mver.consensus.fundKeyAddr", nodeStatus.Height)
minerAddrs := getMiners(stat.Details, nodeStatus.BlockHash)
//分配给矿工的单位奖励,如果不等分转到发展基金
//分配给矿工的单位奖励
minerUnit := coinReward / int64(len(minerAddrs))
fundReward += coinReward % minerUnit
receipt := &types.Receipt{Ty: types.ExecOk}
if minerUnit > 0 {
//如果不等分转到发展基金
fundReward += coinReward % minerUnit
for _, addr := range minerAddrs {
rep, err := a.coinsAccount.ExecDeposit(addr, a.execaddr, minerUnit)
......@@ -32,15 +33,19 @@ func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHe
}
receipt = mergeReceipt(receipt, rep)
}
}
if fundReward > 0 {
rep, err := a.coinsAccount.ExecDeposit(fundAddr, a.execaddr, fundReward)
if err != nil {
clog.Error("paracross fund reward deposit err", "height", nodeStatus.Height,
"execAddr", a.execaddr, "fundAddr", fundAddr, "amount", fundReward, "err", err)
return nil, err
}
receipt = mergeReceipt(receipt, rep)
}
return mergeReceipt(receipt, rep), nil
return receipt, nil
}
// getMiners 获取提交共识消息的矿工地址
......
......@@ -124,6 +124,7 @@ message ParacrossCommitAction {
message ParacrossMinerAction {
ParacrossNodeStatus status = 1;
bool isSelfConsensus = 2;
}
message ParacrossAction {
......
......@@ -209,13 +209,11 @@ func CreateRawAssetTransferTx(param *types.CreateTx) (*types.Transaction, error)
}
// CreateRawMinerTx create miner tx
func CreateRawMinerTx(status *ParacrossNodeStatus) (*types.Transaction, error) {
v := &ParacrossMinerAction{
Status: status,
}
func CreateRawMinerTx(value *ParacrossMinerAction) (*types.Transaction, error) {
action := &ParacrossAction{
Ty: ParacrossActionMiner,
Value: &ParacrossAction_Miner{v},
Value: &ParacrossAction_Miner{value},
}
tx := &types.Transaction{
Execer: []byte(types.ExecName(ParaX)),
......
......@@ -3,13 +3,13 @@
package types
import (
context "context"
fmt "fmt"
math "math"
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import types "github.com/33cn/chain33/types"
types "github.com/33cn/chain33/types"
proto "github.com/golang/protobuf/proto"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
......@@ -37,17 +37,16 @@ func (m *ParacrossStatusDetails) Reset() { *m = ParacrossStatusDetails{}
func (m *ParacrossStatusDetails) String() string { return proto.CompactTextString(m) }
func (*ParacrossStatusDetails) ProtoMessage() {}
func (*ParacrossStatusDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{0}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{0}
}
func (m *ParacrossStatusDetails) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossStatusDetails.Unmarshal(m, b)
}
func (m *ParacrossStatusDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossStatusDetails.Marshal(b, m, deterministic)
}
func (m *ParacrossStatusDetails) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossStatusDetails.Merge(m, src)
func (dst *ParacrossStatusDetails) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossStatusDetails.Merge(dst, src)
}
func (m *ParacrossStatusDetails) XXX_Size() int {
return xxx_messageInfo_ParacrossStatusDetails.Size(m)
......@@ -87,17 +86,16 @@ func (m *ParacrossHeightStatus) Reset() { *m = ParacrossHeightStatus{} }
func (m *ParacrossHeightStatus) String() string { return proto.CompactTextString(m) }
func (*ParacrossHeightStatus) ProtoMessage() {}
func (*ParacrossHeightStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{1}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{1}
}
func (m *ParacrossHeightStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossHeightStatus.Unmarshal(m, b)
}
func (m *ParacrossHeightStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossHeightStatus.Marshal(b, m, deterministic)
}
func (m *ParacrossHeightStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossHeightStatus.Merge(m, src)
func (dst *ParacrossHeightStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossHeightStatus.Merge(dst, src)
}
func (m *ParacrossHeightStatus) XXX_Size() int {
return xxx_messageInfo_ParacrossHeightStatus.Size(m)
......@@ -149,17 +147,16 @@ func (m *ParacrossStatus) Reset() { *m = ParacrossStatus{} }
func (m *ParacrossStatus) String() string { return proto.CompactTextString(m) }
func (*ParacrossStatus) ProtoMessage() {}
func (*ParacrossStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{2}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{2}
}
func (m *ParacrossStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossStatus.Unmarshal(m, b)
}
func (m *ParacrossStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossStatus.Marshal(b, m, deterministic)
}
func (m *ParacrossStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossStatus.Merge(m, src)
func (dst *ParacrossStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossStatus.Merge(dst, src)
}
func (m *ParacrossStatus) XXX_Size() int {
return xxx_messageInfo_ParacrossStatus.Size(m)
......@@ -205,17 +202,16 @@ func (m *ParacrossConsensusStatus) Reset() { *m = ParacrossConsensusStat
func (m *ParacrossConsensusStatus) String() string { return proto.CompactTextString(m) }
func (*ParacrossConsensusStatus) ProtoMessage() {}
func (*ParacrossConsensusStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{3}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{3}
}
func (m *ParacrossConsensusStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossConsensusStatus.Unmarshal(m, b)
}
func (m *ParacrossConsensusStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossConsensusStatus.Marshal(b, m, deterministic)
}
func (m *ParacrossConsensusStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossConsensusStatus.Merge(m, src)
func (dst *ParacrossConsensusStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossConsensusStatus.Merge(dst, src)
}
func (m *ParacrossConsensusStatus) XXX_Size() int {
return xxx_messageInfo_ParacrossConsensusStatus.Size(m)
......@@ -268,17 +264,16 @@ func (m *ParaNodeAddrConfig) Reset() { *m = ParaNodeAddrConfig{} }
func (m *ParaNodeAddrConfig) String() string { return proto.CompactTextString(m) }
func (*ParaNodeAddrConfig) ProtoMessage() {}
func (*ParaNodeAddrConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{4}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{4}
}
func (m *ParaNodeAddrConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaNodeAddrConfig.Unmarshal(m, b)
}
func (m *ParaNodeAddrConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaNodeAddrConfig.Marshal(b, m, deterministic)
}
func (m *ParaNodeAddrConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeAddrConfig.Merge(m, src)
func (dst *ParaNodeAddrConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeAddrConfig.Merge(dst, src)
}
func (m *ParaNodeAddrConfig) XXX_Size() int {
return xxx_messageInfo_ParaNodeAddrConfig.Size(m)
......@@ -329,17 +324,16 @@ func (m *ParaNodeVoteDetail) Reset() { *m = ParaNodeVoteDetail{} }
func (m *ParaNodeVoteDetail) String() string { return proto.CompactTextString(m) }
func (*ParaNodeVoteDetail) ProtoMessage() {}
func (*ParaNodeVoteDetail) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{5}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{5}
}
func (m *ParaNodeVoteDetail) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaNodeVoteDetail.Unmarshal(m, b)
}
func (m *ParaNodeVoteDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaNodeVoteDetail.Marshal(b, m, deterministic)
}
func (m *ParaNodeVoteDetail) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeVoteDetail.Merge(m, src)
func (dst *ParaNodeVoteDetail) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeVoteDetail.Merge(dst, src)
}
func (m *ParaNodeVoteDetail) XXX_Size() int {
return xxx_messageInfo_ParaNodeVoteDetail.Size(m)
......@@ -378,17 +372,16 @@ func (m *ParaNodeAddrStatus) Reset() { *m = ParaNodeAddrStatus{} }
func (m *ParaNodeAddrStatus) String() string { return proto.CompactTextString(m) }
func (*ParaNodeAddrStatus) ProtoMessage() {}
func (*ParaNodeAddrStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{6}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{6}
}
func (m *ParaNodeAddrStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaNodeAddrStatus.Unmarshal(m, b)
}
func (m *ParaNodeAddrStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaNodeAddrStatus.Marshal(b, m, deterministic)
}
func (m *ParaNodeAddrStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeAddrStatus.Merge(m, src)
func (dst *ParaNodeAddrStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeAddrStatus.Merge(dst, src)
}
func (m *ParaNodeAddrStatus) XXX_Size() int {
return xxx_messageInfo_ParaNodeAddrStatus.Size(m)
......@@ -441,17 +434,16 @@ func (m *ReceiptParaNodeConfig) Reset() { *m = ReceiptParaNodeConfig{} }
func (m *ReceiptParaNodeConfig) String() string { return proto.CompactTextString(m) }
func (*ReceiptParaNodeConfig) ProtoMessage() {}
func (*ReceiptParaNodeConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{7}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{7}
}
func (m *ReceiptParaNodeConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParaNodeConfig.Unmarshal(m, b)
}
func (m *ReceiptParaNodeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParaNodeConfig.Marshal(b, m, deterministic)
}
func (m *ReceiptParaNodeConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeConfig.Merge(m, src)
func (dst *ReceiptParaNodeConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeConfig.Merge(dst, src)
}
func (m *ReceiptParaNodeConfig) XXX_Size() int {
return xxx_messageInfo_ReceiptParaNodeConfig.Size(m)
......@@ -503,17 +495,16 @@ func (m *ReceiptParaNodeVoteRecord) Reset() { *m = ReceiptParaNodeVoteRe
func (m *ReceiptParaNodeVoteRecord) String() string { return proto.CompactTextString(m) }
func (*ReceiptParaNodeVoteRecord) ProtoMessage() {}
func (*ReceiptParaNodeVoteRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{8}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{8}
}
func (m *ReceiptParaNodeVoteRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParaNodeVoteRecord.Unmarshal(m, b)
}
func (m *ReceiptParaNodeVoteRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParaNodeVoteRecord.Marshal(b, m, deterministic)
}
func (m *ReceiptParaNodeVoteRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeVoteRecord.Merge(m, src)
func (dst *ReceiptParaNodeVoteRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeVoteRecord.Merge(dst, src)
}
func (m *ReceiptParaNodeVoteRecord) XXX_Size() int {
return xxx_messageInfo_ReceiptParaNodeVoteRecord.Size(m)
......@@ -562,17 +553,16 @@ func (m *ReceiptParaNodeVoteDone) Reset() { *m = ReceiptParaNodeVoteDone
func (m *ReceiptParaNodeVoteDone) String() string { return proto.CompactTextString(m) }
func (*ReceiptParaNodeVoteDone) ProtoMessage() {}
func (*ReceiptParaNodeVoteDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{9}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{9}
}
func (m *ReceiptParaNodeVoteDone) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParaNodeVoteDone.Unmarshal(m, b)
}
func (m *ReceiptParaNodeVoteDone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParaNodeVoteDone.Marshal(b, m, deterministic)
}
func (m *ReceiptParaNodeVoteDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeVoteDone.Merge(m, src)
func (dst *ReceiptParaNodeVoteDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParaNodeVoteDone.Merge(dst, src)
}
func (m *ReceiptParaNodeVoteDone) XXX_Size() int {
return xxx_messageInfo_ReceiptParaNodeVoteDone.Size(m)
......@@ -646,17 +636,16 @@ func (m *ReqParacrossNodeInfo) Reset() { *m = ReqParacrossNodeInfo{} }
func (m *ReqParacrossNodeInfo) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossNodeInfo) ProtoMessage() {}
func (*ReqParacrossNodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{10}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{10}
}
func (m *ReqParacrossNodeInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqParacrossNodeInfo.Unmarshal(m, b)
}
func (m *ReqParacrossNodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqParacrossNodeInfo.Marshal(b, m, deterministic)
}
func (m *ReqParacrossNodeInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossNodeInfo.Merge(m, src)
func (dst *ReqParacrossNodeInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossNodeInfo.Merge(dst, src)
}
func (m *ReqParacrossNodeInfo) XXX_Size() int {
return xxx_messageInfo_ReqParacrossNodeInfo.Size(m)
......@@ -699,17 +688,16 @@ func (m *RespParacrossNodeAddrs) Reset() { *m = RespParacrossNodeAddrs{}
func (m *RespParacrossNodeAddrs) String() string { return proto.CompactTextString(m) }
func (*RespParacrossNodeAddrs) ProtoMessage() {}
func (*RespParacrossNodeAddrs) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{11}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{11}
}
func (m *RespParacrossNodeAddrs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespParacrossNodeAddrs.Unmarshal(m, b)
}
func (m *RespParacrossNodeAddrs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RespParacrossNodeAddrs.Marshal(b, m, deterministic)
}
func (m *RespParacrossNodeAddrs) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossNodeAddrs.Merge(m, src)
func (dst *RespParacrossNodeAddrs) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossNodeAddrs.Merge(dst, src)
}
func (m *RespParacrossNodeAddrs) XXX_Size() int {
return xxx_messageInfo_RespParacrossNodeAddrs.Size(m)
......@@ -741,17 +729,16 @@ func (m *ParaBlock2MainMap) Reset() { *m = ParaBlock2MainMap{} }
func (m *ParaBlock2MainMap) String() string { return proto.CompactTextString(m) }
func (*ParaBlock2MainMap) ProtoMessage() {}
func (*ParaBlock2MainMap) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{12}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{12}
}
func (m *ParaBlock2MainMap) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaBlock2MainMap.Unmarshal(m, b)
}
func (m *ParaBlock2MainMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaBlock2MainMap.Marshal(b, m, deterministic)
}
func (m *ParaBlock2MainMap) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaBlock2MainMap.Merge(m, src)
func (dst *ParaBlock2MainMap) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaBlock2MainMap.Merge(dst, src)
}
func (m *ParaBlock2MainMap) XXX_Size() int {
return xxx_messageInfo_ParaBlock2MainMap.Size(m)
......@@ -801,17 +788,16 @@ func (m *ParaBlock2MainInfo) Reset() { *m = ParaBlock2MainInfo{} }
func (m *ParaBlock2MainInfo) String() string { return proto.CompactTextString(m) }
func (*ParaBlock2MainInfo) ProtoMessage() {}
func (*ParaBlock2MainInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{13}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{13}
}
func (m *ParaBlock2MainInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaBlock2MainInfo.Unmarshal(m, b)
}
func (m *ParaBlock2MainInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaBlock2MainInfo.Marshal(b, m, deterministic)
}
func (m *ParaBlock2MainInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaBlock2MainInfo.Merge(m, src)
func (dst *ParaBlock2MainInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaBlock2MainInfo.Merge(dst, src)
}
func (m *ParaBlock2MainInfo) XXX_Size() int {
return xxx_messageInfo_ParaBlock2MainInfo.Size(m)
......@@ -853,17 +839,16 @@ func (m *ParacrossNodeStatus) Reset() { *m = ParacrossNodeStatus{} }
func (m *ParacrossNodeStatus) String() string { return proto.CompactTextString(m) }
func (*ParacrossNodeStatus) ProtoMessage() {}
func (*ParacrossNodeStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{14}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{14}
}
func (m *ParacrossNodeStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossNodeStatus.Unmarshal(m, b)
}
func (m *ParacrossNodeStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossNodeStatus.Marshal(b, m, deterministic)
}
func (m *ParacrossNodeStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossNodeStatus.Merge(m, src)
func (dst *ParacrossNodeStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossNodeStatus.Merge(dst, src)
}
func (m *ParacrossNodeStatus) XXX_Size() int {
return xxx_messageInfo_ParacrossNodeStatus.Size(m)
......@@ -976,17 +961,16 @@ func (m *ParacrossCommitAction) Reset() { *m = ParacrossCommitAction{} }
func (m *ParacrossCommitAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossCommitAction) ProtoMessage() {}
func (*ParacrossCommitAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{15}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{15}
}
func (m *ParacrossCommitAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossCommitAction.Unmarshal(m, b)
}
func (m *ParacrossCommitAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossCommitAction.Marshal(b, m, deterministic)
}
func (m *ParacrossCommitAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossCommitAction.Merge(m, src)
func (dst *ParacrossCommitAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossCommitAction.Merge(dst, src)
}
func (m *ParacrossCommitAction) XXX_Size() int {
return xxx_messageInfo_ParacrossCommitAction.Size(m)
......@@ -1006,6 +990,7 @@ func (m *ParacrossCommitAction) GetStatus() *ParacrossNodeStatus {
type ParacrossMinerAction struct {
Status *ParacrossNodeStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
IsSelfConsensus bool `protobuf:"varint,2,opt,name=isSelfConsensus,proto3" json:"isSelfConsensus,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -1015,17 +1000,16 @@ func (m *ParacrossMinerAction) Reset() { *m = ParacrossMinerAction{} }
func (m *ParacrossMinerAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossMinerAction) ProtoMessage() {}
func (*ParacrossMinerAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{16}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{16}
}
func (m *ParacrossMinerAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossMinerAction.Unmarshal(m, b)
}
func (m *ParacrossMinerAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossMinerAction.Marshal(b, m, deterministic)
}
func (m *ParacrossMinerAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossMinerAction.Merge(m, src)
func (dst *ParacrossMinerAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossMinerAction.Merge(dst, src)
}
func (m *ParacrossMinerAction) XXX_Size() int {
return xxx_messageInfo_ParacrossMinerAction.Size(m)
......@@ -1043,6 +1027,13 @@ func (m *ParacrossMinerAction) GetStatus() *ParacrossNodeStatus {
return nil
}
func (m *ParacrossMinerAction) GetIsSelfConsensus() bool {
if m != nil {
return m.IsSelfConsensus
}
return false
}
type ParacrossAction struct {
// Types that are valid to be assigned to Value:
// *ParacrossAction_Commit
......@@ -1064,17 +1055,16 @@ func (m *ParacrossAction) Reset() { *m = ParacrossAction{} }
func (m *ParacrossAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossAction) ProtoMessage() {}
func (*ParacrossAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{17}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{17}
}
func (m *ParacrossAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossAction.Unmarshal(m, b)
}
func (m *ParacrossAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossAction.Marshal(b, m, deterministic)
}
func (m *ParacrossAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossAction.Merge(m, src)
func (dst *ParacrossAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossAction.Merge(dst, src)
}
func (m *ParacrossAction) XXX_Size() int {
return xxx_messageInfo_ParacrossAction.Size(m)
......@@ -1410,17 +1400,16 @@ func (m *ReceiptParacrossCommit) Reset() { *m = ReceiptParacrossCommit{}
func (m *ReceiptParacrossCommit) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossCommit) ProtoMessage() {}
func (*ReceiptParacrossCommit) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{18}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{18}
}
func (m *ReceiptParacrossCommit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParacrossCommit.Unmarshal(m, b)
}
func (m *ReceiptParacrossCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParacrossCommit.Marshal(b, m, deterministic)
}
func (m *ReceiptParacrossCommit) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossCommit.Merge(m, src)
func (dst *ReceiptParacrossCommit) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossCommit.Merge(dst, src)
}
func (m *ReceiptParacrossCommit) XXX_Size() int {
return xxx_messageInfo_ReceiptParacrossCommit.Size(m)
......@@ -1470,17 +1459,16 @@ func (m *ReceiptParacrossMiner) Reset() { *m = ReceiptParacrossMiner{} }
func (m *ReceiptParacrossMiner) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossMiner) ProtoMessage() {}
func (*ReceiptParacrossMiner) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{19}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{19}
}
func (m *ReceiptParacrossMiner) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParacrossMiner.Unmarshal(m, b)
}
func (m *ReceiptParacrossMiner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParacrossMiner.Marshal(b, m, deterministic)
}
func (m *ReceiptParacrossMiner) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossMiner.Merge(m, src)
func (dst *ReceiptParacrossMiner) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossMiner.Merge(dst, src)
}
func (m *ReceiptParacrossMiner) XXX_Size() int {
return xxx_messageInfo_ReceiptParacrossMiner.Size(m)
......@@ -1516,17 +1504,16 @@ func (m *ReceiptParacrossDone) Reset() { *m = ReceiptParacrossDone{} }
func (m *ReceiptParacrossDone) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossDone) ProtoMessage() {}
func (*ReceiptParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{20}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{20}
}
func (m *ReceiptParacrossDone) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParacrossDone.Unmarshal(m, b)
}
func (m *ReceiptParacrossDone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParacrossDone.Marshal(b, m, deterministic)
}
func (m *ReceiptParacrossDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossDone.Merge(m, src)
func (dst *ReceiptParacrossDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossDone.Merge(dst, src)
}
func (m *ReceiptParacrossDone) XXX_Size() int {
return xxx_messageInfo_ReceiptParacrossDone.Size(m)
......@@ -1605,17 +1592,16 @@ func (m *ReceiptParacrossRecord) Reset() { *m = ReceiptParacrossRecord{}
func (m *ReceiptParacrossRecord) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossRecord) ProtoMessage() {}
func (*ReceiptParacrossRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{21}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{21}
}
func (m *ReceiptParacrossRecord) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptParacrossRecord.Unmarshal(m, b)
}
func (m *ReceiptParacrossRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptParacrossRecord.Marshal(b, m, deterministic)
}
func (m *ReceiptParacrossRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossRecord.Merge(m, src)
func (dst *ReceiptParacrossRecord) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptParacrossRecord.Merge(dst, src)
}
func (m *ReceiptParacrossRecord) XXX_Size() int {
return xxx_messageInfo_ReceiptParacrossRecord.Size(m)
......@@ -1653,17 +1639,16 @@ func (m *ParacrossTx) Reset() { *m = ParacrossTx{} }
func (m *ParacrossTx) String() string { return proto.CompactTextString(m) }
func (*ParacrossTx) ProtoMessage() {}
func (*ParacrossTx) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{22}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{22}
}
func (m *ParacrossTx) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossTx.Unmarshal(m, b)
}
func (m *ParacrossTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossTx.Marshal(b, m, deterministic)
}
func (m *ParacrossTx) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossTx.Merge(m, src)
func (dst *ParacrossTx) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossTx.Merge(dst, src)
}
func (m *ParacrossTx) XXX_Size() int {
return xxx_messageInfo_ParacrossTx.Size(m)
......@@ -1694,17 +1679,16 @@ func (m *ReqParacrossTitleHeight) Reset() { *m = ReqParacrossTitleHeight
func (m *ReqParacrossTitleHeight) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHeight) ProtoMessage() {}
func (*ReqParacrossTitleHeight) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{23}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{23}
}
func (m *ReqParacrossTitleHeight) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqParacrossTitleHeight.Unmarshal(m, b)
}
func (m *ReqParacrossTitleHeight) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqParacrossTitleHeight.Marshal(b, m, deterministic)
}
func (m *ReqParacrossTitleHeight) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossTitleHeight.Merge(m, src)
func (dst *ReqParacrossTitleHeight) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossTitleHeight.Merge(dst, src)
}
func (m *ReqParacrossTitleHeight) XXX_Size() int {
return xxx_messageInfo_ReqParacrossTitleHeight.Size(m)
......@@ -1747,17 +1731,16 @@ func (m *RespParacrossDone) Reset() { *m = RespParacrossDone{} }
func (m *RespParacrossDone) String() string { return proto.CompactTextString(m) }
func (*RespParacrossDone) ProtoMessage() {}
func (*RespParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{24}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{24}
}
func (m *RespParacrossDone) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespParacrossDone.Unmarshal(m, b)
}
func (m *RespParacrossDone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RespParacrossDone.Marshal(b, m, deterministic)
}
func (m *RespParacrossDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossDone.Merge(m, src)
func (dst *RespParacrossDone) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossDone.Merge(dst, src)
}
func (m *RespParacrossDone) XXX_Size() int {
return xxx_messageInfo_RespParacrossDone.Size(m)
......@@ -1835,17 +1818,16 @@ func (m *RespParacrossTitles) Reset() { *m = RespParacrossTitles{} }
func (m *RespParacrossTitles) String() string { return proto.CompactTextString(m) }
func (*RespParacrossTitles) ProtoMessage() {}
func (*RespParacrossTitles) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{25}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{25}
}
func (m *RespParacrossTitles) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespParacrossTitles.Unmarshal(m, b)
}
func (m *RespParacrossTitles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RespParacrossTitles.Marshal(b, m, deterministic)
}
func (m *RespParacrossTitles) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossTitles.Merge(m, src)
func (dst *RespParacrossTitles) XXX_Merge(src proto.Message) {
xxx_messageInfo_RespParacrossTitles.Merge(dst, src)
}
func (m *RespParacrossTitles) XXX_Size() int {
return xxx_messageInfo_RespParacrossTitles.Size(m)
......@@ -1875,17 +1857,16 @@ func (m *ReqParacrossTitleHash) Reset() { *m = ReqParacrossTitleHash{} }
func (m *ReqParacrossTitleHash) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHash) ProtoMessage() {}
func (*ReqParacrossTitleHash) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{26}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{26}
}
func (m *ReqParacrossTitleHash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqParacrossTitleHash.Unmarshal(m, b)
}
func (m *ReqParacrossTitleHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqParacrossTitleHash.Marshal(b, m, deterministic)
}
func (m *ReqParacrossTitleHash) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossTitleHash.Merge(m, src)
func (dst *ReqParacrossTitleHash) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqParacrossTitleHash.Merge(dst, src)
}
func (m *ReqParacrossTitleHash) XXX_Size() int {
return xxx_messageInfo_ReqParacrossTitleHash.Size(m)
......@@ -1935,17 +1916,16 @@ func (m *ParacrossAsset) Reset() { *m = ParacrossAsset{} }
func (m *ParacrossAsset) String() string { return proto.CompactTextString(m) }
func (*ParacrossAsset) ProtoMessage() {}
func (*ParacrossAsset) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{27}
return fileDescriptor_paracross_9fd7d9353dbdeff6, []int{27}
}
func (m *ParacrossAsset) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParacrossAsset.Unmarshal(m, b)
}
func (m *ParacrossAsset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParacrossAsset.Marshal(b, m, deterministic)
}
func (m *ParacrossAsset) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossAsset.Merge(m, src)
func (dst *ParacrossAsset) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParacrossAsset.Merge(dst, src)
}
func (m *ParacrossAsset) XXX_Size() int {
return xxx_messageInfo_ParacrossAsset.Size(m)
......@@ -2064,105 +2044,6 @@ func init() {
proto.RegisterType((*ParacrossAsset)(nil), "types.ParacrossAsset")
}
func init() { proto.RegisterFile("paracross.proto", fileDescriptor_6a397e38c9ea6747) }
var fileDescriptor_6a397e38c9ea6747 = []byte{
// 1473 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x6f, 0x1c, 0x45,
0x10, 0xde, 0xd9, 0xa7, 0xb7, 0xfc, 0x88, 0xdd, 0x89, 0x9d, 0xc9, 0x12, 0x60, 0x35, 0x0a, 0xc8,
0x42, 0xe0, 0x80, 0x2d, 0x05, 0xa1, 0x08, 0x81, 0xe3, 0x44, 0x5e, 0x93, 0x87, 0xd0, 0xd8, 0x3c,
0x2e, 0x48, 0x4c, 0x66, 0xdb, 0xf6, 0x88, 0xdd, 0x99, 0xc9, 0x74, 0x6f, 0x62, 0x1f, 0x11, 0xf0,
0x03, 0xb8, 0xf0, 0x0b, 0x38, 0x73, 0xe1, 0x0f, 0x20, 0x8e, 0xfc, 0x0d, 0xfe, 0x08, 0xaa, 0xee,
0x9e, 0x7e, 0xcc, 0x3e, 0x14, 0x05, 0x2e, 0xdc, 0xb6, 0xaa, 0xab, 0xeb, 0xf1, 0x55, 0x75, 0x55,
0xcd, 0xc2, 0x95, 0x3c, 0x2a, 0xa2, 0xb8, 0xc8, 0x18, 0xdb, 0xc9, 0x8b, 0x8c, 0x67, 0xa4, 0xc5,
0x2f, 0x73, 0xca, 0x7a, 0x1b, 0xbc, 0x88, 0x52, 0x16, 0xc5, 0x3c, 0xc9, 0x52, 0x79, 0xd2, 0x5b,
0x89, 0xb3, 0xf1, 0x58, 0x53, 0xeb, 0x4f, 0x47, 0x59, 0xfc, 0x5d, 0x7c, 0x1e, 0x25, 0x25, 0x67,
0x8d, 0x5e, 0xd0, 0x78, 0xc2, 0xb3, 0x42, 0xd2, 0xc1, 0x23, 0xd8, 0xfa, 0xbc, 0x54, 0x7e, 0xcc,
0x23, 0x3e, 0x61, 0xf7, 0x29, 0x8f, 0x92, 0x11, 0x23, 0xd7, 0xa0, 0x15, 0x0d, 0x87, 0x05, 0xf3,
0xbd, 0x7e, 0x63, 0xbb, 0x1b, 0x4a, 0x82, 0xdc, 0x84, 0xae, 0xd0, 0x39, 0x88, 0xd8, 0xb9, 0x5f,
0xef, 0x37, 0xb6, 0x57, 0x42, 0xc3, 0x08, 0x7e, 0xf1, 0x60, 0x53, 0xab, 0x1b, 0xd0, 0xe4, 0xec,
0x9c, 0x4b, 0xa5, 0x64, 0x0b, 0xda, 0x4c, 0xfc, 0xf2, 0xbd, 0xbe, 0xb7, 0xdd, 0x0a, 0x15, 0x85,
0x56, 0x78, 0xc2, 0x47, 0xd4, 0xaf, 0xf7, 0x3d, 0xb4, 0x22, 0x08, 0x94, 0x3e, 0x17, 0xb7, 0xfd,
0x46, 0xdf, 0xdb, 0x6e, 0x84, 0x8a, 0x22, 0x1f, 0x42, 0x67, 0x28, 0xdd, 0xf3, 0x9b, 0x7d, 0x6f,
0x7b, 0x79, 0xf7, 0xf5, 0x1d, 0x81, 0xc4, 0xce, 0xec, 0x18, 0xc2, 0x52, 0x3a, 0xf8, 0x06, 0xae,
0x54, 0x44, 0x8c, 0x65, 0x6f, 0xb6, 0xe5, 0xba, 0x63, 0xd9, 0x89, 0x1b, 0x9d, 0x72, 0xe2, 0xfe,
0xd5, 0x03, 0x5f, 0xeb, 0x3f, 0xc8, 0x52, 0x46, 0x53, 0x36, 0x59, 0x6c, 0xa8, 0x0f, 0xcb, 0x22,
0x2f, 0x03, 0xdb, 0x9a, 0xcd, 0x22, 0xb7, 0x60, 0x35, 0x96, 0xaa, 0x06, 0x36, 0x16, 0x2e, 0x93,
0xbc, 0x03, 0xeb, 0x8a, 0x71, 0x4f, 0xfb, 0xd7, 0x14, 0x86, 0xa6, 0xf8, 0xc1, 0x10, 0x08, 0x7a,
0xf9, 0x24, 0x1b, 0xd2, 0xfd, 0xe1, 0xb0, 0x38, 0xc8, 0xd2, 0xd3, 0xe4, 0x6c, 0x8e, 0x7f, 0x6b,
0x50, 0xcf, 0x72, 0x95, 0x95, 0x7a, 0x96, 0x13, 0x02, 0x4d, 0xac, 0x00, 0xe1, 0x44, 0x37, 0x14,
0xbf, 0xf1, 0xe6, 0xf3, 0x68, 0x34, 0xa1, 0xca, 0xa0, 0x24, 0x82, 0x4f, 0x8d, 0x95, 0x2f, 0x33,
0x4e, 0x65, 0x2e, 0xe6, 0x94, 0x13, 0x6a, 0xc8, 0x38, 0x65, 0xa2, 0x94, 0x50, 0x03, 0x12, 0xc1,
0xcf, 0x9e, 0xeb, 0xe8, 0x2b, 0xd5, 0xd0, 0x4d, 0xe8, 0x46, 0x79, 0x3e, 0xba, 0xdc, 0x37, 0x5e,
0x1b, 0x06, 0xb9, 0x5d, 0x1a, 0x96, 0x75, 0x74, 0xc3, 0xaa, 0x23, 0xd7, 0xf1, 0xd2, 0xa7, 0x3f,
0x3d, 0xd8, 0x0c, 0x69, 0x4c, 0x93, 0x9c, 0x97, 0x42, 0x0a, 0xbf, 0x12, 0x19, 0xcf, 0x42, 0xe6,
0x03, 0x68, 0xc7, 0xe2, 0x54, 0xf8, 0x34, 0xad, 0xdf, 0xc0, 0x1f, 0x2a, 0x41, 0xf2, 0x1e, 0x34,
0xf3, 0x82, 0x3e, 0x17, 0xae, 0xce, 0xbe, 0x20, 0x61, 0x08, 0x85, 0x18, 0xd9, 0x83, 0x4e, 0x3c,
0x29, 0x0a, 0x9a, 0xf2, 0x39, 0x21, 0x58, 0x37, 0x4a, 0xc9, 0x20, 0x81, 0x1b, 0x95, 0x18, 0x30,
0xd0, 0x90, 0xc6, 0x59, 0x31, 0x24, 0x3d, 0x58, 0x3a, 0x2d, 0xb2, 0xf1, 0xbe, 0x89, 0x45, 0xd3,
0x78, 0x86, 0x30, 0x88, 0x33, 0x89, 0xb2, 0xa6, 0x4d, 0x15, 0x34, 0x44, 0x56, 0x54, 0x15, 0xfc,
0xed, 0xc1, 0xf5, 0x19, 0xb6, 0xee, 0x67, 0x29, 0x9d, 0x53, 0x71, 0x6f, 0x00, 0xf0, 0xa8, 0x38,
0xa3, 0xdc, 0xb2, 0x62, 0x71, 0xc4, 0x79, 0xc6, 0xa3, 0x11, 0xaa, 0x62, 0xca, 0x98, 0xc5, 0xc1,
0x84, 0x0b, 0x0a, 0xcd, 0x08, 0x4c, 0x5a, 0xa1, 0x61, 0x60, 0x04, 0xe3, 0x8c, 0x71, 0x71, 0xd8,
0x12, 0x87, 0x9a, 0x26, 0x3e, 0x74, 0x30, 0x9a, 0x90, 0x71, 0xbf, 0x2d, 0xcc, 0x96, 0x24, 0xda,
0x1c, 0x66, 0x29, 0x95, 0x38, 0xfa, 0x1d, 0x69, 0xd3, 0x70, 0x82, 0xaf, 0xe1, 0x5a, 0x48, 0x9f,
0xe9, 0xa7, 0x8f, 0x8e, 0x1c, 0xa5, 0xa7, 0xd9, 0x9c, 0x08, 0xcb, 0x4a, 0xa9, 0x5b, 0x95, 0x62,
0x8a, 0xba, 0x61, 0x17, 0x75, 0x70, 0x04, 0x5b, 0x21, 0x65, 0xb9, 0xa3, 0x7a, 0x5f, 0xbc, 0x99,
0xdb, 0xf6, 0x4b, 0x5a, 0x98, 0x77, 0x29, 0x17, 0xfc, 0xe4, 0xc1, 0x06, 0x9e, 0x8a, 0x46, 0xb0,
0xfb, 0x38, 0x4a, 0xd2, 0xc7, 0x51, 0x6e, 0x75, 0x3a, 0x6f, 0x7e, 0xa7, 0x93, 0x9e, 0x1a, 0x06,
0x02, 0x32, 0x36, 0x5d, 0x4b, 0x76, 0x24, 0x8b, 0x23, 0x60, 0x46, 0xca, 0xb4, 0x21, 0x4d, 0x07,
0xf7, 0xe5, 0xab, 0x36, 0x6e, 0x08, 0xa8, 0x76, 0xa0, 0x95, 0x70, 0x3a, 0x2e, 0xc3, 0xf1, 0xad,
0x70, 0x1c, 0x87, 0x43, 0x29, 0x16, 0xfc, 0xde, 0x80, 0xab, 0x0e, 0x2a, 0xaa, 0x3b, 0xdc, 0x82,
0x55, 0xb4, 0x64, 0xba, 0xa0, 0x27, 0xba, 0xb4, 0xcb, 0x24, 0xdb, 0x70, 0xc5, 0x30, 0xec, 0xd6,
0x5b, 0x65, 0x9b, 0x14, 0x36, 0x66, 0xcf, 0x87, 0xa6, 0x83, 0x5a, 0x00, 0x2b, 0x79, 0x41, 0x8d,
0xf1, 0x96, 0x30, 0xee, 0xf0, 0x5c, 0x64, 0xdb, 0x95, 0x19, 0xa2, 0x34, 0x60, 0x30, 0x54, 0x08,
0x74, 0xb4, 0x06, 0xcd, 0x43, 0x0d, 0x4c, 0x0b, 0x2c, 0x49, 0x0d, 0x9a, 0x81, 0xd8, 0xf3, 0x8b,
0x83, 0x6c, 0x92, 0x72, 0xe6, 0x77, 0xfb, 0xde, 0xf6, 0x6a, 0xa8, 0x69, 0x79, 0x16, 0x52, 0x36,
0x19, 0x71, 0x1f, 0xc4, 0x45, 0x4d, 0x63, 0xf9, 0xf3, 0x0b, 0xd4, 0xc0, 0xfc, 0x65, 0x31, 0xd1,
0x4b, 0x52, 0x8c, 0x20, 0x84, 0xf9, 0xa4, 0xbc, 0xba, 0x22, 0x31, 0x75, 0x98, 0xe8, 0xb9, 0x62,
0x48, 0x25, 0xab, 0x42, 0x89, 0xc3, 0x0b, 0x1e, 0x5a, 0x8b, 0xc1, 0x41, 0x36, 0x1e, 0x27, 0x7c,
0x5f, 0xac, 0x2d, 0x64, 0xd7, 0x69, 0xea, 0xcb, 0xbb, 0xbd, 0xea, 0x44, 0x37, 0x29, 0xd6, 0x6f,
0xe3, 0x33, 0xb8, 0xa6, 0x8f, 0x1f, 0x27, 0x29, 0x2d, 0xfe, 0x85, 0xae, 0x1f, 0x9a, 0xd6, 0x6a,
0xa0, 0xf4, 0xdc, 0xc1, 0xee, 0x8d, 0x3e, 0x2a, 0x3d, 0x37, 0xab, 0x7a, 0xec, 0x08, 0x06, 0xb5,
0x50, 0x49, 0x93, 0x3d, 0x68, 0x8d, 0xd1, 0x1d, 0xd5, 0xc3, 0x5f, 0xab, 0x5e, 0xb3, 0x7c, 0x1d,
0xd4, 0x42, 0x29, 0x4b, 0x3e, 0x86, 0xd5, 0x88, 0x31, 0xca, 0x4f, 0x70, 0x97, 0x3b, 0xa5, 0x85,
0x6a, 0xe7, 0x9b, 0xea, 0xf2, 0x3e, 0x9e, 0xb1, 0xf2, 0x70, 0x50, 0x0b, 0x5d, 0x69, 0x7d, 0xfd,
0xab, 0x84, 0x9f, 0x0f, 0x8b, 0xe8, 0x85, 0xa8, 0xbc, 0xea, 0xf5, 0xf2, 0x50, 0x5f, 0x2f, 0x19,
0x64, 0x0f, 0x96, 0x78, 0x69, 0xb8, 0xbd, 0xd8, 0xb0, 0x16, 0xc4, 0x4b, 0x2f, 0x4a, 0x73, 0x9d,
0xc5, 0xe6, 0xb4, 0x20, 0x79, 0x00, 0x6b, 0xa5, 0x82, 0x93, 0xec, 0xc1, 0x05, 0x8d, 0x45, 0x01,
0x1b, 0x94, 0x5c, 0x7b, 0x52, 0x64, 0x50, 0x0b, 0x2b, 0x97, 0xc8, 0x5d, 0x80, 0x54, 0xcf, 0x5e,
0x51, 0xe6, 0x8b, 0xa6, 0xeb, 0xa0, 0x16, 0x5a, 0xe2, 0xb8, 0xd4, 0xf0, 0x4b, 0xf1, 0xe0, 0x5b,
0x61, 0x9d, 0x5f, 0xde, 0xeb, 0xa8, 0xd1, 0x15, 0xfc, 0xe5, 0x61, 0xbb, 0xd5, 0xd3, 0xca, 0x4a,
0xf2, 0xcc, 0xf1, 0x6e, 0x0a, 0xad, 0xfe, 0xb2, 0x85, 0x46, 0xde, 0x77, 0xe6, 0xfb, 0x54, 0x49,
0xd9, 0xdb, 0xb2, 0x1a, 0xf1, 0x77, 0xaa, 0x23, 0x7e, 0xf1, 0x25, 0x3d, 0xe5, 0x1f, 0x3a, 0x9b,
0x8a, 0xa9, 0xbc, 0x57, 0x7a, 0x1f, 0x3f, 0xd6, 0x71, 0xc4, 0xb9, 0xda, 0xc4, 0x10, 0x77, 0xc7,
0xb1, 0x37, 0x35, 0x8e, 0xfb, 0xb0, 0x2c, 0x28, 0x09, 0xa3, 0x02, 0xdd, 0x66, 0x91, 0xb7, 0x61,
0x0d, 0x47, 0xf0, 0x71, 0x34, 0xa6, 0x4a, 0x48, 0x8e, 0xc0, 0x0a, 0xd7, 0x74, 0xe2, 0xe6, 0xec,
0x4e, 0xdc, 0xaa, 0xce, 0x2f, 0xd3, 0x23, 0xdb, 0x8b, 0x7a, 0x64, 0x67, 0x41, 0x8f, 0x5c, 0x72,
0x7b, 0x64, 0xf0, 0xed, 0x74, 0x7d, 0xa8, 0xb5, 0xe9, 0x3f, 0xaa, 0x8f, 0xe0, 0x2d, 0x58, 0xd6,
0xc7, 0x27, 0x17, 0x18, 0x9e, 0xec, 0xc2, 0x4a, 0xb1, 0xa2, 0x82, 0x43, 0x5c, 0xab, 0xcc, 0xc6,
0x71, 0x82, 0x58, 0x54, 0x27, 0xd6, 0xcb, 0x7c, 0xd1, 0x04, 0xdf, 0xd7, 0x61, 0xc3, 0xd9, 0x30,
0xfe, 0x5f, 0x59, 0xed, 0xbe, 0x6a, 0x56, 0xbb, 0x56, 0x56, 0x0f, 0xe1, 0xaa, 0x03, 0x81, 0x40,
0x13, 0x9f, 0x6a, 0x5b, 0x78, 0x53, 0xdd, 0x49, 0xa6, 0xe0, 0x0a, 0x95, 0x9c, 0x7c, 0x72, 0xd5,
0xac, 0xa0, 0x67, 0xb3, 0x73, 0x32, 0xb5, 0x63, 0x39, 0x5f, 0x93, 0xbf, 0xd5, 0x61, 0xcd, 0x8c,
0x24, 0x6c, 0x8b, 0x58, 0x64, 0xb8, 0x8b, 0x97, 0x45, 0x86, 0xbf, 0x45, 0x33, 0xcb, 0xca, 0x2f,
0x34, 0x9e, 0x61, 0xea, 0x12, 0xdd, 0x7a, 0x05, 0xe8, 0x4b, 0xa1, 0xc5, 0xb1, 0x2a, 0xaa, 0x29,
0x2c, 0x2a, 0x0a, 0xf9, 0xd1, 0x18, 0xb1, 0x2a, 0x21, 0x97, 0x14, 0xda, 0xa4, 0xd8, 0xa6, 0x25,
0xda, 0xe2, 0xb7, 0xd8, 0x56, 0x2f, 0xc7, 0x4f, 0xb3, 0x91, 0x80, 0xb9, 0x1b, 0x2a, 0xca, 0x4a,
0x1b, 0x38, 0x69, 0x13, 0x5f, 0xa7, 0x98, 0x6e, 0x44, 0x4b, 0xed, 0x5b, 0x9b, 0x42, 0x62, 0x8a,
0x8f, 0xfe, 0xe7, 0x51, 0x11, 0x29, 0xa9, 0x2d, 0xb9, 0x5a, 0x1a, 0x0e, 0xae, 0x29, 0x6c, 0x12,
0xc7, 0x94, 0x31, 0xff, 0xba, 0x08, 0xae, 0x24, 0x77, 0xff, 0xa8, 0x43, 0x57, 0xff, 0x45, 0x42,
0x3e, 0x81, 0xa5, 0x43, 0xca, 0x45, 0x0a, 0xc8, 0xba, 0xce, 0xdc, 0xb3, 0x63, 0x5e, 0x24, 0xe9,
0x59, 0xef, 0xcd, 0xe9, 0x59, 0xee, 0x7c, 0xae, 0x07, 0x35, 0xf2, 0x11, 0xc0, 0xa3, 0x84, 0x71,
0x55, 0x0c, 0xab, 0x46, 0xc5, 0x93, 0x64, 0xd4, 0xeb, 0xcd, 0xaa, 0x05, 0x29, 0x1a, 0xd4, 0xc8,
0x23, 0x58, 0x2b, 0x6d, 0x97, 0x51, 0x99, 0xeb, 0xb3, 0x1e, 0x6d, 0x6f, 0x6e, 0x6d, 0x05, 0x35,
0x72, 0x17, 0xd6, 0x0f, 0x29, 0x17, 0x15, 0xa0, 0x97, 0xad, 0x35, 0xa3, 0x0f, 0xb3, 0xd7, 0xdb,
0xac, 0xc6, 0x23, 0xc4, 0x83, 0x1a, 0x79, 0x17, 0xda, 0x47, 0xec, 0xf8, 0x32, 0x8d, 0xab, 0x11,
0x6c, 0x28, 0xf2, 0x88, 0x1d, 0x44, 0x93, 0xb3, 0x73, 0xfe, 0x45, 0x1e, 0xd4, 0x9e, 0xb6, 0xc5,
0xdf, 0x41, 0x7b, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x69, 0x19, 0xcd, 0x46, 0x6b, 0x12, 0x00,
0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
......@@ -2366,3 +2247,102 @@ var _Paracross_serviceDesc = grpc.ServiceDesc{
Streams: []grpc.StreamDesc{},
Metadata: "paracross.proto",
}
func init() { proto.RegisterFile("paracross.proto", fileDescriptor_paracross_9fd7d9353dbdeff6) }
var fileDescriptor_paracross_9fd7d9353dbdeff6 = []byte{
// 1488 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x6f, 0x1c, 0x45,
0x10, 0xde, 0xd9, 0xa7, 0xb7, 0xfc, 0x88, 0xdd, 0x89, 0x9d, 0xc9, 0x12, 0x60, 0x35, 0x0a, 0xc8,
0x42, 0xe0, 0x80, 0x2d, 0x05, 0xa1, 0x08, 0x81, 0xe3, 0x44, 0x5e, 0x2b, 0x0f, 0xa1, 0xb1, 0x79,
0x5c, 0x90, 0x98, 0xcc, 0xb6, 0xed, 0x11, 0xbb, 0x33, 0x93, 0xe9, 0xde, 0xc4, 0x3e, 0x22, 0xe0,
0x07, 0x70, 0xe1, 0x17, 0x70, 0xe6, 0xc2, 0x1f, 0x40, 0x1c, 0xf9, 0x1b, 0xfc, 0x11, 0x54, 0xd5,
0x3d, 0xdd, 0x33, 0xb3, 0x0f, 0x45, 0x16, 0x17, 0x6e, 0x5b, 0xd5, 0xd5, 0xf5, 0xf8, 0xaa, 0xba,
0xaa, 0x66, 0xe1, 0x5a, 0x1a, 0x64, 0x41, 0x98, 0x25, 0x42, 0xec, 0xa4, 0x59, 0x22, 0x13, 0xd6,
0x92, 0x97, 0x29, 0x17, 0xbd, 0x0d, 0x99, 0x05, 0xb1, 0x08, 0x42, 0x19, 0x25, 0xb1, 0x3a, 0xe9,
0xad, 0x84, 0xc9, 0x78, 0x6c, 0xa8, 0xf5, 0xe7, 0xa3, 0x24, 0xfc, 0x3e, 0x3c, 0x0f, 0xa2, 0x9c,
0xb3, 0xc6, 0x2f, 0x78, 0x38, 0x91, 0x49, 0xa6, 0x68, 0xef, 0x09, 0x6c, 0x7d, 0x91, 0x2b, 0x3f,
0x96, 0x81, 0x9c, 0x88, 0x87, 0x5c, 0x06, 0xd1, 0x48, 0xb0, 0x1b, 0xd0, 0x0a, 0x86, 0xc3, 0x4c,
0xb8, 0x4e, 0xbf, 0xb1, 0xdd, 0xf5, 0x15, 0xc1, 0x6e, 0x43, 0x97, 0x74, 0x0e, 0x02, 0x71, 0xee,
0xd6, 0xfb, 0x8d, 0xed, 0x15, 0xdf, 0x32, 0xbc, 0x5f, 0x1d, 0xd8, 0x34, 0xea, 0x06, 0x3c, 0x3a,
0x3b, 0x97, 0x4a, 0x29, 0xdb, 0x82, 0xb6, 0xa0, 0x5f, 0xae, 0xd3, 0x77, 0xb6, 0x5b, 0xbe, 0xa6,
0xd0, 0x8a, 0x8c, 0xe4, 0x88, 0xbb, 0xf5, 0xbe, 0x83, 0x56, 0x88, 0x40, 0xe9, 0x73, 0xba, 0xed,
0x36, 0xfa, 0xce, 0x76, 0xc3, 0xd7, 0x14, 0xfb, 0x18, 0x3a, 0x43, 0xe5, 0x9e, 0xdb, 0xec, 0x3b,
0xdb, 0xcb, 0xbb, 0x6f, 0xee, 0x10, 0x12, 0x3b, 0xb3, 0x63, 0xf0, 0x73, 0x69, 0xef, 0x5b, 0xb8,
0x56, 0x11, 0xb1, 0x96, 0x9d, 0xd9, 0x96, 0xeb, 0x25, 0xcb, 0xa5, 0xb8, 0xd1, 0xa9, 0x52, 0xdc,
0xbf, 0x39, 0xe0, 0x1a, 0xfd, 0x07, 0x49, 0x2c, 0x78, 0x2c, 0x26, 0x8b, 0x0d, 0xf5, 0x61, 0x99,
0xf2, 0x32, 0x28, 0x5a, 0x2b, 0xb2, 0xd8, 0x1d, 0x58, 0x0d, 0x95, 0xaa, 0x41, 0x11, 0x8b, 0x32,
0x93, 0xbd, 0x07, 0xeb, 0x9a, 0xf1, 0xc0, 0xf8, 0xd7, 0x24, 0x43, 0x53, 0x7c, 0x6f, 0x08, 0x0c,
0xbd, 0x7c, 0x96, 0x0c, 0xf9, 0xfe, 0x70, 0x98, 0x1d, 0x24, 0xf1, 0x69, 0x74, 0x36, 0xc7, 0xbf,
0x35, 0xa8, 0x27, 0xa9, 0xce, 0x4a, 0x3d, 0x49, 0x19, 0x83, 0x26, 0x56, 0x00, 0x39, 0xd1, 0xf5,
0xe9, 0x37, 0xde, 0x7c, 0x19, 0x8c, 0x26, 0x5c, 0x1b, 0x54, 0x84, 0xf7, 0xb9, 0xb5, 0xf2, 0x55,
0x22, 0xb9, 0xca, 0xc5, 0x9c, 0x72, 0x42, 0x0d, 0x89, 0xe4, 0x82, 0x4a, 0x09, 0x35, 0x20, 0xe1,
0xfd, 0xe2, 0x94, 0x1d, 0xbd, 0x52, 0x0d, 0xdd, 0x86, 0x6e, 0x90, 0xa6, 0xa3, 0xcb, 0x7d, 0xeb,
0xb5, 0x65, 0xb0, 0xbb, 0xb9, 0x61, 0x55, 0x47, 0xb7, 0x0a, 0x75, 0x54, 0x76, 0x3c, 0xf7, 0xe9,
0x2f, 0x07, 0x36, 0x7d, 0x1e, 0xf2, 0x28, 0x95, 0xb9, 0x90, 0xc6, 0x2f, 0x47, 0xc6, 0x29, 0x20,
0xf3, 0x11, 0xb4, 0x43, 0x3a, 0x25, 0x9f, 0xa6, 0xf5, 0x5b, 0xf8, 0x7d, 0x2d, 0xc8, 0x3e, 0x80,
0x66, 0x9a, 0xf1, 0x97, 0xe4, 0xea, 0xec, 0x0b, 0x0a, 0x06, 0x9f, 0xc4, 0xd8, 0x1e, 0x74, 0xc2,
0x49, 0x96, 0xf1, 0x58, 0xce, 0x09, 0xa1, 0x70, 0x23, 0x97, 0xf4, 0x22, 0xb8, 0x55, 0x89, 0x01,
0x03, 0xf5, 0x79, 0x98, 0x64, 0x43, 0xd6, 0x83, 0xa5, 0xd3, 0x2c, 0x19, 0xef, 0xdb, 0x58, 0x0c,
0x8d, 0x67, 0x08, 0x03, 0x9d, 0x29, 0x94, 0x0d, 0x6d, 0xab, 0xa0, 0x41, 0x59, 0xd1, 0x55, 0xf0,
0x8f, 0x03, 0x37, 0x67, 0xd8, 0x7a, 0x98, 0xc4, 0x7c, 0x4e, 0xc5, 0xbd, 0x05, 0x20, 0x83, 0xec,
0x8c, 0xcb, 0x82, 0x95, 0x02, 0x87, 0xce, 0x13, 0x19, 0x8c, 0x50, 0x95, 0xd0, 0xc6, 0x0a, 0x1c,
0x4c, 0x38, 0x51, 0x68, 0x86, 0x30, 0x69, 0xf9, 0x96, 0x81, 0x11, 0x8c, 0x13, 0x21, 0xe9, 0xb0,
0x45, 0x87, 0x86, 0x66, 0x2e, 0x74, 0x30, 0x1a, 0x5f, 0x48, 0xb7, 0x4d, 0x66, 0x73, 0x12, 0x6d,
0x0e, 0x93, 0x98, 0x2b, 0x1c, 0xdd, 0x8e, 0xb2, 0x69, 0x39, 0xde, 0x37, 0x70, 0xc3, 0xe7, 0x2f,
0xcc, 0xd3, 0x47, 0x47, 0x8e, 0xe2, 0xd3, 0x64, 0x4e, 0x84, 0x79, 0xa5, 0xd4, 0x0b, 0x95, 0x62,
0x8b, 0xba, 0x51, 0x2c, 0x6a, 0xef, 0x08, 0xb6, 0x7c, 0x2e, 0xd2, 0x92, 0xea, 0x7d, 0x7a, 0x33,
0x77, 0x8b, 0x2f, 0x69, 0x61, 0xde, 0x95, 0x9c, 0xf7, 0xb3, 0x03, 0x1b, 0x78, 0x4a, 0x8d, 0x60,
0xf7, 0x69, 0x10, 0xc5, 0x4f, 0x83, 0xb4, 0xd0, 0xe9, 0x9c, 0xf9, 0x9d, 0x4e, 0x79, 0x6a, 0x19,
0x08, 0xc8, 0xd8, 0x76, 0x2d, 0xd5, 0x91, 0x0a, 0x1c, 0x82, 0x19, 0x29, 0xdb, 0x86, 0x0c, 0xed,
0x3d, 0x54, 0xaf, 0xda, 0xba, 0x41, 0x50, 0xed, 0x40, 0x2b, 0x92, 0x7c, 0x9c, 0x87, 0xe3, 0x16,
0xc2, 0x29, 0x39, 0xec, 0x2b, 0x31, 0xef, 0x8f, 0x06, 0x5c, 0x2f, 0xa1, 0xa2, 0xbb, 0xc3, 0x1d,
0x58, 0x45, 0x4b, 0xb6, 0x0b, 0x3a, 0xd4, 0xa5, 0xcb, 0x4c, 0xb6, 0x0d, 0xd7, 0x2c, 0xa3, 0xd8,
0x7a, 0xab, 0x6c, 0x9b, 0xc2, 0xc6, 0xec, 0xf9, 0xd0, 0x2c, 0xa1, 0xe6, 0xc1, 0x4a, 0x9a, 0x71,
0x6b, 0xbc, 0x45, 0xc6, 0x4b, 0xbc, 0x32, 0xb2, 0xed, 0xca, 0x0c, 0xd1, 0x1a, 0x30, 0x18, 0x4e,
0x02, 0x1d, 0xa3, 0xc1, 0xf0, 0x50, 0x83, 0x30, 0x02, 0x4b, 0x4a, 0x83, 0x61, 0x20, 0xf6, 0xf2,
0xe2, 0x20, 0x99, 0xc4, 0x52, 0xb8, 0xdd, 0xbe, 0xb3, 0xbd, 0xea, 0x1b, 0x5a, 0x9d, 0xf9, 0x5c,
0x4c, 0x46, 0xd2, 0x05, 0xba, 0x68, 0x68, 0x2c, 0x7f, 0x79, 0x81, 0x1a, 0x84, 0xbb, 0x4c, 0x13,
0x3d, 0x27, 0x69, 0x04, 0x21, 0xcc, 0x27, 0xf9, 0xd5, 0x15, 0x85, 0x69, 0x89, 0x89, 0x9e, 0x6b,
0x86, 0x52, 0xb2, 0x4a, 0x4a, 0x4a, 0x3c, 0xef, 0x71, 0x61, 0x31, 0x38, 0x48, 0xc6, 0xe3, 0x48,
0xee, 0xd3, 0xda, 0xc2, 0x76, 0x4b, 0x4d, 0x7d, 0x79, 0xb7, 0x57, 0x9d, 0xe8, 0x36, 0xc5, 0xe6,
0x6d, 0x48, 0xb8, 0x61, 0x8e, 0x9f, 0x46, 0x31, 0xcf, 0xae, 0xae, 0x0b, 0x0b, 0x22, 0x12, 0xc7,
0x7c, 0x74, 0x6a, 0xc6, 0x36, 0x15, 0xc4, 0x92, 0x5f, 0x65, 0x7b, 0x3f, 0x36, 0x0b, 0x4b, 0x84,
0xb6, 0x78, 0x0f, 0xfb, 0x3c, 0x46, 0xa3, 0x2d, 0xde, 0xae, 0x5a, 0x2c, 0xc6, 0x3a, 0xa8, 0xf9,
0x5a, 0x9a, 0xed, 0x41, 0x6b, 0x8c, 0x8e, 0xeb, 0x6e, 0xff, 0x46, 0xf5, 0x5a, 0x21, 0xaa, 0x41,
0xcd, 0x57, 0xb2, 0xec, 0x53, 0x58, 0x0d, 0x84, 0xe0, 0xf2, 0x04, 0xb7, 0xbe, 0x53, 0x9e, 0xe9,
0xc6, 0xbf, 0xa9, 0x2f, 0xef, 0xe3, 0x99, 0xc8, 0x0f, 0x07, 0x35, 0xbf, 0x2c, 0x6d, 0xae, 0x7f,
0x1d, 0xc9, 0xf3, 0x61, 0x16, 0xbc, 0xa2, 0x1a, 0xad, 0x5e, 0xcf, 0x0f, 0xcd, 0xf5, 0x9c, 0xc1,
0xf6, 0x60, 0x49, 0xe6, 0x86, 0xdb, 0x8b, 0x0d, 0x1b, 0x41, 0xbc, 0xf4, 0x2a, 0x37, 0xd7, 0x59,
0x6c, 0xce, 0x08, 0xb2, 0x47, 0xb0, 0x96, 0x2b, 0x38, 0x49, 0x1e, 0x5d, 0xf0, 0x90, 0x4a, 0xdd,
0xa2, 0x54, 0xb6, 0xa7, 0x44, 0x06, 0x35, 0xbf, 0x72, 0x89, 0xdd, 0x07, 0x88, 0xcd, 0x94, 0xa6,
0x07, 0xb1, 0x68, 0x0e, 0x0f, 0x6a, 0x7e, 0x41, 0x1c, 0xd7, 0x1f, 0x79, 0x49, 0x95, 0xd0, 0xf2,
0xeb, 0xf2, 0xf2, 0x41, 0x47, 0x0f, 0x39, 0xef, 0x6f, 0x07, 0x1b, 0xb3, 0x99, 0x6b, 0x85, 0x24,
0xcf, 0x5c, 0x04, 0x6c, 0x49, 0xd6, 0x5f, 0xbb, 0x24, 0x3f, 0x2c, 0x6d, 0x02, 0x53, 0x25, 0x55,
0xdc, 0xab, 0xf5, 0x32, 0x70, 0xaf, 0xba, 0x0c, 0x2c, 0xbe, 0x64, 0xf6, 0x81, 0xc7, 0xa5, 0x9d,
0xc6, 0x56, 0xde, 0x95, 0x5e, 0xe5, 0x4f, 0x75, 0x1c, 0x86, 0x65, 0x6d, 0x34, 0xee, 0xcb, 0x83,
0xdb, 0x99, 0x1a, 0xdc, 0x7d, 0x58, 0x26, 0x4a, 0xc1, 0xa8, 0x41, 0x2f, 0xb2, 0xd8, 0xbb, 0xb0,
0x86, 0xc3, 0xfa, 0x38, 0x18, 0x73, 0x2d, 0xa4, 0x86, 0x65, 0x85, 0x6b, 0x7b, 0x76, 0x73, 0x76,
0xcf, 0x6e, 0x55, 0x27, 0x9d, 0xed, 0xa6, 0xed, 0x45, 0xdd, 0xb4, 0xb3, 0xa0, 0x9b, 0x2e, 0x95,
0xbb, 0xa9, 0xf7, 0xdd, 0x74, 0x7d, 0xe8, 0x05, 0xeb, 0x3f, 0xaa, 0x0f, 0xef, 0x1d, 0x58, 0x36,
0xc7, 0x27, 0x17, 0x18, 0x9e, 0xea, 0xd7, 0x5a, 0xb1, 0xa6, 0xbc, 0x43, 0x5c, 0xc0, 0xec, 0x6e,
0x72, 0x82, 0x58, 0x54, 0x67, 0xdb, 0xeb, 0x7c, 0xfb, 0x78, 0x3f, 0xd4, 0x61, 0xa3, 0xb4, 0x8b,
0xfc, 0xbf, 0xb2, 0xda, 0xbd, 0x6a, 0x56, 0xbb, 0x85, 0xac, 0x1e, 0xc2, 0xf5, 0x12, 0x04, 0x84,
0x26, 0x3e, 0xd5, 0x36, 0x79, 0x53, 0xdd, 0x5e, 0xa6, 0xe0, 0xf2, 0xb5, 0x9c, 0x7a, 0x72, 0xd5,
0xac, 0xa0, 0x67, 0xb3, 0x73, 0x32, 0xb5, 0x8d, 0x95, 0xbe, 0x3b, 0x7f, 0xaf, 0xc3, 0x9a, 0x1d,
0x49, 0xd8, 0x16, 0xb1, 0xc8, 0x70, 0x6b, 0xcf, 0x8b, 0x0c, 0x7f, 0x53, 0x33, 0x4b, 0xf2, 0x6f,
0x39, 0x99, 0x60, 0xea, 0x22, 0xd3, 0x7a, 0x09, 0xf4, 0x25, 0xbf, 0xc0, 0x29, 0x54, 0x54, 0x93,
0x2c, 0x6a, 0x0a, 0xf9, 0xc1, 0x18, 0xb1, 0xca, 0x21, 0x57, 0x14, 0xda, 0xe4, 0xd8, 0xa6, 0x15,
0xda, 0xf4, 0x9b, 0xf6, 0xda, 0xcb, 0xf1, 0xf3, 0x64, 0x44, 0x30, 0x77, 0x7d, 0x4d, 0x15, 0xd2,
0x06, 0xa5, 0xb4, 0xd1, 0x77, 0x2c, 0xa6, 0x1b, 0xd1, 0xd2, 0x9b, 0xd9, 0x26, 0x49, 0x4c, 0xf1,
0xd1, 0xff, 0x34, 0xc8, 0x02, 0x2d, 0xb5, 0xa5, 0x96, 0x50, 0xcb, 0xc1, 0x85, 0x46, 0x4c, 0xc2,
0x90, 0x0b, 0xe1, 0xde, 0xa4, 0xe0, 0x72, 0x72, 0xf7, 0xcf, 0x3a, 0x74, 0xcd, 0x9f, 0x29, 0xec,
0x33, 0x58, 0x3a, 0xe4, 0x92, 0x52, 0xc0, 0xd6, 0x4d, 0xe6, 0x5e, 0x1c, 0xcb, 0x2c, 0x8a, 0xcf,
0x7a, 0x6f, 0x4f, 0xcf, 0xf2, 0xd2, 0x87, 0xbd, 0x57, 0x63, 0x9f, 0x00, 0x3c, 0x89, 0x84, 0xd4,
0xc5, 0xb0, 0x6a, 0x55, 0x3c, 0x8b, 0x46, 0xbd, 0xde, 0xac, 0x5a, 0x50, 0xa2, 0x5e, 0x8d, 0x3d,
0x81, 0xb5, 0xdc, 0x76, 0x1e, 0x95, 0xbd, 0x3e, 0xeb, 0xd1, 0xf6, 0xe6, 0xd6, 0x96, 0x57, 0x63,
0xf7, 0x61, 0xfd, 0x90, 0x4b, 0xaa, 0x00, 0xb3, 0x96, 0xad, 0x59, 0x7d, 0x98, 0xbd, 0xde, 0x66,
0x35, 0x1e, 0x12, 0xf7, 0x6a, 0xec, 0x7d, 0x68, 0x1f, 0x89, 0xe3, 0xcb, 0x38, 0xac, 0x46, 0xb0,
0xa1, 0xc9, 0x23, 0x71, 0x10, 0x4c, 0xce, 0xce, 0xe5, 0x97, 0xa9, 0x57, 0x7b, 0xde, 0xa6, 0x3f,
0x8e, 0xf6, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xac, 0x4d, 0x78, 0xed, 0x95, 0x12, 0x00, 0x00,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment