From 9e2fa01907242361a434c5d7db3a23c869dc2b4d Mon Sep 17 00:00:00 2001 From: Radu Berinde Date: Tue, 21 Mar 2017 16:38:25 -0400 Subject: [PATCH] storage: plumb AdminChangeReplicas request Plumbing an `AdminChangeReplicas` request. Refactoring the `testcluster` code to issue this operation rather than calling into the `Replica` directly. This request will be used to implement `SCATTER` and `TESTING_RELOCATE` (#13665). --- pkg/internal/client/batch.go | 22 + pkg/internal/client/db.go | 12 + pkg/internal/client/db_test.go | 1 + pkg/roachpb/api.go | 42 +- pkg/roachpb/api.pb.go | 1663 ++++++++++++++-------- pkg/roachpb/api.proto | 15 + pkg/roachpb/batch_generated.go | 232 +-- pkg/roachpb/method.go | 2 + pkg/roachpb/method_string.go | 4 +- pkg/storage/replica.go | 16 + pkg/testutils/testcluster/testcluster.go | 54 +- 11 files changed, 1281 insertions(+), 782 deletions(-) diff --git a/pkg/internal/client/batch.go b/pkg/internal/client/batch.go index f803560cf154..3b531f430b77 100644 --- a/pkg/internal/client/batch.go +++ b/pkg/internal/client/batch.go @@ -245,6 +245,7 @@ func (b *Batch) fillResults() error { case *roachpb.AdminMergeRequest: case *roachpb.AdminSplitRequest: case *roachpb.AdminTransferLeaseRequest: + case *roachpb.AdminChangeReplicasRequest: case *roachpb.HeartbeatTxnRequest: case *roachpb.GCRequest: case *roachpb.PushTxnRequest: @@ -608,6 +609,27 @@ func (b *Batch) adminTransferLease(key interface{}, target roachpb.StoreID) { b.initResult(1, 0, notRaw, nil) } +// adminChangeReplicas is only exported on DB. It is here for symmetry with the +// other operations. +func (b *Batch) adminChangeReplicas( + key interface{}, changeType roachpb.ReplicaChangeType, targets []roachpb.ReplicationTarget, +) { + k, err := marshalKey(key) + if err != nil { + b.initResult(0, 0, notRaw, err) + return + } + req := &roachpb.AdminChangeReplicasRequest{ + Span: roachpb.Span{ + Key: k, + }, + ChangeType: changeType, + Targets: targets, + } + b.appendReqs(req) + b.initResult(1, 0, notRaw, nil) +} + // writeBatch is only exported on DB. func (b *Batch) writeBatch(s, e interface{}, data []byte) { begin, err := marshalKey(s) diff --git a/pkg/internal/client/db.go b/pkg/internal/client/db.go index c8d659d500ed..d3f15be8e9de 100644 --- a/pkg/internal/client/db.go +++ b/pkg/internal/client/db.go @@ -391,6 +391,18 @@ func (db *DB) AdminTransferLease( return getOneErr(db.Run(ctx, b), b) } +// AdminChangeReplicas adds or removes a set of replicas for a range. +func (db *DB) AdminChangeReplicas( + ctx context.Context, + key interface{}, + changeType roachpb.ReplicaChangeType, + targets []roachpb.ReplicationTarget, +) error { + b := &Batch{} + b.adminChangeReplicas(key, changeType, targets) + return getOneErr(db.Run(ctx, b), b) +} + // CheckConsistency runs a consistency check on all the ranges containing // the key span. It logs a diff of all the keys that are inconsistent // when withDiff is set to true. diff --git a/pkg/internal/client/db_test.go b/pkg/internal/client/db_test.go index e096df69d30e..401b9325a526 100644 --- a/pkg/internal/client/db_test.go +++ b/pkg/internal/client/db_test.go @@ -369,6 +369,7 @@ func TestCommonMethods(t *testing.T) { {dbType, "AdminMerge"}: {}, {dbType, "AdminSplit"}: {}, {dbType, "AdminTransferLease"}: {}, + {dbType, "AdminChangeReplicas"}: {}, {dbType, "CheckConsistency"}: {}, {dbType, "Run"}: {}, {dbType, "Txn"}: {}, diff --git a/pkg/roachpb/api.go b/pkg/roachpb/api.go index 514e853bc726..a48cdbf44e69 100644 --- a/pkg/roachpb/api.go +++ b/pkg/roachpb/api.go @@ -436,6 +436,9 @@ func (*AdminMergeRequest) Method() Method { return AdminMerge } // Method implements the Request interface. func (*AdminTransferLeaseRequest) Method() Method { return AdminTransferLease } +// Method implements the Request interface. +func (*AdminChangeReplicasRequest) Method() Method { return AdminChangeReplicas } + // Method implements the Request interface. func (*HeartbeatTxnRequest) Method() Method { return HeartbeatTxn } @@ -586,6 +589,12 @@ func (atlr *AdminTransferLeaseRequest) ShallowCopy() Request { return &shallowCopy } +// ShallowCopy implements the Request interface. +func (acrr *AdminChangeReplicasRequest) ShallowCopy() Request { + shallowCopy := *acrr + return &shallowCopy +} + // ShallowCopy implements the Request interface. func (htr *HeartbeatTxnRequest) ShallowCopy() Request { shallowCopy := *htr @@ -863,22 +872,23 @@ func (drr *DeleteRangeRequest) flags() int { } return isWrite | isTxn | isTxnWrite | isRange } -func (*ScanRequest) flags() int { return isRead | isRange | isTxn } -func (*ReverseScanRequest) flags() int { return isRead | isRange | isReverse | isTxn } -func (*BeginTransactionRequest) flags() int { return isWrite | isTxn } -func (*EndTransactionRequest) flags() int { return isWrite | isTxn | isAlone } -func (*AdminSplitRequest) flags() int { return isAdmin | isAlone } -func (*AdminMergeRequest) flags() int { return isAdmin | isAlone } -func (*AdminTransferLeaseRequest) flags() int { return isAdmin | isAlone } -func (*HeartbeatTxnRequest) flags() int { return isWrite | isTxn } -func (*GCRequest) flags() int { return isWrite | isRange } -func (*PushTxnRequest) flags() int { return isWrite | isAlone } -func (*QueryTxnRequest) flags() int { return isRead | isAlone } -func (*RangeLookupRequest) flags() int { return isRead } -func (*ResolveIntentRequest) flags() int { return isWrite } -func (*ResolveIntentRangeRequest) flags() int { return isWrite | isRange } -func (*NoopRequest) flags() int { return isRead } // slightly special -func (*TruncateLogRequest) flags() int { return isWrite | isNonKV } +func (*ScanRequest) flags() int { return isRead | isRange | isTxn } +func (*ReverseScanRequest) flags() int { return isRead | isRange | isReverse | isTxn } +func (*BeginTransactionRequest) flags() int { return isWrite | isTxn } +func (*EndTransactionRequest) flags() int { return isWrite | isTxn | isAlone } +func (*AdminSplitRequest) flags() int { return isAdmin | isAlone } +func (*AdminMergeRequest) flags() int { return isAdmin | isAlone } +func (*AdminTransferLeaseRequest) flags() int { return isAdmin | isAlone } +func (*AdminChangeReplicasRequest) flags() int { return isAdmin | isAlone } +func (*HeartbeatTxnRequest) flags() int { return isWrite | isTxn } +func (*GCRequest) flags() int { return isWrite | isRange } +func (*PushTxnRequest) flags() int { return isWrite | isAlone } +func (*QueryTxnRequest) flags() int { return isRead | isAlone } +func (*RangeLookupRequest) flags() int { return isRead } +func (*ResolveIntentRequest) flags() int { return isWrite } +func (*ResolveIntentRangeRequest) flags() int { return isWrite | isRange } +func (*NoopRequest) flags() int { return isRead } // slightly special +func (*TruncateLogRequest) flags() int { return isWrite | isNonKV } // MergeRequests are considered "non KV" because they do not need to be gated // by the command queue (reordering is ok) and they operate on non-MVCC data so diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index 72f33bd717b4..64469c5a9e91 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -48,6 +48,8 @@ AdminMergeResponse AdminTransferLeaseRequest AdminTransferLeaseResponse + AdminChangeReplicasRequest + AdminChangeReplicasResponse RangeLookupRequest RangeLookupResponse HeartbeatTxnRequest @@ -818,6 +820,29 @@ func (m *AdminTransferLeaseResponse) String() string { return proto.C func (*AdminTransferLeaseResponse) ProtoMessage() {} func (*AdminTransferLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{33} } +// An AdminChangeReplicasRequest is the argument to the AdminChangeReplicas() +// method. A change replicas operation allows adding or removing a set of +// replicas for a range. +type AdminChangeReplicasRequest struct { + Span `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` + ChangeType ReplicaChangeType `protobuf:"varint,2,opt,name=change_type,json=changeType,enum=cockroach.roachpb.ReplicaChangeType" json:"change_type"` + Targets []ReplicationTarget `protobuf:"bytes,3,rep,name=targets" json:"targets"` +} + +func (m *AdminChangeReplicasRequest) Reset() { *m = AdminChangeReplicasRequest{} } +func (m *AdminChangeReplicasRequest) String() string { return proto.CompactTextString(m) } +func (*AdminChangeReplicasRequest) ProtoMessage() {} +func (*AdminChangeReplicasRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{34} } + +type AdminChangeReplicasResponse struct { + ResponseHeader `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` +} + +func (m *AdminChangeReplicasResponse) Reset() { *m = AdminChangeReplicasResponse{} } +func (m *AdminChangeReplicasResponse) String() string { return proto.CompactTextString(m) } +func (*AdminChangeReplicasResponse) ProtoMessage() {} +func (*AdminChangeReplicasResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{35} } + // A RangeLookupRequest is arguments to the RangeLookup() method. A // forward lookup request returns a range containing the requested // key. A reverse lookup request returns a range containing the @@ -840,7 +865,7 @@ type RangeLookupRequest struct { func (m *RangeLookupRequest) Reset() { *m = RangeLookupRequest{} } func (m *RangeLookupRequest) String() string { return proto.CompactTextString(m) } func (*RangeLookupRequest) ProtoMessage() {} -func (*RangeLookupRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{34} } +func (*RangeLookupRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{36} } // A RangeLookupResponse is the return value from the RangeLookup() // method. It returns metadata for the range containing the requested @@ -856,7 +881,7 @@ type RangeLookupResponse struct { func (m *RangeLookupResponse) Reset() { *m = RangeLookupResponse{} } func (m *RangeLookupResponse) String() string { return proto.CompactTextString(m) } func (*RangeLookupResponse) ProtoMessage() {} -func (*RangeLookupResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{35} } +func (*RangeLookupResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{37} } // A HeartbeatTxnRequest is arguments to the HeartbeatTxn() // method. It's sent by transaction coordinators to let the system @@ -871,7 +896,7 @@ type HeartbeatTxnRequest struct { func (m *HeartbeatTxnRequest) Reset() { *m = HeartbeatTxnRequest{} } func (m *HeartbeatTxnRequest) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnRequest) ProtoMessage() {} -func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{36} } +func (*HeartbeatTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{38} } // A HeartbeatTxnResponse is the return value from the HeartbeatTxn() // method. It returns the transaction info in the response header. The @@ -884,7 +909,7 @@ type HeartbeatTxnResponse struct { func (m *HeartbeatTxnResponse) Reset() { *m = HeartbeatTxnResponse{} } func (m *HeartbeatTxnResponse) String() string { return proto.CompactTextString(m) } func (*HeartbeatTxnResponse) ProtoMessage() {} -func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{37} } +func (*HeartbeatTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{39} } // A GCRequest is arguments to the GC() method. It's sent by range // lease holders after scanning range data to find expired MVCC values. @@ -901,7 +926,7 @@ type GCRequest struct { func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} -func (*GCRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{38} } +func (*GCRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{40} } type GCRequest_GCKey struct { Key Key `protobuf:"bytes,1,opt,name=key,casttype=Key" json:"key,omitempty"` @@ -911,7 +936,7 @@ type GCRequest_GCKey struct { func (m *GCRequest_GCKey) Reset() { *m = GCRequest_GCKey{} } func (m *GCRequest_GCKey) String() string { return proto.CompactTextString(m) } func (*GCRequest_GCKey) ProtoMessage() {} -func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{38, 0} } +func (*GCRequest_GCKey) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{40, 0} } // A GCResponse is the return value from the GC() method. type GCResponse struct { @@ -921,7 +946,7 @@ type GCResponse struct { func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} -func (*GCResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{39} } +func (*GCResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{41} } // A PushTxnRequest is arguments to the PushTxn() method. It's sent by // readers or writers which have encountered an "intent" laid down by @@ -978,7 +1003,7 @@ type PushTxnRequest struct { func (m *PushTxnRequest) Reset() { *m = PushTxnRequest{} } func (m *PushTxnRequest) String() string { return proto.CompactTextString(m) } func (*PushTxnRequest) ProtoMessage() {} -func (*PushTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{40} } +func (*PushTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{42} } // A PushTxnResponse is the return value from the PushTxn() method. It // returns success and the resulting state of PusheeTxn if the @@ -997,7 +1022,7 @@ type PushTxnResponse struct { func (m *PushTxnResponse) Reset() { *m = PushTxnResponse{} } func (m *PushTxnResponse) String() string { return proto.CompactTextString(m) } func (*PushTxnResponse) ProtoMessage() {} -func (*PushTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{41} } +func (*PushTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{43} } // A QueryTxnResponse is arguments to the QueryTxn() method. It's sent // by transactions which are waiting to push another transaction because @@ -1012,7 +1037,7 @@ type QueryTxnRequest struct { func (m *QueryTxnRequest) Reset() { *m = QueryTxnRequest{} } func (m *QueryTxnRequest) String() string { return proto.CompactTextString(m) } func (*QueryTxnRequest) ProtoMessage() {} -func (*QueryTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{42} } +func (*QueryTxnRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{44} } // A QueryTxnResponse is the return value from the QueryTxn() method. type QueryTxnResponse struct { @@ -1026,7 +1051,7 @@ type QueryTxnResponse struct { func (m *QueryTxnResponse) Reset() { *m = QueryTxnResponse{} } func (m *QueryTxnResponse) String() string { return proto.CompactTextString(m) } func (*QueryTxnResponse) ProtoMessage() {} -func (*QueryTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{43} } +func (*QueryTxnResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{45} } // A ResolveIntentRequest is arguments to the ResolveIntent() // method. It is sent by transaction coordinators after success @@ -1046,7 +1071,7 @@ type ResolveIntentRequest struct { func (m *ResolveIntentRequest) Reset() { *m = ResolveIntentRequest{} } func (m *ResolveIntentRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRequest) ProtoMessage() {} -func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{44} } +func (*ResolveIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{46} } // A ResolveIntentResponse is the return value from the // ResolveIntent() method. @@ -1057,7 +1082,7 @@ type ResolveIntentResponse struct { func (m *ResolveIntentResponse) Reset() { *m = ResolveIntentResponse{} } func (m *ResolveIntentResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentResponse) ProtoMessage() {} -func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{45} } +func (*ResolveIntentResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{47} } // A ResolveIntentRangeRequest is arguments to the ResolveIntentRange() method. // It is sent by transaction coordinators after success calling PushTxn to @@ -1077,7 +1102,7 @@ type ResolveIntentRangeRequest struct { func (m *ResolveIntentRangeRequest) Reset() { *m = ResolveIntentRangeRequest{} } func (m *ResolveIntentRangeRequest) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeRequest) ProtoMessage() {} -func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{46} } +func (*ResolveIntentRangeRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{48} } // A NoopResponse is the return value from a no-op operation. type NoopResponse struct { @@ -1086,7 +1111,7 @@ type NoopResponse struct { func (m *NoopResponse) Reset() { *m = NoopResponse{} } func (m *NoopResponse) String() string { return proto.CompactTextString(m) } func (*NoopResponse) ProtoMessage() {} -func (*NoopResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{47} } +func (*NoopResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{49} } // A NoopRequest is a no-op. type NoopRequest struct { @@ -1095,7 +1120,7 @@ type NoopRequest struct { func (m *NoopRequest) Reset() { *m = NoopRequest{} } func (m *NoopRequest) String() string { return proto.CompactTextString(m) } func (*NoopRequest) ProtoMessage() {} -func (*NoopRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{48} } +func (*NoopRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} } // A ResolveIntentRangeResponse is the return value from the // ResolveIntent() method. @@ -1106,7 +1131,7 @@ type ResolveIntentRangeResponse struct { func (m *ResolveIntentRangeResponse) Reset() { *m = ResolveIntentRangeResponse{} } func (m *ResolveIntentRangeResponse) String() string { return proto.CompactTextString(m) } func (*ResolveIntentRangeResponse) ProtoMessage() {} -func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{49} } +func (*ResolveIntentRangeResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} } // A MergeRequest contains arguments to the Merge() method. It // specifies a key and a value which should be merged into the @@ -1119,7 +1144,7 @@ type MergeRequest struct { func (m *MergeRequest) Reset() { *m = MergeRequest{} } func (m *MergeRequest) String() string { return proto.CompactTextString(m) } func (*MergeRequest) ProtoMessage() {} -func (*MergeRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} } +func (*MergeRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} } // MergeResponse is the response to a Merge() operation. type MergeResponse struct { @@ -1129,7 +1154,7 @@ type MergeResponse struct { func (m *MergeResponse) Reset() { *m = MergeResponse{} } func (m *MergeResponse) String() string { return proto.CompactTextString(m) } func (*MergeResponse) ProtoMessage() {} -func (*MergeResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} } +func (*MergeResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} } // TruncateLogRequest is used to remove a prefix of the raft log. While there // is no requirement for correctness that the raft log truncation be synchronized across @@ -1150,7 +1175,7 @@ type TruncateLogRequest struct { func (m *TruncateLogRequest) Reset() { *m = TruncateLogRequest{} } func (m *TruncateLogRequest) String() string { return proto.CompactTextString(m) } func (*TruncateLogRequest) ProtoMessage() {} -func (*TruncateLogRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} } +func (*TruncateLogRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} } // TruncateLogResponse is the response to a TruncateLog() operation. type TruncateLogResponse struct { @@ -1160,7 +1185,7 @@ type TruncateLogResponse struct { func (m *TruncateLogResponse) Reset() { *m = TruncateLogResponse{} } func (m *TruncateLogResponse) String() string { return proto.CompactTextString(m) } func (*TruncateLogResponse) ProtoMessage() {} -func (*TruncateLogResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} } +func (*TruncateLogResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} } // A RequestLeaseRequest is arguments to the RequestLease() // method. It is sent by the store on behalf of one of its ranges upon receipt @@ -1176,7 +1201,7 @@ type RequestLeaseRequest struct { func (m *RequestLeaseRequest) Reset() { *m = RequestLeaseRequest{} } func (m *RequestLeaseRequest) String() string { return proto.CompactTextString(m) } func (*RequestLeaseRequest) ProtoMessage() {} -func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} } +func (*RequestLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} } // A TransferLeaseRequest represents the arguments to the TransferLease() // method. It is sent by a replica that currently holds the range lease and @@ -1201,7 +1226,7 @@ type TransferLeaseRequest struct { func (m *TransferLeaseRequest) Reset() { *m = TransferLeaseRequest{} } func (m *TransferLeaseRequest) String() string { return proto.CompactTextString(m) } func (*TransferLeaseRequest) ProtoMessage() {} -func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} } +func (*TransferLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} } // LeaseInfoRequest is the argument to the LeaseInfo() method, for getting // information about a range's lease. @@ -1214,7 +1239,7 @@ type LeaseInfoRequest struct { func (m *LeaseInfoRequest) Reset() { *m = LeaseInfoRequest{} } func (m *LeaseInfoRequest) String() string { return proto.CompactTextString(m) } func (*LeaseInfoRequest) ProtoMessage() {} -func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} } +func (*LeaseInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} } // LeaseInfoResponse is the response to a LeaseInfo() operation. type LeaseInfoResponse struct { @@ -1228,7 +1253,7 @@ type LeaseInfoResponse struct { func (m *LeaseInfoResponse) Reset() { *m = LeaseInfoResponse{} } func (m *LeaseInfoResponse) String() string { return proto.CompactTextString(m) } func (*LeaseInfoResponse) ProtoMessage() {} -func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} } +func (*LeaseInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} } // A RequestLeaseResponse is the response to a RequestLease() or TransferLease() // operation. @@ -1239,7 +1264,7 @@ type RequestLeaseResponse struct { func (m *RequestLeaseResponse) Reset() { *m = RequestLeaseResponse{} } func (m *RequestLeaseResponse) String() string { return proto.CompactTextString(m) } func (*RequestLeaseResponse) ProtoMessage() {} -func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} } +func (*RequestLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} } // A ComputeChecksumRequest is arguments to the ComputeChecksum() method, to // start computing the checksum for the specified range at the snapshot for this @@ -1261,7 +1286,7 @@ type ComputeChecksumRequest struct { func (m *ComputeChecksumRequest) Reset() { *m = ComputeChecksumRequest{} } func (m *ComputeChecksumRequest) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumRequest) ProtoMessage() {} -func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} } +func (*ComputeChecksumRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} } // A ComputeChecksumResponse is the response to a ComputeChecksum() operation. type ComputeChecksumResponse struct { @@ -1271,7 +1296,7 @@ type ComputeChecksumResponse struct { func (m *ComputeChecksumResponse) Reset() { *m = ComputeChecksumResponse{} } func (m *ComputeChecksumResponse) String() string { return proto.CompactTextString(m) } func (*ComputeChecksumResponse) ProtoMessage() {} -func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} } +func (*ComputeChecksumResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} } type DeprecatedVerifyChecksumRequest struct { Span `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` @@ -1281,7 +1306,7 @@ func (m *DeprecatedVerifyChecksumRequest) Reset() { *m = DeprecatedVerif func (m *DeprecatedVerifyChecksumRequest) String() string { return proto.CompactTextString(m) } func (*DeprecatedVerifyChecksumRequest) ProtoMessage() {} func (*DeprecatedVerifyChecksumRequest) Descriptor() ([]byte, []int) { - return fileDescriptorApi, []int{61} + return fileDescriptorApi, []int{63} } type DeprecatedVerifyChecksumResponse struct { @@ -1292,7 +1317,7 @@ func (m *DeprecatedVerifyChecksumResponse) Reset() { *m = DeprecatedVeri func (m *DeprecatedVerifyChecksumResponse) String() string { return proto.CompactTextString(m) } func (*DeprecatedVerifyChecksumResponse) ProtoMessage() {} func (*DeprecatedVerifyChecksumResponse) Descriptor() ([]byte, []int) { - return fileDescriptorApi, []int{62} + return fileDescriptorApi, []int{64} } // KeyRewrite is rule to replace one prefix (if matching) with another. @@ -1304,7 +1329,7 @@ type KeyRewrite struct { func (m *KeyRewrite) Reset() { *m = KeyRewrite{} } func (m *KeyRewrite) String() string { return proto.CompactTextString(m) } func (*KeyRewrite) ProtoMessage() {} -func (*KeyRewrite) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} } +func (*KeyRewrite) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} } type ExportStorage struct { Provider ExportStorageProvider `protobuf:"varint,1,opt,name=provider,enum=cockroach.roachpb.ExportStorageProvider" json:"provider"` @@ -1318,7 +1343,7 @@ type ExportStorage struct { func (m *ExportStorage) Reset() { *m = ExportStorage{} } func (m *ExportStorage) String() string { return proto.CompactTextString(m) } func (*ExportStorage) ProtoMessage() {} -func (*ExportStorage) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} } +func (*ExportStorage) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} } type ExportStorage_LocalFilePath struct { Path string `protobuf:"bytes,1,opt,name=path" json:"path"` @@ -1328,7 +1353,7 @@ func (m *ExportStorage_LocalFilePath) Reset() { *m = ExportStorage_Local func (m *ExportStorage_LocalFilePath) String() string { return proto.CompactTextString(m) } func (*ExportStorage_LocalFilePath) ProtoMessage() {} func (*ExportStorage_LocalFilePath) Descriptor() ([]byte, []int) { - return fileDescriptorApi, []int{64, 0} + return fileDescriptorApi, []int{66, 0} } type ExportStorage_Http struct { @@ -1338,7 +1363,7 @@ type ExportStorage_Http struct { func (m *ExportStorage_Http) Reset() { *m = ExportStorage_Http{} } func (m *ExportStorage_Http) String() string { return proto.CompactTextString(m) } func (*ExportStorage_Http) ProtoMessage() {} -func (*ExportStorage_Http) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64, 1} } +func (*ExportStorage_Http) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66, 1} } type ExportStorage_S3 struct { Bucket string `protobuf:"bytes,1,opt,name=bucket" json:"bucket"` @@ -1351,7 +1376,7 @@ type ExportStorage_S3 struct { func (m *ExportStorage_S3) Reset() { *m = ExportStorage_S3{} } func (m *ExportStorage_S3) String() string { return proto.CompactTextString(m) } func (*ExportStorage_S3) ProtoMessage() {} -func (*ExportStorage_S3) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64, 2} } +func (*ExportStorage_S3) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66, 2} } type ExportStorage_GCS struct { Bucket string `protobuf:"bytes,1,opt,name=bucket" json:"bucket"` @@ -1361,7 +1386,7 @@ type ExportStorage_GCS struct { func (m *ExportStorage_GCS) Reset() { *m = ExportStorage_GCS{} } func (m *ExportStorage_GCS) String() string { return proto.CompactTextString(m) } func (*ExportStorage_GCS) ProtoMessage() {} -func (*ExportStorage_GCS) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64, 3} } +func (*ExportStorage_GCS) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66, 3} } type ExportStorage_Azure struct { Container string `protobuf:"bytes,1,opt,name=container" json:"container"` @@ -1373,7 +1398,7 @@ type ExportStorage_Azure struct { func (m *ExportStorage_Azure) Reset() { *m = ExportStorage_Azure{} } func (m *ExportStorage_Azure) String() string { return proto.CompactTextString(m) } func (*ExportStorage_Azure) ProtoMessage() {} -func (*ExportStorage_Azure) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64, 4} } +func (*ExportStorage_Azure) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66, 4} } // WriteBatchRequest is arguments to the WriteBatch() method, to apply the // operations encoded in a BatchRepr. @@ -1389,7 +1414,7 @@ type WriteBatchRequest struct { func (m *WriteBatchRequest) Reset() { *m = WriteBatchRequest{} } func (m *WriteBatchRequest) String() string { return proto.CompactTextString(m) } func (*WriteBatchRequest) ProtoMessage() {} -func (*WriteBatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} } +func (*WriteBatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} } // WriteBatchResponse is the response to a WriteBatch() operation. type WriteBatchResponse struct { @@ -1399,7 +1424,7 @@ type WriteBatchResponse struct { func (m *WriteBatchResponse) Reset() { *m = WriteBatchResponse{} } func (m *WriteBatchResponse) String() string { return proto.CompactTextString(m) } func (*WriteBatchResponse) ProtoMessage() {} -func (*WriteBatchResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} } +func (*WriteBatchResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} } // ExportRequest is the argument to the Export() method, to dump a keyrange into // files under a basepath. @@ -1412,7 +1437,7 @@ type ExportRequest struct { func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} -func (*ExportRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} } +func (*ExportRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69} } // ExportResponse is the response to an Export() operation. type ExportResponse struct { @@ -1423,7 +1448,7 @@ type ExportResponse struct { func (m *ExportResponse) Reset() { *m = ExportResponse{} } func (m *ExportResponse) String() string { return proto.CompactTextString(m) } func (*ExportResponse) ProtoMessage() {} -func (*ExportResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} } +func (*ExportResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{70} } // File describes a keyrange that has been dumped to a file at the given // path. @@ -1437,7 +1462,7 @@ type ExportResponse_File struct { func (m *ExportResponse_File) Reset() { *m = ExportResponse_File{} } func (m *ExportResponse_File) String() string { return proto.CompactTextString(m) } func (*ExportResponse_File) ProtoMessage() {} -func (*ExportResponse_File) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68, 0} } +func (*ExportResponse_File) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{70, 0} } // ImportRequest is the argument to the Import() method, to bulk load key/value // entries. @@ -1457,7 +1482,7 @@ type ImportRequest struct { func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} -func (*ImportRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69} } +func (*ImportRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{71} } type ImportRequest_File struct { Dir ExportStorage `protobuf:"bytes,1,opt,name=dir" json:"dir"` @@ -1468,7 +1493,7 @@ type ImportRequest_File struct { func (m *ImportRequest_File) Reset() { *m = ImportRequest_File{} } func (m *ImportRequest_File) String() string { return proto.CompactTextString(m) } func (*ImportRequest_File) ProtoMessage() {} -func (*ImportRequest_File) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69, 0} } +func (*ImportRequest_File) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{71, 0} } // ImportResponse is the response to a Import() operation. type ImportResponse struct { @@ -1478,7 +1503,7 @@ type ImportResponse struct { func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} -func (*ImportResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{70} } +func (*ImportResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{72} } // A RequestUnion contains exactly one of the optional requests. // The values added here must match those in ResponseUnion. @@ -1503,6 +1528,7 @@ type RequestUnion struct { AdminSplit *AdminSplitRequest `protobuf:"bytes,10,opt,name=admin_split,json=adminSplit" json:"admin_split,omitempty"` AdminMerge *AdminMergeRequest `protobuf:"bytes,11,opt,name=admin_merge,json=adminMerge" json:"admin_merge,omitempty"` AdminTransferLease *AdminTransferLeaseRequest `protobuf:"bytes,29,opt,name=admin_transfer_lease,json=adminTransferLease" json:"admin_transfer_lease,omitempty"` + AdminChangeReplicas *AdminChangeReplicasRequest `protobuf:"bytes,35,opt,name=admin_change_replicas,json=adminChangeReplicas" json:"admin_change_replicas,omitempty"` HeartbeatTxn *HeartbeatTxnRequest `protobuf:"bytes,12,opt,name=heartbeat_txn,json=heartbeatTxn" json:"heartbeat_txn,omitempty"` Gc *GCRequest `protobuf:"bytes,13,opt,name=gc" json:"gc,omitempty"` PushTxn *PushTxnRequest `protobuf:"bytes,14,opt,name=push_txn,json=pushTxn" json:"push_txn,omitempty"` @@ -1530,7 +1556,7 @@ type RequestUnion struct { func (m *RequestUnion) Reset() { *m = RequestUnion{} } func (m *RequestUnion) String() string { return proto.CompactTextString(m) } func (*RequestUnion) ProtoMessage() {} -func (*RequestUnion) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{71} } +func (*RequestUnion) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{73} } // A ResponseUnion contains exactly one of the optional responses. // The values added here must match those in RequestUnion. @@ -1552,6 +1578,7 @@ type ResponseUnion struct { AdminSplit *AdminSplitResponse `protobuf:"bytes,10,opt,name=admin_split,json=adminSplit" json:"admin_split,omitempty"` AdminMerge *AdminMergeResponse `protobuf:"bytes,11,opt,name=admin_merge,json=adminMerge" json:"admin_merge,omitempty"` AdminTransferLease *AdminTransferLeaseResponse `protobuf:"bytes,29,opt,name=admin_transfer_lease,json=adminTransferLease" json:"admin_transfer_lease,omitempty"` + AdminChangeReplicas *AdminChangeReplicasResponse `protobuf:"bytes,35,opt,name=admin_change_replicas,json=adminChangeReplicas" json:"admin_change_replicas,omitempty"` HeartbeatTxn *HeartbeatTxnResponse `protobuf:"bytes,12,opt,name=heartbeat_txn,json=heartbeatTxn" json:"heartbeat_txn,omitempty"` Gc *GCResponse `protobuf:"bytes,13,opt,name=gc" json:"gc,omitempty"` PushTxn *PushTxnResponse `protobuf:"bytes,14,opt,name=push_txn,json=pushTxn" json:"push_txn,omitempty"` @@ -1578,7 +1605,7 @@ type ResponseUnion struct { func (m *ResponseUnion) Reset() { *m = ResponseUnion{} } func (m *ResponseUnion) String() string { return proto.CompactTextString(m) } func (*ResponseUnion) ProtoMessage() {} -func (*ResponseUnion) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{72} } +func (*ResponseUnion) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{74} } // A Header is attached to a BatchRequest, encapsulating routing and auxiliary // information required for executing it. @@ -1642,7 +1669,7 @@ type Header struct { func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} -func (*Header) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{73} } +func (*Header) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{75} } // A BatchRequest contains one or more requests to be executed in // parallel, or if applicable (based on write-only commands and @@ -1654,7 +1681,7 @@ type BatchRequest struct { func (m *BatchRequest) Reset() { *m = BatchRequest{} } func (*BatchRequest) ProtoMessage() {} -func (*BatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{74} } +func (*BatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{76} } // A BatchResponse contains one or more responses, one per request // corresponding to the requests in the matching BatchRequest. The @@ -1667,7 +1694,7 @@ type BatchResponse struct { func (m *BatchResponse) Reset() { *m = BatchResponse{} } func (*BatchResponse) ProtoMessage() {} -func (*BatchResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{75} } +func (*BatchResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{77} } type BatchResponse_Header struct { // error is non-nil if an error occurred. @@ -1691,7 +1718,7 @@ type BatchResponse_Header struct { func (m *BatchResponse_Header) Reset() { *m = BatchResponse_Header{} } func (m *BatchResponse_Header) String() string { return proto.CompactTextString(m) } func (*BatchResponse_Header) ProtoMessage() {} -func (*BatchResponse_Header) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{75, 0} } +func (*BatchResponse_Header) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{77, 0} } func init() { proto.RegisterType((*RangeInfo)(nil), "cockroach.roachpb.RangeInfo") @@ -1728,6 +1755,8 @@ func init() { proto.RegisterType((*AdminMergeResponse)(nil), "cockroach.roachpb.AdminMergeResponse") proto.RegisterType((*AdminTransferLeaseRequest)(nil), "cockroach.roachpb.AdminTransferLeaseRequest") proto.RegisterType((*AdminTransferLeaseResponse)(nil), "cockroach.roachpb.AdminTransferLeaseResponse") + proto.RegisterType((*AdminChangeReplicasRequest)(nil), "cockroach.roachpb.AdminChangeReplicasRequest") + proto.RegisterType((*AdminChangeReplicasResponse)(nil), "cockroach.roachpb.AdminChangeReplicasResponse") proto.RegisterType((*RangeLookupRequest)(nil), "cockroach.roachpb.RangeLookupRequest") proto.RegisterType((*RangeLookupResponse)(nil), "cockroach.roachpb.RangeLookupResponse") proto.RegisterType((*HeartbeatTxnRequest)(nil), "cockroach.roachpb.HeartbeatTxnRequest") @@ -3067,7 +3096,7 @@ func (m *AdminTransferLeaseResponse) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *RangeLookupRequest) Marshal() (dAtA []byte, err error) { +func (m *AdminChangeReplicasRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -3077,7 +3106,7 @@ func (m *RangeLookupRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RangeLookupRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *AdminChangeReplicasRequest) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -3092,6 +3121,73 @@ func (m *RangeLookupRequest) MarshalTo(dAtA []byte) (int, error) { i += n44 dAtA[i] = 0x10 i++ + i = encodeVarintApi(dAtA, i, uint64(m.ChangeType)) + if len(m.Targets) > 0 { + for _, msg := range m.Targets { + dAtA[i] = 0x1a + i++ + i = encodeVarintApi(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *AdminChangeReplicasResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdminChangeReplicasResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) + n45, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n45 + return i, nil +} + +func (m *RangeLookupRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RangeLookupRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) + n46, err := m.Span.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n46 + dAtA[i] = 0x10 + i++ i = encodeVarintApi(dAtA, i, uint64(m.MaxRanges)) dAtA[i] = 0x20 i++ @@ -3122,11 +3218,11 @@ func (m *RangeLookupResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n45, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n47, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n45 + i += n47 if len(m.Ranges) > 0 { for _, msg := range m.Ranges { dAtA[i] = 0x12 @@ -3172,19 +3268,19 @@ func (m *HeartbeatTxnRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n46, err := m.Span.MarshalTo(dAtA[i:]) + n48, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n46 + i += n48 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Now.Size())) - n47, err := m.Now.MarshalTo(dAtA[i:]) + n49, err := m.Now.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n47 + i += n49 return i, nil } @@ -3206,11 +3302,11 @@ func (m *HeartbeatTxnResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n48, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n50, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n48 + i += n50 return i, nil } @@ -3232,11 +3328,11 @@ func (m *GCRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n49, err := m.Span.MarshalTo(dAtA[i:]) + n51, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n49 + i += n51 if len(m.Keys) > 0 { for _, msg := range m.Keys { dAtA[i] = 0x1a @@ -3252,19 +3348,19 @@ func (m *GCRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Threshold.Size())) - n50, err := m.Threshold.MarshalTo(dAtA[i:]) + n52, err := m.Threshold.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n50 + i += n52 dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.TxnSpanGCThreshold.Size())) - n51, err := m.TxnSpanGCThreshold.MarshalTo(dAtA[i:]) + n53, err := m.TxnSpanGCThreshold.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n51 + i += n53 return i, nil } @@ -3292,11 +3388,11 @@ func (m *GCRequest_GCKey) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp.Size())) - n52, err := m.Timestamp.MarshalTo(dAtA[i:]) + n54, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n52 + i += n54 return i, nil } @@ -3318,11 +3414,11 @@ func (m *GCResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n53, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n55, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n53 + i += n55 return i, nil } @@ -3344,43 +3440,43 @@ func (m *PushTxnRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n54, err := m.Span.MarshalTo(dAtA[i:]) + n56, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n54 + i += n56 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.PusherTxn.Size())) - n55, err := m.PusherTxn.MarshalTo(dAtA[i:]) + n57, err := m.PusherTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n55 + i += n57 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.PusheeTxn.Size())) - n56, err := m.PusheeTxn.MarshalTo(dAtA[i:]) + n58, err := m.PusheeTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n56 + i += n58 dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushTo.Size())) - n57, err := m.PushTo.MarshalTo(dAtA[i:]) + n59, err := m.PushTo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n57 + i += n59 dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Now.Size())) - n58, err := m.Now.MarshalTo(dAtA[i:]) + n60, err := m.Now.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n58 + i += n60 dAtA[i] = 0x30 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushType)) @@ -3421,19 +3517,19 @@ func (m *PushTxnResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n59, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n61, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n59 + i += n61 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.PusheeTxn.Size())) - n60, err := m.PusheeTxn.MarshalTo(dAtA[i:]) + n62, err := m.PusheeTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n60 + i += n62 return i, nil } @@ -3455,19 +3551,19 @@ func (m *QueryTxnRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n61, err := m.Span.MarshalTo(dAtA[i:]) + n63, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n61 + i += n63 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Txn.Size())) - n62, err := m.Txn.MarshalTo(dAtA[i:]) + n64, err := m.Txn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n62 + i += n64 return i, nil } @@ -3489,19 +3585,19 @@ func (m *QueryTxnResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n63, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n65, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n63 + i += n65 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueriedTxn.Size())) - n64, err := m.QueriedTxn.MarshalTo(dAtA[i:]) + n66, err := m.QueriedTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n64 + i += n66 if len(m.WaitingTxns) > 0 { for _, msg := range m.WaitingTxns { dAtA[i] = 0x1a @@ -3535,19 +3631,19 @@ func (m *ResolveIntentRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n65, err := m.Span.MarshalTo(dAtA[i:]) + n67, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n65 + i += n67 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.IntentTxn.Size())) - n66, err := m.IntentTxn.MarshalTo(dAtA[i:]) + n68, err := m.IntentTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n66 + i += n68 dAtA[i] = 0x18 i++ i = encodeVarintApi(dAtA, i, uint64(m.Status)) @@ -3580,11 +3676,11 @@ func (m *ResolveIntentResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n67, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n69, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n67 + i += n69 return i, nil } @@ -3606,19 +3702,19 @@ func (m *ResolveIntentRangeRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n68, err := m.Span.MarshalTo(dAtA[i:]) + n70, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n68 + i += n70 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.IntentTxn.Size())) - n69, err := m.IntentTxn.MarshalTo(dAtA[i:]) + n71, err := m.IntentTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n69 + i += n71 dAtA[i] = 0x18 i++ i = encodeVarintApi(dAtA, i, uint64(m.Status)) @@ -3687,11 +3783,11 @@ func (m *ResolveIntentRangeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n70, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n72, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n70 + i += n72 return i, nil } @@ -3713,19 +3809,19 @@ func (m *MergeRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n71, err := m.Span.MarshalTo(dAtA[i:]) + n73, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n71 + i += n73 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Value.Size())) - n72, err := m.Value.MarshalTo(dAtA[i:]) + n74, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n72 + i += n74 return i, nil } @@ -3747,11 +3843,11 @@ func (m *MergeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n73, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n75, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n73 + i += n75 return i, nil } @@ -3773,11 +3869,11 @@ func (m *TruncateLogRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n74, err := m.Span.MarshalTo(dAtA[i:]) + n76, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n74 + i += n76 dAtA[i] = 0x10 i++ i = encodeVarintApi(dAtA, i, uint64(m.Index)) @@ -3805,11 +3901,11 @@ func (m *TruncateLogResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n75, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n77, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n75 + i += n77 return i, nil } @@ -3831,28 +3927,28 @@ func (m *RequestLeaseRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n76, err := m.Span.MarshalTo(dAtA[i:]) + n78, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n76 + i += n78 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Lease.Size())) - n77, err := m.Lease.MarshalTo(dAtA[i:]) + n79, err := m.Lease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n77 + i += n79 if m.PrevLease != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.PrevLease.Size())) - n78, err := m.PrevLease.MarshalTo(dAtA[i:]) + n80, err := m.PrevLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n78 + i += n80 } return i, nil } @@ -3875,28 +3971,28 @@ func (m *TransferLeaseRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n79, err := m.Span.MarshalTo(dAtA[i:]) + n81, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n79 + i += n81 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Lease.Size())) - n80, err := m.Lease.MarshalTo(dAtA[i:]) + n82, err := m.Lease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n80 + i += n82 if m.PrevLease != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.PrevLease.Size())) - n81, err := m.PrevLease.MarshalTo(dAtA[i:]) + n83, err := m.PrevLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n81 + i += n83 } return i, nil } @@ -3919,11 +4015,11 @@ func (m *LeaseInfoRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n82, err := m.Span.MarshalTo(dAtA[i:]) + n84, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n82 + i += n84 return i, nil } @@ -3945,20 +4041,20 @@ func (m *LeaseInfoResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n83, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n85, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n83 + i += n85 if m.Lease != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Lease.Size())) - n84, err := m.Lease.MarshalTo(dAtA[i:]) + n86, err := m.Lease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n84 + i += n86 } return i, nil } @@ -3981,11 +4077,11 @@ func (m *RequestLeaseResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n85, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n87, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n85 + i += n87 return i, nil } @@ -4007,22 +4103,22 @@ func (m *ComputeChecksumRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n86, err := m.Span.MarshalTo(dAtA[i:]) + n88, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n86 + i += n88 dAtA[i] = 0x10 i++ i = encodeVarintApi(dAtA, i, uint64(m.Version)) dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.ChecksumID.Size())) - n87, err := m.ChecksumID.MarshalTo(dAtA[i:]) + n89, err := m.ChecksumID.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n87 + i += n89 dAtA[i] = 0x20 i++ if m.Snapshot { @@ -4052,11 +4148,11 @@ func (m *ComputeChecksumResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n88, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n90, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n88 + i += n90 return i, nil } @@ -4078,11 +4174,11 @@ func (m *DeprecatedVerifyChecksumRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n89, err := m.Span.MarshalTo(dAtA[i:]) + n91, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n89 + i += n91 return i, nil } @@ -4104,11 +4200,11 @@ func (m *DeprecatedVerifyChecksumResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n90, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n92, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n90 + i += n92 return i, nil } @@ -4163,48 +4259,48 @@ func (m *ExportStorage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.LocalFile.Size())) - n91, err := m.LocalFile.MarshalTo(dAtA[i:]) + n93, err := m.LocalFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n91 + i += n93 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.HttpPath.Size())) - n92, err := m.HttpPath.MarshalTo(dAtA[i:]) + n94, err := m.HttpPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n92 + i += n94 if m.GoogleCloudConfig != nil { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.GoogleCloudConfig.Size())) - n93, err := m.GoogleCloudConfig.MarshalTo(dAtA[i:]) + n95, err := m.GoogleCloudConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n93 + i += n95 } if m.S3Config != nil { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.S3Config.Size())) - n94, err := m.S3Config.MarshalTo(dAtA[i:]) + n96, err := m.S3Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n94 + i += n96 } if m.AzureConfig != nil { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.AzureConfig.Size())) - n95, err := m.AzureConfig.MarshalTo(dAtA[i:]) + n97, err := m.AzureConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n95 + i += n97 } return i, nil } @@ -4369,19 +4465,19 @@ func (m *WriteBatchRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n96, err := m.Span.MarshalTo(dAtA[i:]) + n98, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n96 + i += n98 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.DataSpan.Size())) - n97, err := m.DataSpan.MarshalTo(dAtA[i:]) + n99, err := m.DataSpan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n97 + i += n99 if m.Data != nil { dAtA[i] = 0x1a i++ @@ -4409,11 +4505,11 @@ func (m *WriteBatchResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n98, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n100, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n98 + i += n100 return i, nil } @@ -4435,27 +4531,27 @@ func (m *ExportRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n99, err := m.Span.MarshalTo(dAtA[i:]) + n101, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n99 + i += n101 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Storage.Size())) - n100, err := m.Storage.MarshalTo(dAtA[i:]) + n102, err := m.Storage.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n100 + i += n102 dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.StartTime.Size())) - n101, err := m.StartTime.MarshalTo(dAtA[i:]) + n103, err := m.StartTime.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n101 + i += n103 return i, nil } @@ -4477,11 +4573,11 @@ func (m *ExportResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n102, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n104, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n102 + i += n104 if len(m.Files) > 0 { for _, msg := range m.Files { dAtA[i] = 0x12 @@ -4515,11 +4611,11 @@ func (m *ExportResponse_File) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n103, err := m.Span.MarshalTo(dAtA[i:]) + n105, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n103 + i += n105 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(len(m.Path))) @@ -4554,11 +4650,11 @@ func (m *ImportRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Span.Size())) - n104, err := m.Span.MarshalTo(dAtA[i:]) + n106, err := m.Span.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n104 + i += n106 if len(m.Files) > 0 { for _, msg := range m.Files { dAtA[i] = 0x12 @@ -4574,11 +4670,11 @@ func (m *ImportRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.DataSpan.Size())) - n105, err := m.DataSpan.MarshalTo(dAtA[i:]) + n107, err := m.DataSpan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n105 + i += n107 if len(m.KeyRewrites) > 0 { for _, msg := range m.KeyRewrites { dAtA[i] = 0x22 @@ -4612,11 +4708,11 @@ func (m *ImportRequest_File) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Dir.Size())) - n106, err := m.Dir.MarshalTo(dAtA[i:]) + n108, err := m.Dir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n106 + i += n108 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(len(m.Path))) @@ -4648,11 +4744,11 @@ func (m *ImportResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.ResponseHeader.Size())) - n107, err := m.ResponseHeader.MarshalTo(dAtA[i:]) + n109, err := m.ResponseHeader.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n107 + i += n109 return i, nil } @@ -4675,151 +4771,151 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Get.Size())) - n108, err := m.Get.MarshalTo(dAtA[i:]) + n110, err := m.Get.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n108 + i += n110 } if m.Put != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Put.Size())) - n109, err := m.Put.MarshalTo(dAtA[i:]) + n111, err := m.Put.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n109 + i += n111 } if m.ConditionalPut != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.ConditionalPut.Size())) - n110, err := m.ConditionalPut.MarshalTo(dAtA[i:]) + n112, err := m.ConditionalPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n110 + i += n112 } if m.Increment != nil { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Increment.Size())) - n111, err := m.Increment.MarshalTo(dAtA[i:]) + n113, err := m.Increment.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n111 + i += n113 } if m.Delete != nil { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Delete.Size())) - n112, err := m.Delete.MarshalTo(dAtA[i:]) + n114, err := m.Delete.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n112 + i += n114 } if m.DeleteRange != nil { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeleteRange.Size())) - n113, err := m.DeleteRange.MarshalTo(dAtA[i:]) + n115, err := m.DeleteRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n113 + i += n115 } if m.Scan != nil { dAtA[i] = 0x3a i++ i = encodeVarintApi(dAtA, i, uint64(m.Scan.Size())) - n114, err := m.Scan.MarshalTo(dAtA[i:]) + n116, err := m.Scan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n114 + i += n116 } if m.BeginTransaction != nil { dAtA[i] = 0x42 i++ i = encodeVarintApi(dAtA, i, uint64(m.BeginTransaction.Size())) - n115, err := m.BeginTransaction.MarshalTo(dAtA[i:]) + n117, err := m.BeginTransaction.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n115 + i += n117 } if m.EndTransaction != nil { dAtA[i] = 0x4a i++ i = encodeVarintApi(dAtA, i, uint64(m.EndTransaction.Size())) - n116, err := m.EndTransaction.MarshalTo(dAtA[i:]) + n118, err := m.EndTransaction.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n116 + i += n118 } if m.AdminSplit != nil { dAtA[i] = 0x52 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminSplit.Size())) - n117, err := m.AdminSplit.MarshalTo(dAtA[i:]) + n119, err := m.AdminSplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n117 + i += n119 } if m.AdminMerge != nil { dAtA[i] = 0x5a i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminMerge.Size())) - n118, err := m.AdminMerge.MarshalTo(dAtA[i:]) + n120, err := m.AdminMerge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n118 + i += n120 } if m.HeartbeatTxn != nil { dAtA[i] = 0x62 i++ i = encodeVarintApi(dAtA, i, uint64(m.HeartbeatTxn.Size())) - n119, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) + n121, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n119 + i += n121 } if m.Gc != nil { dAtA[i] = 0x6a i++ i = encodeVarintApi(dAtA, i, uint64(m.Gc.Size())) - n120, err := m.Gc.MarshalTo(dAtA[i:]) + n122, err := m.Gc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n120 + i += n122 } if m.PushTxn != nil { dAtA[i] = 0x72 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushTxn.Size())) - n121, err := m.PushTxn.MarshalTo(dAtA[i:]) + n123, err := m.PushTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n121 + i += n123 } if m.RangeLookup != nil { dAtA[i] = 0x7a i++ i = encodeVarintApi(dAtA, i, uint64(m.RangeLookup.Size())) - n122, err := m.RangeLookup.MarshalTo(dAtA[i:]) + n124, err := m.RangeLookup.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n122 + i += n124 } if m.ResolveIntent != nil { dAtA[i] = 0x82 @@ -4827,11 +4923,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntent.Size())) - n123, err := m.ResolveIntent.MarshalTo(dAtA[i:]) + n125, err := m.ResolveIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n123 + i += n125 } if m.ResolveIntentRange != nil { dAtA[i] = 0x8a @@ -4839,11 +4935,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntentRange.Size())) - n124, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) + n126, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n124 + i += n126 } if m.Merge != nil { dAtA[i] = 0x92 @@ -4851,11 +4947,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Merge.Size())) - n125, err := m.Merge.MarshalTo(dAtA[i:]) + n127, err := m.Merge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n125 + i += n127 } if m.TruncateLog != nil { dAtA[i] = 0x9a @@ -4863,11 +4959,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TruncateLog.Size())) - n126, err := m.TruncateLog.MarshalTo(dAtA[i:]) + n128, err := m.TruncateLog.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n126 + i += n128 } if m.RequestLease != nil { dAtA[i] = 0xa2 @@ -4875,11 +4971,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestLease.Size())) - n127, err := m.RequestLease.MarshalTo(dAtA[i:]) + n129, err := m.RequestLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n127 + i += n129 } if m.ReverseScan != nil { dAtA[i] = 0xaa @@ -4887,11 +4983,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ReverseScan.Size())) - n128, err := m.ReverseScan.MarshalTo(dAtA[i:]) + n130, err := m.ReverseScan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n128 + i += n130 } if m.ComputeChecksum != nil { dAtA[i] = 0xb2 @@ -4899,11 +4995,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ComputeChecksum.Size())) - n129, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) + n131, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n129 + i += n131 } if m.DeprecatedVerifyChecksum != nil { dAtA[i] = 0xba @@ -4911,11 +5007,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeprecatedVerifyChecksum.Size())) - n130, err := m.DeprecatedVerifyChecksum.MarshalTo(dAtA[i:]) + n132, err := m.DeprecatedVerifyChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n130 + i += n132 } if m.CheckConsistency != nil { dAtA[i] = 0xc2 @@ -4923,11 +5019,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.CheckConsistency.Size())) - n131, err := m.CheckConsistency.MarshalTo(dAtA[i:]) + n133, err := m.CheckConsistency.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n131 + i += n133 } if m.Noop != nil { dAtA[i] = 0xca @@ -4935,11 +5031,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Noop.Size())) - n132, err := m.Noop.MarshalTo(dAtA[i:]) + n134, err := m.Noop.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n132 + i += n134 } if m.InitPut != nil { dAtA[i] = 0xd2 @@ -4947,11 +5043,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.InitPut.Size())) - n133, err := m.InitPut.MarshalTo(dAtA[i:]) + n135, err := m.InitPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n133 + i += n135 } if m.ChangeFrozen != nil { dAtA[i] = 0xda @@ -4959,11 +5055,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ChangeFrozen.Size())) - n134, err := m.ChangeFrozen.MarshalTo(dAtA[i:]) + n136, err := m.ChangeFrozen.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n134 + i += n136 } if m.TransferLease != nil { dAtA[i] = 0xe2 @@ -4971,11 +5067,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TransferLease.Size())) - n135, err := m.TransferLease.MarshalTo(dAtA[i:]) + n137, err := m.TransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n135 + i += n137 } if m.AdminTransferLease != nil { dAtA[i] = 0xea @@ -4983,11 +5079,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminTransferLease.Size())) - n136, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) + n138, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n136 + i += n138 } if m.LeaseInfo != nil { dAtA[i] = 0xf2 @@ -4995,11 +5091,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.LeaseInfo.Size())) - n137, err := m.LeaseInfo.MarshalTo(dAtA[i:]) + n139, err := m.LeaseInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n137 + i += n139 } if m.WriteBatch != nil { dAtA[i] = 0xfa @@ -5007,11 +5103,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.WriteBatch.Size())) - n138, err := m.WriteBatch.MarshalTo(dAtA[i:]) + n140, err := m.WriteBatch.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n138 + i += n140 } if m.Export != nil { dAtA[i] = 0x82 @@ -5019,11 +5115,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Export.Size())) - n139, err := m.Export.MarshalTo(dAtA[i:]) + n141, err := m.Export.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n139 + i += n141 } if m.QueryTxn != nil { dAtA[i] = 0x8a @@ -5031,11 +5127,11 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryTxn.Size())) - n140, err := m.QueryTxn.MarshalTo(dAtA[i:]) + n142, err := m.QueryTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n140 + i += n142 } if m.Import != nil { dAtA[i] = 0x92 @@ -5043,11 +5139,23 @@ func (m *RequestUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Import.Size())) - n141, err := m.Import.MarshalTo(dAtA[i:]) + n143, err := m.Import.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n141 + i += n143 + } + if m.AdminChangeReplicas != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.AdminChangeReplicas.Size())) + n144, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n144 } return i, nil } @@ -5071,151 +5179,151 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Get.Size())) - n142, err := m.Get.MarshalTo(dAtA[i:]) + n145, err := m.Get.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n142 + i += n145 } if m.Put != nil { dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Put.Size())) - n143, err := m.Put.MarshalTo(dAtA[i:]) + n146, err := m.Put.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n143 + i += n146 } if m.ConditionalPut != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.ConditionalPut.Size())) - n144, err := m.ConditionalPut.MarshalTo(dAtA[i:]) + n147, err := m.ConditionalPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n144 + i += n147 } if m.Increment != nil { dAtA[i] = 0x22 i++ i = encodeVarintApi(dAtA, i, uint64(m.Increment.Size())) - n145, err := m.Increment.MarshalTo(dAtA[i:]) + n148, err := m.Increment.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n145 + i += n148 } if m.Delete != nil { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Delete.Size())) - n146, err := m.Delete.MarshalTo(dAtA[i:]) + n149, err := m.Delete.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n146 + i += n149 } if m.DeleteRange != nil { dAtA[i] = 0x32 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeleteRange.Size())) - n147, err := m.DeleteRange.MarshalTo(dAtA[i:]) + n150, err := m.DeleteRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n147 + i += n150 } if m.Scan != nil { dAtA[i] = 0x3a i++ i = encodeVarintApi(dAtA, i, uint64(m.Scan.Size())) - n148, err := m.Scan.MarshalTo(dAtA[i:]) + n151, err := m.Scan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n148 + i += n151 } if m.BeginTransaction != nil { dAtA[i] = 0x42 i++ i = encodeVarintApi(dAtA, i, uint64(m.BeginTransaction.Size())) - n149, err := m.BeginTransaction.MarshalTo(dAtA[i:]) + n152, err := m.BeginTransaction.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n149 + i += n152 } if m.EndTransaction != nil { dAtA[i] = 0x4a i++ i = encodeVarintApi(dAtA, i, uint64(m.EndTransaction.Size())) - n150, err := m.EndTransaction.MarshalTo(dAtA[i:]) + n153, err := m.EndTransaction.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n150 + i += n153 } if m.AdminSplit != nil { dAtA[i] = 0x52 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminSplit.Size())) - n151, err := m.AdminSplit.MarshalTo(dAtA[i:]) + n154, err := m.AdminSplit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n151 + i += n154 } if m.AdminMerge != nil { dAtA[i] = 0x5a i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminMerge.Size())) - n152, err := m.AdminMerge.MarshalTo(dAtA[i:]) + n155, err := m.AdminMerge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n152 + i += n155 } if m.HeartbeatTxn != nil { dAtA[i] = 0x62 i++ i = encodeVarintApi(dAtA, i, uint64(m.HeartbeatTxn.Size())) - n153, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) + n156, err := m.HeartbeatTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n153 + i += n156 } if m.Gc != nil { dAtA[i] = 0x6a i++ i = encodeVarintApi(dAtA, i, uint64(m.Gc.Size())) - n154, err := m.Gc.MarshalTo(dAtA[i:]) + n157, err := m.Gc.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n154 + i += n157 } if m.PushTxn != nil { dAtA[i] = 0x72 i++ i = encodeVarintApi(dAtA, i, uint64(m.PushTxn.Size())) - n155, err := m.PushTxn.MarshalTo(dAtA[i:]) + n158, err := m.PushTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n155 + i += n158 } if m.RangeLookup != nil { dAtA[i] = 0x7a i++ i = encodeVarintApi(dAtA, i, uint64(m.RangeLookup.Size())) - n156, err := m.RangeLookup.MarshalTo(dAtA[i:]) + n159, err := m.RangeLookup.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n156 + i += n159 } if m.ResolveIntent != nil { dAtA[i] = 0x82 @@ -5223,11 +5331,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntent.Size())) - n157, err := m.ResolveIntent.MarshalTo(dAtA[i:]) + n160, err := m.ResolveIntent.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n157 + i += n160 } if m.ResolveIntentRange != nil { dAtA[i] = 0x8a @@ -5235,11 +5343,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ResolveIntentRange.Size())) - n158, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) + n161, err := m.ResolveIntentRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n158 + i += n161 } if m.Merge != nil { dAtA[i] = 0x92 @@ -5247,11 +5355,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Merge.Size())) - n159, err := m.Merge.MarshalTo(dAtA[i:]) + n162, err := m.Merge.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n159 + i += n162 } if m.TruncateLog != nil { dAtA[i] = 0x9a @@ -5259,11 +5367,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.TruncateLog.Size())) - n160, err := m.TruncateLog.MarshalTo(dAtA[i:]) + n163, err := m.TruncateLog.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n160 + i += n163 } if m.RequestLease != nil { dAtA[i] = 0xa2 @@ -5271,11 +5379,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.RequestLease.Size())) - n161, err := m.RequestLease.MarshalTo(dAtA[i:]) + n164, err := m.RequestLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n161 + i += n164 } if m.ReverseScan != nil { dAtA[i] = 0xaa @@ -5283,11 +5391,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ReverseScan.Size())) - n162, err := m.ReverseScan.MarshalTo(dAtA[i:]) + n165, err := m.ReverseScan.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n162 + i += n165 } if m.ComputeChecksum != nil { dAtA[i] = 0xb2 @@ -5295,11 +5403,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ComputeChecksum.Size())) - n163, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) + n166, err := m.ComputeChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n163 + i += n166 } if m.DeprecatedVerifyChecksum != nil { dAtA[i] = 0xba @@ -5307,11 +5415,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.DeprecatedVerifyChecksum.Size())) - n164, err := m.DeprecatedVerifyChecksum.MarshalTo(dAtA[i:]) + n167, err := m.DeprecatedVerifyChecksum.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n164 + i += n167 } if m.CheckConsistency != nil { dAtA[i] = 0xc2 @@ -5319,11 +5427,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.CheckConsistency.Size())) - n165, err := m.CheckConsistency.MarshalTo(dAtA[i:]) + n168, err := m.CheckConsistency.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n165 + i += n168 } if m.Noop != nil { dAtA[i] = 0xca @@ -5331,11 +5439,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.Noop.Size())) - n166, err := m.Noop.MarshalTo(dAtA[i:]) + n169, err := m.Noop.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n166 + i += n169 } if m.InitPut != nil { dAtA[i] = 0xd2 @@ -5343,11 +5451,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.InitPut.Size())) - n167, err := m.InitPut.MarshalTo(dAtA[i:]) + n170, err := m.InitPut.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n167 + i += n170 } if m.ChangeFrozen != nil { dAtA[i] = 0xda @@ -5355,11 +5463,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.ChangeFrozen.Size())) - n168, err := m.ChangeFrozen.MarshalTo(dAtA[i:]) + n171, err := m.ChangeFrozen.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n168 + i += n171 } if m.AdminTransferLease != nil { dAtA[i] = 0xea @@ -5367,11 +5475,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.AdminTransferLease.Size())) - n169, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) + n172, err := m.AdminTransferLease.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n169 + i += n172 } if m.LeaseInfo != nil { dAtA[i] = 0xf2 @@ -5379,11 +5487,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.LeaseInfo.Size())) - n170, err := m.LeaseInfo.MarshalTo(dAtA[i:]) + n173, err := m.LeaseInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n170 + i += n173 } if m.WriteBatch != nil { dAtA[i] = 0xfa @@ -5391,11 +5499,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintApi(dAtA, i, uint64(m.WriteBatch.Size())) - n171, err := m.WriteBatch.MarshalTo(dAtA[i:]) + n174, err := m.WriteBatch.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n171 + i += n174 } if m.Export != nil { dAtA[i] = 0x82 @@ -5403,11 +5511,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Export.Size())) - n172, err := m.Export.MarshalTo(dAtA[i:]) + n175, err := m.Export.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n172 + i += n175 } if m.QueryTxn != nil { dAtA[i] = 0x8a @@ -5415,11 +5523,11 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.QueryTxn.Size())) - n173, err := m.QueryTxn.MarshalTo(dAtA[i:]) + n176, err := m.QueryTxn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n173 + i += n176 } if m.Import != nil { dAtA[i] = 0x92 @@ -5427,11 +5535,23 @@ func (m *ResponseUnion) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2 i++ i = encodeVarintApi(dAtA, i, uint64(m.Import.Size())) - n174, err := m.Import.MarshalTo(dAtA[i:]) + n177, err := m.Import.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n174 + i += n177 + } + if m.AdminChangeReplicas != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintApi(dAtA, i, uint64(m.AdminChangeReplicas.Size())) + n178, err := m.AdminChangeReplicas.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n178 } return i, nil } @@ -5454,19 +5574,19 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp.Size())) - n175, err := m.Timestamp.MarshalTo(dAtA[i:]) + n179, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n175 + i += n179 dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Replica.Size())) - n176, err := m.Replica.MarshalTo(dAtA[i:]) + n180, err := m.Replica.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n176 + i += n180 dAtA[i] = 0x18 i++ i = encodeVarintApi(dAtA, i, uint64(m.RangeID)) @@ -5477,11 +5597,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Txn.Size())) - n177, err := m.Txn.MarshalTo(dAtA[i:]) + n181, err := m.Txn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n177 + i += n181 } dAtA[i] = 0x30 i++ @@ -5490,11 +5610,11 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintApi(dAtA, i, uint64(m.TraceContext.Size())) - n178, err := m.TraceContext.MarshalTo(dAtA[i:]) + n182, err := m.TraceContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n178 + i += n182 } dAtA[i] = 0x40 i++ @@ -5539,11 +5659,11 @@ func (m *BatchRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Header.Size())) - n179, err := m.Header.MarshalTo(dAtA[i:]) + n183, err := m.Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n179 + i += n183 if len(m.Requests) > 0 { for _, msg := range m.Requests { dAtA[i] = 0x12 @@ -5577,11 +5697,11 @@ func (m *BatchResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.BatchResponse_Header.Size())) - n180, err := m.BatchResponse_Header.MarshalTo(dAtA[i:]) + n184, err := m.BatchResponse_Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n180 + i += n184 if len(m.Responses) > 0 { for _, msg := range m.Responses { dAtA[i] = 0x12 @@ -5616,29 +5736,29 @@ func (m *BatchResponse_Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintApi(dAtA, i, uint64(m.Error.Size())) - n181, err := m.Error.MarshalTo(dAtA[i:]) + n185, err := m.Error.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n181 + i += n185 } dAtA[i] = 0x12 i++ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp.Size())) - n182, err := m.Timestamp.MarshalTo(dAtA[i:]) + n186, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n182 + i += n186 if m.Txn != nil { dAtA[i] = 0x1a i++ i = encodeVarintApi(dAtA, i, uint64(m.Txn.Size())) - n183, err := m.Txn.MarshalTo(dAtA[i:]) + n187, err := m.Txn.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n187 } if len(m.CollectedSpans) > 0 { for _, b := range m.CollectedSpans { @@ -5651,11 +5771,11 @@ func (m *BatchResponse_Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintApi(dAtA, i, uint64(m.Now.Size())) - n184, err := m.Now.MarshalTo(dAtA[i:]) + n188, err := m.Now.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n188 return i, nil } @@ -6050,6 +6170,29 @@ func (m *AdminTransferLeaseResponse) Size() (n int) { return n } +func (m *AdminChangeReplicasRequest) Size() (n int) { + var l int + _ = l + l = m.Span.Size() + n += 1 + l + sovApi(uint64(l)) + n += 1 + sovApi(uint64(m.ChangeType)) + if len(m.Targets) > 0 { + for _, e := range m.Targets { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *AdminChangeReplicasResponse) Size() (n int) { + var l int + _ = l + l = m.ResponseHeader.Size() + n += 1 + l + sovApi(uint64(l)) + return n +} + func (m *RangeLookupRequest) Size() (n int) { var l int _ = l @@ -6710,6 +6853,10 @@ func (m *RequestUnion) Size() (n int) { l = m.Import.Size() n += 2 + l + sovApi(uint64(l)) } + if m.AdminChangeReplicas != nil { + l = m.AdminChangeReplicas.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -6848,6 +6995,10 @@ func (m *ResponseUnion) Size() (n int) { l = m.Import.Size() n += 2 + l + sovApi(uint64(l)) } + if m.AdminChangeReplicas != nil { + l = m.AdminChangeReplicas.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -7044,6 +7195,9 @@ func (this *RequestUnion) GetValue() interface{} { if this.Import != nil { return this.Import } + if this.AdminChangeReplicas != nil { + return this.AdminChangeReplicas + } return nil } @@ -7117,6 +7271,8 @@ func (this *RequestUnion) SetValue(value interface{}) bool { this.QueryTxn = vt case *ImportRequest: this.Import = vt + case *AdminChangeReplicasRequest: + this.AdminChangeReplicas = vt default: return false } @@ -7222,6 +7378,9 @@ func (this *ResponseUnion) GetValue() interface{} { if this.Import != nil { return this.Import } + if this.AdminChangeReplicas != nil { + return this.AdminChangeReplicas + } return nil } @@ -7293,6 +7452,8 @@ func (this *ResponseUnion) SetValue(value interface{}) bool { this.QueryTxn = vt case *ImportResponse: this.Import = vt + case *AdminChangeReplicasResponse: + this.AdminChangeReplicas = vt default: return false } @@ -10921,6 +11082,216 @@ func (m *AdminTransferLeaseResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *AdminChangeReplicasRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdminChangeReplicasRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdminChangeReplicasRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Span", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Span.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ChangeType", wireType) + } + m.ChangeType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ChangeType |= (ReplicaChangeType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Targets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Targets = append(m.Targets, ReplicationTarget{}) + if err := m.Targets[len(m.Targets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AdminChangeReplicasResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdminChangeReplicasResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdminChangeReplicasResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResponseHeader", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ResponseHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RangeLookupRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -17390,6 +17761,39 @@ func (m *RequestUnion) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 35: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminChangeReplicas", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdminChangeReplicas == nil { + m.AdminChangeReplicas = &AdminChangeReplicasRequest{} + } + if err := m.AdminChangeReplicas.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -18529,6 +18933,39 @@ func (m *ResponseUnion) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 35: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminChangeReplicas", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdminChangeReplicas == nil { + m.AdminChangeReplicas = &AdminChangeReplicasResponse{} + } + if err := m.AdminChangeReplicas.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -19395,281 +19832,287 @@ var ( func init() { proto.RegisterFile("cockroach/pkg/roachpb/api.proto", fileDescriptorApi) } var fileDescriptorApi = []byte{ - // 4403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0xcd, 0x73, 0xdb, 0x48, - 0x76, 0x37, 0xf8, 0x21, 0x91, 0x8f, 0x14, 0x45, 0xb5, 0xed, 0x31, 0xcd, 0x19, 0x8b, 0x32, 0xc6, - 0x5f, 0xf3, 0x25, 0x79, 0xed, 0x38, 0x33, 0x9e, 0xcc, 0xd6, 0x8e, 0x44, 0xc9, 0x32, 0xfd, 0x21, - 0x7b, 0x20, 0x6a, 0xbe, 0x76, 0xb3, 0x08, 0x04, 0xb4, 0x48, 0x44, 0x24, 0x40, 0x03, 0xa0, 0x45, - 0x4e, 0x0e, 0x5b, 0xd9, 0x4a, 0x55, 0x92, 0x4d, 0x25, 0xb5, 0xa9, 0xda, 0xaa, 0x64, 0x92, 0x54, - 0x6a, 0x2b, 0xb9, 0xe4, 0x98, 0x43, 0x2a, 0x39, 0x66, 0x8f, 0x73, 0xcb, 0x1c, 0x53, 0xd9, 0x2a, - 0x6f, 0xe2, 0xfc, 0x05, 0xa9, 0xdc, 0x7c, 0x4a, 0xf5, 0x17, 0x08, 0x90, 0x00, 0x29, 0x79, 0xb0, - 0xd9, 0xe4, 0x24, 0xe8, 0x75, 0xbf, 0x87, 0xee, 0xd7, 0xef, 0xbd, 0xfe, 0xf5, 0xeb, 0x07, 0x42, - 0x4d, 0xb7, 0xf5, 0x43, 0xc7, 0xd6, 0xf4, 0xf6, 0x5a, 0xef, 0xb0, 0xb5, 0x46, 0x9f, 0x7a, 0xfb, - 0x6b, 0x5a, 0xcf, 0x5c, 0xed, 0x39, 0xb6, 0x67, 0xa3, 0x25, 0xbf, 0xc3, 0x2a, 0x6f, 0xac, 0xae, - 0x44, 0xf3, 0x18, 0x9a, 0xa7, 0x31, 0xa6, 0xaa, 0x1c, 0xdd, 0x03, 0x3b, 0x8e, 0xed, 0xb8, 0xbc, - 0xcf, 0xa5, 0xe8, 0x3e, 0x5d, 0xec, 0x69, 0x01, 0x49, 0xd7, 0xc3, 0xbd, 0x5c, 0xcf, 0x76, 0xb4, - 0x16, 0x5e, 0xc3, 0x56, 0xcb, 0xb4, 0xc4, 0x1f, 0xc2, 0xf5, 0x54, 0xd7, 0x39, 0xc7, 0xad, 0x30, - 0x47, 0xdf, 0x33, 0x3b, 0x6b, 0x9e, 0xa3, 0xe9, 0xa6, 0xd5, 0x5a, 0x73, 0x7b, 0x9a, 0xa5, 0xea, - 0xb6, 0xe5, 0xe1, 0x81, 0xa7, 0xea, 0x9a, 0xe3, 0x98, 0xd8, 0xe1, 0x6c, 0x57, 0x22, 0xd8, 0xda, - 0x1d, 0x7d, 0xcd, 0x33, 0xbb, 0xd8, 0xf5, 0xb4, 0x6e, 0x8f, 0xf7, 0x3b, 0xd3, 0xb2, 0x5b, 0x36, - 0x7d, 0x5c, 0x23, 0x4f, 0x8c, 0x2a, 0xff, 0x00, 0xf2, 0x8a, 0x66, 0xb5, 0x70, 0xc3, 0x3a, 0xb0, - 0xd1, 0x07, 0x90, 0x31, 0xb0, 0xab, 0x57, 0xa4, 0x15, 0xe9, 0x5a, 0xe1, 0x86, 0xbc, 0x3a, 0xa1, - 0xc1, 0x55, 0xda, 0x77, 0x13, 0xbb, 0xba, 0x63, 0xf6, 0x3c, 0xdb, 0xd9, 0xc8, 0x7c, 0xf5, 0xac, - 0x76, 0x4a, 0xa1, 0x5c, 0xe8, 0xd7, 0x20, 0xdb, 0xc1, 0x9a, 0x8b, 0x2b, 0x29, 0xca, 0x5e, 0x89, - 0x60, 0x7f, 0x40, 0xda, 0x39, 0x13, 0xeb, 0x2c, 0x3f, 0x97, 0xa0, 0xa4, 0x60, 0xb7, 0x67, 0x5b, - 0x2e, 0xbe, 0x8b, 0x35, 0x03, 0x3b, 0xe8, 0x3a, 0xa4, 0xbd, 0x81, 0x55, 0x49, 0x53, 0x31, 0xcb, - 0x11, 0x62, 0x9a, 0x8e, 0x66, 0xb9, 0x9a, 0xee, 0x99, 0xb6, 0xa5, 0x90, 0xae, 0xe8, 0x3d, 0x28, - 0x38, 0xd8, 0xed, 0x77, 0xb1, 0x4a, 0x14, 0x55, 0xc9, 0x50, 0xce, 0x73, 0x11, 0x9c, 0xbb, 0x3d, - 0xcd, 0x52, 0x80, 0xf5, 0x25, 0xcf, 0xa8, 0x06, 0x39, 0xab, 0xdf, 0x55, 0x0f, 0xf1, 0xd0, 0xad, - 0x64, 0x57, 0xa4, 0x6b, 0x69, 0x3e, 0xba, 0x79, 0xab, 0xdf, 0xbd, 0x8f, 0x87, 0x2e, 0xaa, 0x43, - 0xc1, 0x21, 0x93, 0x56, 0x4d, 0xeb, 0xc0, 0x76, 0x2b, 0x73, 0x2b, 0xe9, 0x6b, 0x85, 0x1b, 0xaf, - 0xc5, 0xa9, 0x86, 0xa8, 0x91, 0x4b, 0x00, 0x47, 0x10, 0x5c, 0x79, 0x1b, 0x60, 0x1b, 0x7b, 0x0a, - 0x7e, 0xd2, 0xc7, 0xae, 0x87, 0x6e, 0xc3, 0x5c, 0x9b, 0xce, 0x94, 0x2b, 0x3a, 0x6e, 0xa0, 0x1b, - 0x39, 0x22, 0xe8, 0xeb, 0x67, 0x35, 0x49, 0xe1, 0x0c, 0xf2, 0x0f, 0x25, 0x28, 0x50, 0x49, 0x4c, - 0x61, 0xa8, 0x3e, 0x26, 0xea, 0x62, 0xd4, 0xc0, 0x42, 0xda, 0x9d, 0x14, 0x8a, 0x56, 0x21, 0xfb, - 0x54, 0xeb, 0xf4, 0xa7, 0x2d, 0xdc, 0xc7, 0xa4, 0x5d, 0x61, 0xdd, 0xe4, 0x7f, 0x92, 0x00, 0x1e, - 0xf7, 0x13, 0x98, 0x0e, 0x31, 0x99, 0x63, 0xbd, 0x59, 0x98, 0x0c, 0xed, 0x8c, 0x5e, 0x83, 0x39, - 0xd3, 0xea, 0x98, 0x16, 0xa6, 0x26, 0x92, 0xe3, 0x8d, 0x9c, 0x86, 0xaa, 0x90, 0xdd, 0xef, 0x98, - 0x96, 0x41, 0xad, 0x40, 0x34, 0x32, 0x92, 0xac, 0x40, 0x81, 0x0e, 0x3c, 0x41, 0xed, 0xc9, 0x3f, - 0x97, 0xe0, 0x6c, 0xdd, 0xb6, 0x0c, 0x93, 0x98, 0xa3, 0xd6, 0xf9, 0x55, 0x2a, 0xe6, 0x16, 0xe4, - 0xf1, 0xa0, 0xa7, 0x32, 0xce, 0xf4, 0x8c, 0xc5, 0xcc, 0xe1, 0x41, 0x8f, 0x3e, 0x4d, 0xd5, 0xd8, - 0x6f, 0xc2, 0x2b, 0xe3, 0x93, 0x4b, 0x52, 0x79, 0xbf, 0x2b, 0x41, 0xa9, 0x61, 0x99, 0xde, 0xaf, - 0x50, 0x6b, 0xf2, 0xc7, 0xb0, 0xe8, 0x0f, 0x21, 0xc9, 0xb9, 0x3d, 0x81, 0x72, 0xc3, 0xd2, 0x1d, - 0xdc, 0xc5, 0x56, 0x12, 0x93, 0x93, 0x21, 0x6f, 0x0a, 0x71, 0x74, 0x82, 0x22, 0x54, 0x8d, 0xc8, - 0xf2, 0xef, 0xc0, 0x52, 0xe0, 0x95, 0x49, 0xc6, 0x88, 0x8b, 0x90, 0xb7, 0xf0, 0x91, 0x3a, 0x52, - 0xaf, 0x78, 0x7b, 0xce, 0xc2, 0x47, 0x54, 0xa9, 0xf2, 0x3d, 0x58, 0xd8, 0xc4, 0x1d, 0xec, 0xe1, - 0x04, 0xe2, 0xdc, 0x1e, 0x94, 0x84, 0xac, 0x24, 0x97, 0xe4, 0x2f, 0x24, 0x40, 0x5c, 0x2e, 0x09, - 0xce, 0x09, 0xac, 0xca, 0x65, 0xb2, 0xf3, 0x78, 0x7d, 0xc7, 0x62, 0x5b, 0x48, 0x30, 0x20, 0x01, - 0x6b, 0xa0, 0xbb, 0xc8, 0x28, 0x64, 0x65, 0x26, 0x43, 0xd6, 0xbd, 0x4c, 0x2e, 0x55, 0x4e, 0xcb, - 0x47, 0x70, 0x3a, 0x34, 0xb6, 0x24, 0x97, 0xef, 0x55, 0xc8, 0xd0, 0xf1, 0xa5, 0x56, 0xd2, 0xd7, - 0x8a, 0x1b, 0xf3, 0x2f, 0x9e, 0xd5, 0xd2, 0xf7, 0xf1, 0x50, 0xa1, 0x44, 0x79, 0x07, 0x0a, 0xbb, - 0xba, 0x66, 0x7d, 0x73, 0x6d, 0xf0, 0x89, 0xfc, 0x48, 0x82, 0x22, 0x13, 0x98, 0xe4, 0x14, 0x6e, - 0x41, 0xc6, 0xb1, 0x8f, 0xd8, 0x14, 0x0a, 0x37, 0x5e, 0x8d, 0x10, 0x71, 0x1f, 0x0f, 0x83, 0xee, - 0x4d, 0xbb, 0xcb, 0x7b, 0x80, 0x14, 0xfc, 0x14, 0x3b, 0x2e, 0x4e, 0x74, 0x8e, 0x7f, 0x2a, 0xc1, - 0xe9, 0x90, 0xdc, 0xff, 0x03, 0x53, 0x3d, 0x82, 0x73, 0xf5, 0x36, 0xd6, 0x0f, 0xeb, 0xb6, 0xe5, - 0x9a, 0xae, 0x87, 0x2d, 0x7d, 0x98, 0x80, 0x85, 0x5f, 0x84, 0xfc, 0x91, 0xe9, 0xb5, 0x55, 0xc3, - 0x3c, 0x38, 0xa0, 0x9e, 0x2f, 0xac, 0x37, 0x47, 0xc8, 0x9b, 0xe6, 0xc1, 0x81, 0xac, 0x42, 0x65, - 0xf2, 0xc5, 0x49, 0xfa, 0xed, 0x9f, 0x49, 0x70, 0xba, 0xde, 0x26, 0x6e, 0x71, 0xc7, 0xb1, 0xbf, - 0xc0, 0x09, 0x2c, 0x23, 0xf1, 0xc8, 0x03, 0x2a, 0x2b, 0x34, 0x27, 0x4e, 0x43, 0x57, 0xa1, 0xd8, - 0xed, 0xbb, 0x9e, 0x4a, 0x16, 0xd8, 0xb4, 0x19, 0x16, 0xcd, 0xf3, 0x3e, 0x05, 0xd2, 0xf2, 0x31, - 0x6b, 0x90, 0x7f, 0x9e, 0x82, 0x33, 0xe1, 0x91, 0x25, 0x69, 0x08, 0xef, 0xc0, 0x22, 0x45, 0x91, - 0xae, 0xaa, 0x1d, 0x1c, 0x60, 0xdd, 0xc3, 0x46, 0x28, 0xf6, 0x96, 0x58, 0xe3, 0x3a, 0x6f, 0x43, - 0x6f, 0xc3, 0x42, 0xd7, 0xb4, 0x54, 0xd7, 0xd3, 0x1c, 0x8f, 0xc4, 0x23, 0x3a, 0xec, 0xe2, 0x46, - 0xee, 0xc5, 0xb3, 0x5a, 0x46, 0x21, 0xfe, 0x5e, 0xe8, 0x9a, 0xd6, 0x2e, 0x69, 0xbd, 0x8f, 0x87, - 0xe8, 0x00, 0xe6, 0xc8, 0xa9, 0x04, 0xbb, 0x95, 0x0c, 0xb5, 0xb3, 0x9b, 0x11, 0x23, 0x8c, 0x9a, - 0xda, 0xea, 0x2e, 0xe5, 0xda, 0xb2, 0x3c, 0x67, 0xb8, 0x71, 0x9e, 0x0c, 0xe4, 0x87, 0xbf, 0xa8, - 0xcd, 0x53, 0x62, 0x63, 0xf3, 0x47, 0xbf, 0xa8, 0xcd, 0xed, 0xd8, 0x06, 0x6e, 0x6c, 0x2a, 0x5c, - 0x7a, 0xf5, 0x36, 0x14, 0x02, 0x1c, 0xa8, 0x0c, 0x69, 0x32, 0x34, 0xa2, 0x95, 0xac, 0x42, 0x1e, - 0xd1, 0x99, 0xe0, 0xb6, 0x9d, 0xe5, 0xdb, 0xf2, 0xfb, 0xa9, 0xf7, 0x24, 0xb9, 0x09, 0xe7, 0x36, - 0x70, 0xcb, 0xb4, 0x82, 0x80, 0xff, 0x9b, 0x6f, 0x2e, 0x2a, 0x54, 0x26, 0xa5, 0x26, 0x69, 0xae, - 0xff, 0x92, 0x82, 0xb3, 0x5b, 0x96, 0x91, 0xe8, 0xa8, 0x89, 0xc1, 0xea, 0x76, 0xb7, 0x6b, 0x7a, - 0x61, 0x83, 0x65, 0x34, 0x74, 0x1b, 0x72, 0x06, 0xd6, 0x0c, 0x1f, 0x15, 0x17, 0x6e, 0x5c, 0x08, - 0x88, 0x26, 0x87, 0xc2, 0xd5, 0x76, 0x47, 0x5f, 0x6d, 0x8a, 0x43, 0xa1, 0xe2, 0x77, 0x47, 0xbf, - 0x05, 0xe7, 0x4c, 0xcb, 0xc3, 0x8e, 0xa5, 0x75, 0x54, 0x26, 0x4d, 0xf5, 0x1c, 0xb3, 0xd5, 0xc2, - 0x0e, 0x3f, 0x48, 0x5d, 0x8b, 0x18, 0x64, 0x83, 0x73, 0xd4, 0x29, 0x43, 0x93, 0xf5, 0x57, 0xce, - 0x9a, 0x51, 0x64, 0xf4, 0x21, 0x14, 0x49, 0x83, 0xe5, 0xd1, 0xe3, 0x19, 0x39, 0x68, 0xa5, 0xa7, - 0xcd, 0x9d, 0xbb, 0x19, 0x63, 0x21, 0x14, 0x57, 0xfe, 0x52, 0x82, 0x57, 0xc6, 0x35, 0x9a, 0xec, - 0x11, 0xa8, 0x6c, 0x5b, 0x58, 0xed, 0xb5, 0x35, 0x17, 0x73, 0x25, 0x84, 0x76, 0xea, 0x92, 0x6d, - 0xe1, 0xc7, 0xa4, 0x91, 0x4d, 0x8c, 0x6d, 0x02, 0xf7, 0x32, 0xb9, 0x74, 0x39, 0x23, 0x7b, 0xb0, - 0xb4, 0x6e, 0x10, 0xc7, 0xea, 0x75, 0xcc, 0x24, 0x80, 0xde, 0x25, 0xc8, 0xbb, 0x44, 0x14, 0xf5, - 0xe0, 0x14, 0xf5, 0x60, 0x7f, 0xc3, 0xce, 0xd1, 0x96, 0xfb, 0x78, 0x28, 0x7f, 0x06, 0x28, 0xf8, - 0xd6, 0x24, 0xcd, 0x77, 0x87, 0x4f, 0xe8, 0x21, 0x76, 0x92, 0xc0, 0x48, 0xfe, 0x50, 0xb9, 0xbc, - 0x24, 0x87, 0xfa, 0x03, 0x38, 0x4f, 0x45, 0x53, 0xc3, 0x38, 0xc0, 0x0e, 0x4d, 0x30, 0x24, 0xb0, - 0x06, 0x57, 0x61, 0xce, 0xd3, 0x9c, 0x16, 0x66, 0xce, 0x96, 0xdd, 0x58, 0x24, 0x3d, 0x5e, 0x3c, - 0xf3, 0xc3, 0x9c, 0xc2, 0x9b, 0x65, 0x0d, 0xaa, 0x51, 0x03, 0x48, 0x1a, 0xb4, 0x52, 0x48, 0xf8, - 0xc0, 0xb6, 0x0f, 0xfb, 0xbd, 0x04, 0x66, 0xf7, 0x3a, 0x40, 0x57, 0x1b, 0xa8, 0x6c, 0xf7, 0xe0, - 0x33, 0xe4, 0x67, 0x89, 0xae, 0x36, 0xa0, 0xef, 0x72, 0xd1, 0x32, 0xcc, 0x3b, 0x0c, 0xe0, 0x84, - 0x3c, 0x41, 0x10, 0xb9, 0xf1, 0xff, 0x37, 0xc1, 0x41, 0xc1, 0xc1, 0x25, 0xe9, 0x95, 0x1f, 0xc2, - 0x9c, 0x3f, 0xc6, 0xf4, 0x89, 0x32, 0x52, 0x9c, 0x0f, 0xed, 0xc1, 0x52, 0xcf, 0xc1, 0x07, 0xd8, - 0xd3, 0xdb, 0xd8, 0x10, 0x13, 0x4e, 0x9f, 0x50, 0x58, 0x79, 0x24, 0x82, 0xe9, 0x46, 0xfe, 0x7d, - 0x09, 0x4e, 0xdf, 0xc5, 0x9a, 0xe3, 0xed, 0x63, 0xcd, 0x6b, 0x0e, 0x92, 0x08, 0xef, 0xb7, 0x20, - 0x6d, 0xd9, 0x47, 0xfc, 0xe4, 0x3a, 0x3d, 0x76, 0xf3, 0x61, 0x91, 0xfe, 0xf2, 0x77, 0xe1, 0x4c, - 0x78, 0x20, 0x49, 0x5a, 0xde, 0x5f, 0xa5, 0x21, 0xbf, 0x5d, 0x4f, 0x60, 0x72, 0x1f, 0xf0, 0xe3, - 0x47, 0xbc, 0xe6, 0xfd, 0xd7, 0xac, 0x6e, 0xd7, 0xef, 0xe3, 0xa1, 0xc0, 0xb5, 0x84, 0x0b, 0xad, - 0x43, 0xde, 0x6b, 0x3b, 0xd8, 0x6d, 0xdb, 0x1d, 0x83, 0x6f, 0x49, 0xc7, 0x52, 0xd0, 0x88, 0x0b, - 0x75, 0xe0, 0xac, 0x37, 0xb0, 0xe8, 0xf6, 0xa3, 0xb6, 0x74, 0x75, 0x24, 0x2e, 0x7b, 0x1c, 0x71, - 0x55, 0x22, 0xee, 0xf9, 0xb3, 0x1a, 0x6a, 0x0e, 0x2c, 0x32, 0xc3, 0xed, 0x7a, 0x53, 0x08, 0x50, - 0x90, 0xc7, 0x69, 0xba, 0x4f, 0xab, 0x62, 0xc8, 0xd2, 0x59, 0xa0, 0xf3, 0x23, 0xac, 0x13, 0x08, - 0xe2, 0x14, 0xf4, 0x90, 0x49, 0x89, 0x17, 0x9c, 0x64, 0xd5, 0x47, 0x5c, 0xf2, 0x47, 0x00, 0x44, - 0x6d, 0x49, 0xae, 0xf8, 0xf3, 0x34, 0x94, 0x1e, 0xf7, 0xdd, 0x76, 0x32, 0x36, 0x5d, 0x07, 0xe8, - 0xf5, 0xdd, 0x36, 0x76, 0x54, 0x6f, 0x60, 0xf1, 0x49, 0xce, 0xc8, 0xe7, 0x8a, 0x59, 0x32, 0xbe, - 0xe6, 0xc0, 0x42, 0x8f, 0xb8, 0x10, 0xac, 0x8e, 0x92, 0xc2, 0x6f, 0x06, 0x84, 0xf0, 0xcc, 0xfa, - 0x2a, 0x4b, 0xa9, 0xaf, 0x8a, 0xcc, 0xfa, 0x6a, 0x73, 0x60, 0x3d, 0xc4, 0x9e, 0x16, 0x12, 0x88, - 0x89, 0xc0, 0x0f, 0x60, 0x9e, 0xfc, 0xa3, 0x7a, 0xf6, 0x49, 0x8c, 0x69, 0x8e, 0xf0, 0x34, 0x6d, - 0xe1, 0xa7, 0xd9, 0x93, 0xf9, 0x29, 0x59, 0x6e, 0xf6, 0xd2, 0x61, 0x0f, 0x57, 0xe6, 0x56, 0xa4, - 0x6b, 0xa5, 0x48, 0x4d, 0x70, 0xdd, 0x37, 0x87, 0x3d, 0x71, 0xb4, 0xcb, 0xd1, 0xf7, 0x0e, 0x7b, - 0x34, 0x4d, 0x77, 0x60, 0x3b, 0x3a, 0xae, 0xcc, 0x07, 0xd3, 0x74, 0x94, 0x84, 0xde, 0x82, 0x92, - 0x85, 0x8f, 0xd4, 0x9e, 0x63, 0xda, 0x8e, 0xe9, 0x99, 0xd8, 0xad, 0xe4, 0x02, 0x9d, 0x16, 0x2c, - 0x7c, 0xf4, 0xd8, 0x6f, 0x92, 0xff, 0x52, 0x82, 0x45, 0x7f, 0x91, 0x93, 0x8c, 0xd7, 0xf5, 0xd0, - 0x52, 0x9d, 0x7c, 0xbd, 0xc9, 0xf2, 0xc8, 0x3f, 0x96, 0x60, 0xf1, 0xa3, 0x3e, 0x76, 0x86, 0xc9, - 0xd8, 0xe0, 0x06, 0xbb, 0x4c, 0x48, 0xbd, 0xa4, 0xdd, 0x10, 0x66, 0xf9, 0x85, 0x04, 0xe5, 0xd1, - 0x90, 0x92, 0xd4, 0xd8, 0x16, 0x14, 0x9e, 0xf4, 0xb1, 0x63, 0x62, 0xe3, 0xc4, 0x2a, 0x03, 0xce, - 0x48, 0x4c, 0xfa, 0x73, 0x28, 0x1e, 0x69, 0xa6, 0x67, 0x5a, 0x2d, 0x22, 0x86, 0xc5, 0xd9, 0xe2, - 0xc6, 0xbb, 0xff, 0xf6, 0xac, 0x76, 0xb3, 0x65, 0x7a, 0xed, 0xfe, 0xfe, 0xaa, 0x6e, 0x77, 0xd7, - 0x7c, 0xa9, 0xc6, 0xfe, 0x5a, 0xc4, 0xa5, 0x51, 0xbf, 0x6f, 0x1a, 0xab, 0x7b, 0x7b, 0x8d, 0x4d, - 0xa5, 0xc0, 0x85, 0x35, 0x07, 0x96, 0x2b, 0xff, 0x5e, 0x0a, 0xce, 0x28, 0xd8, 0xb5, 0x3b, 0x4f, - 0x71, 0x83, 0x22, 0xf2, 0x04, 0x16, 0xe5, 0x11, 0x00, 0x3f, 0x10, 0x7c, 0x93, 0xb5, 0xc9, 0x33, - 0x19, 0x44, 0x01, 0x1b, 0xe4, 0x2c, 0xab, 0x79, 0x7d, 0x96, 0x81, 0x2b, 0xdd, 0xb8, 0x34, 0x5d, - 0x85, 0xbb, 0xb4, 0xaf, 0xf0, 0x6c, 0xc6, 0x49, 0x0e, 0x58, 0x3d, 0xdb, 0x74, 0x6d, 0x2b, 0x9c, - 0xa3, 0x63, 0x34, 0xf9, 0x7b, 0x70, 0x76, 0x4c, 0x0b, 0x49, 0xc6, 0xdd, 0x3f, 0x4c, 0xc1, 0xf9, - 0xb0, 0xf8, 0x84, 0xf2, 0x93, 0xff, 0x0f, 0x35, 0x5d, 0x82, 0xe2, 0x8e, 0x6d, 0xfb, 0x50, 0x52, - 0x5e, 0x80, 0x02, 0xfb, 0x9f, 0x2a, 0x83, 0x20, 0xee, 0x28, 0x4d, 0x25, 0x7b, 0xaa, 0x28, 0x26, - 0x74, 0xf6, 0x79, 0xc9, 0x2b, 0x89, 0x26, 0x2c, 0xfc, 0x12, 0x0e, 0x4b, 0x7f, 0x23, 0x01, 0x6a, - 0x3a, 0x7d, 0x4b, 0xd7, 0x3c, 0xfc, 0xc0, 0x6e, 0x25, 0x30, 0xbb, 0x2a, 0x64, 0x4d, 0xcb, 0xc0, - 0x03, 0x3a, 0xbb, 0x8c, 0x98, 0x03, 0x25, 0xa1, 0x5b, 0x90, 0xe3, 0x17, 0xa7, 0x06, 0x35, 0x95, - 0xb4, 0x0f, 0xa3, 0xe6, 0xd9, 0x55, 0xe9, 0xe6, 0x8b, 0xd1, 0xa3, 0x32, 0xcf, 0x6e, 0x4b, 0x0d, - 0xf9, 0x73, 0x38, 0x1d, 0x1a, 0x63, 0x92, 0x0a, 0xf8, 0x67, 0x9a, 0xb4, 0xa5, 0xb3, 0x4e, 0xea, - 0xa0, 0xf8, 0x52, 0x97, 0xde, 0xe8, 0x5d, 0x80, 0x9e, 0x83, 0x9f, 0xaa, 0x8c, 0x35, 0x3d, 0x9d, - 0x55, 0xc9, 0x93, 0xbe, 0xf4, 0x51, 0xfe, 0x99, 0x04, 0x67, 0x92, 0x3e, 0xeb, 0xfe, 0x2f, 0x4f, - 0xe1, 0x21, 0x94, 0xe9, 0x43, 0xc3, 0x3a, 0xb0, 0x13, 0x48, 0x2e, 0xfc, 0x89, 0x04, 0x4b, 0x01, - 0x79, 0x49, 0x6e, 0xce, 0x27, 0x52, 0x8c, 0x24, 0x0a, 0x1a, 0xbe, 0x4b, 0xb6, 0xcb, 0xa0, 0x8d, - 0x25, 0x7a, 0x5f, 0x9a, 0x82, 0x57, 0xea, 0x76, 0xb7, 0xd7, 0xf7, 0x30, 0xcd, 0xb8, 0xbb, 0xfd, - 0x6e, 0x02, 0x16, 0xb0, 0x0c, 0xf3, 0x22, 0xd1, 0x4d, 0xa6, 0xba, 0x20, 0x8e, 0xfa, 0x9c, 0x88, - 0x7e, 0x1b, 0x0a, 0x3a, 0x7f, 0x9b, 0xf0, 0xe6, 0xe2, 0x46, 0x83, 0xf4, 0x79, 0x49, 0x84, 0xf1, - 0xfc, 0x59, 0x0d, 0xc4, 0xf8, 0x1b, 0x9b, 0x0a, 0x08, 0xe9, 0x0d, 0x03, 0xad, 0x40, 0xce, 0xb5, - 0xb4, 0x9e, 0xdb, 0xb6, 0xc3, 0x19, 0x38, 0x9f, 0x2a, 0x7f, 0x1f, 0xce, 0x4d, 0xa8, 0x20, 0x49, - 0x1d, 0x7f, 0x0f, 0x6a, 0x9b, 0xb8, 0xe7, 0x60, 0x12, 0x82, 0x8c, 0x8f, 0xb1, 0x63, 0x1e, 0x0c, - 0x93, 0xd3, 0xb5, 0xdc, 0x82, 0x95, 0x78, 0xe9, 0x49, 0x4e, 0xe3, 0x1e, 0x00, 0x39, 0x6c, 0xe2, - 0x23, 0xc7, 0xf4, 0x30, 0xba, 0x00, 0x60, 0x77, 0x0c, 0xb5, 0xe7, 0xe0, 0x03, 0x73, 0xc0, 0x0e, - 0xa4, 0x4a, 0xde, 0xee, 0x18, 0x8f, 0x29, 0x81, 0x34, 0xb3, 0xf3, 0x03, 0x6d, 0x4e, 0xb1, 0x66, - 0x7a, 0x6a, 0x20, 0x04, 0xf9, 0x1f, 0xe6, 0x61, 0x61, 0x6b, 0xd0, 0xb3, 0x1d, 0x6f, 0x97, 0xe1, - 0x05, 0x74, 0x0f, 0x72, 0x3d, 0xc7, 0x7e, 0x6a, 0x8a, 0x41, 0x96, 0x22, 0xb3, 0xc4, 0x21, 0x9e, - 0xc7, 0xbc, 0xbf, 0x7f, 0xb0, 0xe1, 0xff, 0x23, 0x05, 0xf2, 0x0f, 0x6c, 0x5d, 0xeb, 0xdc, 0x31, - 0x3b, 0xc2, 0xd7, 0x56, 0x67, 0x09, 0x5b, 0xf5, 0x39, 0x1e, 0x6b, 0x5e, 0x5b, 0xc0, 0x14, 0x9f, - 0x88, 0xb6, 0x21, 0x77, 0xd7, 0xf3, 0x7a, 0xa4, 0x91, 0x07, 0xa7, 0xcb, 0x33, 0x45, 0x12, 0x06, - 0x31, 0x38, 0xc1, 0x8c, 0x14, 0x58, 0xda, 0xb6, 0xed, 0x56, 0x07, 0xd7, 0x3b, 0x76, 0xdf, 0xa8, - 0xdb, 0xd6, 0x81, 0xd9, 0xe2, 0xe7, 0xc6, 0x4b, 0x33, 0x25, 0x6e, 0xd7, 0x77, 0x95, 0x49, 0x76, - 0xf4, 0x1d, 0xc8, 0xed, 0xde, 0xe4, 0xa2, 0xd8, 0x41, 0xf2, 0xf5, 0x99, 0xa2, 0x76, 0x6f, 0x2a, - 0x3e, 0x13, 0xba, 0x0b, 0x85, 0xf5, 0x2f, 0xfa, 0x0e, 0xe6, 0x32, 0xe6, 0xa8, 0x8c, 0x2b, 0x33, - 0x65, 0x50, 0x1e, 0x25, 0xc8, 0x5a, 0x7d, 0x03, 0x16, 0x42, 0x9a, 0x44, 0x15, 0xc8, 0xf4, 0x88, - 0xd2, 0xa4, 0xc0, 0x8d, 0x17, 0xa5, 0x54, 0xaf, 0x40, 0x86, 0x68, 0x85, 0x44, 0x8b, 0x7d, 0xcd, - 0xc5, 0x7b, 0x8e, 0x19, 0xea, 0x24, 0x88, 0xd5, 0xbf, 0x93, 0x20, 0xb5, 0x7b, 0x93, 0x80, 0xbc, - 0xfd, 0xbe, 0x7e, 0x88, 0xbd, 0x50, 0x2f, 0x4e, 0xa3, 0x10, 0x70, 0x64, 0x6c, 0x7e, 0x2b, 0xa3, - 0xa1, 0xd7, 0x01, 0x34, 0x5d, 0xc7, 0xae, 0xeb, 0xdf, 0x62, 0x89, 0x1e, 0x79, 0x46, 0xbf, 0x8f, - 0x87, 0x44, 0x84, 0x8b, 0x75, 0x07, 0xb3, 0x38, 0xe1, 0x8b, 0x60, 0x34, 0x22, 0xc2, 0xc3, 0xdd, - 0x9e, 0xea, 0xd9, 0x87, 0xd8, 0xa2, 0x5a, 0xf6, 0x45, 0x10, 0x7a, 0x93, 0x90, 0xab, 0xeb, 0x90, - 0xde, 0xae, 0xef, 0x7e, 0x93, 0xa1, 0x56, 0xbf, 0x94, 0x20, 0x4b, 0x15, 0x8a, 0x64, 0xc8, 0xeb, - 0xb6, 0xe5, 0x69, 0xa6, 0xc5, 0x7d, 0xc2, 0x7f, 0xa1, 0x4f, 0x9e, 0x31, 0xed, 0xab, 0x50, 0xd4, - 0x74, 0xdd, 0xee, 0x5b, 0x9e, 0x6a, 0x69, 0x5d, 0x1c, 0xbe, 0x75, 0xe4, 0x2d, 0x3b, 0x5a, 0x17, - 0xa3, 0xcb, 0x20, 0xfe, 0xa5, 0x0a, 0x0a, 0xce, 0x1f, 0x78, 0xc3, 0x7d, 0x3c, 0x94, 0xff, 0x5a, - 0x82, 0xa5, 0x4f, 0x88, 0xfb, 0x6f, 0x68, 0x9e, 0xde, 0x4e, 0x60, 0xa3, 0x78, 0x1f, 0xf2, 0x86, - 0xe6, 0x69, 0xac, 0xca, 0x2e, 0x35, 0x9d, 0x9b, 0x3b, 0x12, 0xe9, 0x4f, 0x2b, 0xed, 0x10, 0x64, - 0xc8, 0x33, 0xdb, 0x3d, 0x14, 0xfa, 0x2c, 0x7f, 0x06, 0x28, 0x38, 0xbe, 0x24, 0xc3, 0xdf, 0xd7, - 0x92, 0x08, 0x59, 0x09, 0xcc, 0xfb, 0x43, 0x98, 0xe7, 0x07, 0x25, 0x3e, 0xeb, 0x95, 0x59, 0xbe, - 0x26, 0x9c, 0x82, 0xb3, 0xa1, 0x0d, 0x00, 0x76, 0x2d, 0xeb, 0x99, 0xdd, 0xe3, 0xdd, 0xd0, 0x09, - 0xe3, 0xa1, 0x6c, 0x84, 0x2a, 0xff, 0x7d, 0x0a, 0x4a, 0x62, 0x4a, 0x49, 0xe2, 0x9c, 0x0d, 0xc8, - 0x1e, 0x98, 0x1d, 0x3f, 0xcb, 0x1e, 0x1f, 0x47, 0xfc, 0x1b, 0x60, 0x12, 0x2d, 0xfc, 0x04, 0x14, - 0x61, 0xad, 0xfe, 0x44, 0x82, 0x0c, 0x0d, 0xbc, 0xdf, 0x82, 0x0c, 0xb5, 0x0e, 0xe9, 0x38, 0xd6, - 0x41, 0xbb, 0xfa, 0x21, 0x27, 0x35, 0x1e, 0x72, 0xd0, 0x45, 0x61, 0x6f, 0xe6, 0x17, 0x98, 0x1f, - 0x22, 0x82, 0x66, 0x65, 0x7e, 0x81, 0xd1, 0x2b, 0x30, 0xe7, 0xb6, 0xb5, 0x5b, 0xdf, 0xba, 0x41, - 0x7d, 0xbc, 0xa8, 0xf0, 0xff, 0xee, 0x65, 0x72, 0x99, 0x72, 0x56, 0xfe, 0xa3, 0x34, 0x2c, 0x34, - 0xba, 0x09, 0x59, 0xc1, 0x7a, 0x58, 0x4f, 0x51, 0x1b, 0x4a, 0xe8, 0x5d, 0x93, 0x6a, 0x0a, 0x3b, - 0x50, 0xfa, 0x64, 0x0e, 0x74, 0x07, 0x8a, 0x87, 0x78, 0xa8, 0x3a, 0x6c, 0x47, 0x17, 0xb7, 0xf6, - 0x17, 0xa2, 0xab, 0x43, 0xf8, 0xbe, 0x2f, 0x82, 0xc7, 0xa1, 0x4f, 0x71, 0xab, 0x03, 0xbe, 0x52, - 0xef, 0x41, 0xda, 0x30, 0x85, 0x1a, 0x8e, 0x6b, 0xd0, 0x84, 0x65, 0xca, 0x82, 0x8d, 0x56, 0x23, - 0x33, 0xb6, 0x1a, 0xe9, 0x72, 0x46, 0xde, 0x83, 0x92, 0x50, 0x50, 0x92, 0xae, 0xfe, 0xe5, 0x69, - 0x28, 0x72, 0x95, 0xef, 0x59, 0x04, 0xaf, 0xae, 0x41, 0xba, 0xc5, 0x83, 0x79, 0xb4, 0x82, 0x46, - 0xc5, 0xb8, 0x0a, 0xe9, 0x49, 0x18, 0x7a, 0x7d, 0x2f, 0x22, 0x0d, 0x3f, 0xca, 0xcb, 0x8e, 0x18, - 0x7a, 0x7d, 0x0f, 0x7d, 0x04, 0x8b, 0xfa, 0xa8, 0x2c, 0x52, 0x25, 0xcc, 0xe9, 0xd8, 0xbb, 0xf2, - 0xc8, 0xea, 0x50, 0xa5, 0xa4, 0x87, 0xc8, 0x68, 0x3d, 0x58, 0xdf, 0x97, 0x89, 0x45, 0x05, 0xe3, - 0x25, 0x85, 0x81, 0xf2, 0x3f, 0xf4, 0x1e, 0xcc, 0x19, 0xb4, 0x82, 0x8c, 0xa3, 0x8a, 0xa8, 0x45, - 0x0d, 0x95, 0xe8, 0x29, 0xbc, 0x3f, 0xba, 0x0b, 0x45, 0xf6, 0xc4, 0xee, 0xc8, 0x38, 0xa2, 0xb8, - 0x1c, 0xcf, 0x1f, 0x48, 0x4f, 0x29, 0x05, 0x63, 0x44, 0x43, 0x37, 0x20, 0xe3, 0xea, 0x9a, 0x45, - 0x93, 0xd4, 0xd1, 0xa9, 0xcc, 0x40, 0x1d, 0x96, 0x42, 0xfb, 0xa2, 0x4f, 0x60, 0x69, 0x1f, 0xb7, - 0x4c, 0x4b, 0xf5, 0x46, 0x89, 0x23, 0x9a, 0xc0, 0x0e, 0xe7, 0xaa, 0x84, 0x80, 0x98, 0x92, 0x10, - 0xa5, 0xbc, 0x3f, 0xd6, 0x40, 0x96, 0x09, 0x5b, 0x46, 0x48, 0x6c, 0x3e, 0x76, 0x99, 0x22, 0x2b, - 0x36, 0x94, 0x12, 0x0e, 0x91, 0xd1, 0x16, 0x14, 0x34, 0x83, 0x56, 0xd9, 0xf4, 0x3a, 0xa6, 0x57, - 0x81, 0x58, 0x24, 0x38, 0x51, 0x13, 0xa0, 0x80, 0xe6, 0x93, 0x46, 0x62, 0xba, 0xd8, 0x69, 0xe1, - 0x4a, 0x61, 0xba, 0x98, 0x60, 0x36, 0x8a, 0x8b, 0xa1, 0x24, 0x74, 0x1f, 0x16, 0xda, 0xe2, 0xfa, - 0x8f, 0x66, 0xf8, 0x8a, 0xb1, 0x50, 0x30, 0xe2, 0xbe, 0x52, 0x29, 0xb6, 0x03, 0x44, 0xf4, 0x36, - 0xa4, 0x5a, 0x7a, 0x65, 0x81, 0x4a, 0x78, 0x6d, 0xda, 0x1d, 0x9d, 0x92, 0x6a, 0xe9, 0xe8, 0x03, - 0xc8, 0xb1, 0x1b, 0x8d, 0x81, 0x55, 0x29, 0xc5, 0x3a, 0x6f, 0xf8, 0x32, 0x49, 0xa1, 0x37, 0x2f, - 0xe4, 0x5d, 0x77, 0xa1, 0xc8, 0xb2, 0x43, 0x1d, 0x7a, 0x6f, 0x5c, 0x59, 0x8c, 0x35, 0xb8, 0xc9, - 0xab, 0x6f, 0x85, 0x55, 0xe4, 0x33, 0x1a, 0xda, 0x81, 0x92, 0xc3, 0xf2, 0x81, 0x2a, 0xcb, 0x52, - 0x56, 0xca, 0x54, 0xd6, 0xd5, 0xe8, 0x50, 0x32, 0x91, 0xc7, 0x56, 0x16, 0x9c, 0x20, 0x15, 0x7d, - 0x1f, 0xce, 0x84, 0xe5, 0x71, 0x97, 0x58, 0xa2, 0x52, 0xdf, 0x9e, 0x29, 0x35, 0xe8, 0x19, 0xc8, - 0x99, 0x68, 0x42, 0xb7, 0x20, 0xcb, 0xd6, 0x1c, 0x51, 0x81, 0xb5, 0x08, 0x81, 0xa1, 0xe5, 0x66, - 0xbd, 0x89, 0xc2, 0x3c, 0x9e, 0x17, 0x53, 0x3b, 0x76, 0xab, 0x72, 0x3a, 0x56, 0x61, 0x93, 0x29, - 0x3e, 0xa5, 0xe0, 0x8d, 0x68, 0xc4, 0x66, 0x1c, 0x46, 0xe7, 0xc9, 0x9b, 0x33, 0xb1, 0x36, 0x13, - 0x91, 0x2c, 0x53, 0x8a, 0x4e, 0x80, 0x48, 0xd7, 0x91, 0x15, 0x04, 0xa8, 0xd4, 0xed, 0xcf, 0xc6, - 0xaf, 0xe3, 0x44, 0x15, 0xa6, 0x52, 0x70, 0x46, 0x34, 0xd4, 0x84, 0xb2, 0xce, 0x8e, 0xf5, 0xaa, - 0x48, 0x07, 0x54, 0x5e, 0xa1, 0xd2, 0xde, 0x88, 0x8c, 0xa9, 0x51, 0x49, 0x10, 0x65, 0x51, 0x0f, - 0xd3, 0x51, 0x0f, 0xaa, 0x86, 0x7f, 0xdc, 0x56, 0x9f, 0xd2, 0xf3, 0xf6, 0x48, 0xfe, 0x39, 0x2a, - 0xff, 0x46, 0x64, 0x98, 0x9b, 0x9a, 0x01, 0x50, 0x2a, 0x46, 0x4c, 0x07, 0x12, 0xcc, 0xa8, 0x7c, - 0x55, 0x1f, 0x55, 0x43, 0x56, 0x2a, 0xb1, 0xc1, 0x2c, 0xa6, 0x62, 0x53, 0x29, 0xeb, 0x63, 0x0d, - 0x24, 0xb2, 0x5a, 0xb6, 0xdd, 0xab, 0x9c, 0x8f, 0x8d, 0xac, 0x81, 0x34, 0xb9, 0x42, 0xfb, 0x12, - 0x27, 0x35, 0x2d, 0xd3, 0xa3, 0x1b, 0x54, 0x35, 0xd6, 0x49, 0xc3, 0x15, 0xf8, 0xca, 0xbc, 0xc9, - 0xfe, 0x27, 0x96, 0xa2, 0xd3, 0x02, 0x40, 0x95, 0x97, 0x4a, 0xbe, 0x1a, 0x6b, 0x29, 0x11, 0xd5, - 0x99, 0x4a, 0x51, 0x0f, 0x10, 0x89, 0x9f, 0x7a, 0x3c, 0x73, 0xc9, 0xed, 0xee, 0xb5, 0x58, 0x3f, - 0x8d, 0x4a, 0x71, 0x2a, 0x0b, 0x5e, 0x90, 0x4a, 0xfc, 0x94, 0x45, 0xd0, 0x31, 0xa9, 0x17, 0x62, - 0xfd, 0x34, 0xb6, 0x52, 0x48, 0x41, 0xda, 0x44, 0x13, 0x41, 0xec, 0x54, 0x20, 0xfd, 0xf0, 0xa7, - 0xb2, 0x1c, 0xbb, 0x21, 0x8f, 0x27, 0x33, 0x95, 0x7c, 0x47, 0x50, 0x48, 0x94, 0xa7, 0xa0, 0x4b, - 0xdd, 0x27, 0x07, 0x9c, 0x4a, 0x2d, 0x36, 0xca, 0x4f, 0x9c, 0xd2, 0x14, 0x38, 0xf2, 0x49, 0x64, - 0x5f, 0xc7, 0x14, 0x8b, 0x55, 0x56, 0x66, 0x80, 0x35, 0x7f, 0x5f, 0x67, 0xfd, 0xd1, 0x77, 0x20, - 0xff, 0xa4, 0x8f, 0x9d, 0x21, 0x8d, 0xd2, 0x17, 0x63, 0x3f, 0xeb, 0x1a, 0xbb, 0x6f, 0x55, 0x72, - 0x4f, 0x38, 0x81, 0xbc, 0xda, 0xa4, 0x90, 0xad, 0x22, 0xc7, 0xbe, 0x3a, 0x04, 0x7a, 0x15, 0xde, - 0xff, 0xfd, 0xcc, 0x57, 0x3f, 0xad, 0x49, 0xf2, 0x7f, 0x21, 0x58, 0x10, 0x00, 0x8e, 0x81, 0xb3, - 0xeb, 0x41, 0x70, 0xb6, 0x1c, 0x07, 0xce, 0x18, 0x07, 0x43, 0x67, 0xd7, 0x83, 0xe8, 0x6c, 0x39, - 0x0e, 0x9d, 0x09, 0x0e, 0x02, 0xcf, 0x94, 0x38, 0x78, 0xf6, 0xc6, 0x31, 0xe0, 0x19, 0x17, 0x34, - 0x8e, 0xcf, 0x36, 0x26, 0xf1, 0xd9, 0xa5, 0xe9, 0xf8, 0x8c, 0x0b, 0x0a, 0x00, 0xb4, 0xdb, 0x63, - 0x00, 0xed, 0xe2, 0x14, 0x80, 0xc6, 0xb9, 0x05, 0x42, 0x6b, 0x44, 0x22, 0xb4, 0x2b, 0xb3, 0x10, - 0x1a, 0x97, 0x12, 0x82, 0x68, 0x37, 0x43, 0x10, 0xad, 0x16, 0x0b, 0xd1, 0x38, 0x2f, 0xc3, 0x68, - 0x9f, 0xc6, 0x63, 0xb4, 0xb7, 0x8e, 0x85, 0xd1, 0xb8, 0xb4, 0x49, 0x90, 0xa6, 0xc4, 0x81, 0xb4, - 0x37, 0x8e, 0x01, 0xd2, 0xc4, 0x62, 0x8d, 0xa1, 0xb4, 0x3b, 0x51, 0x28, 0xed, 0xf2, 0x0c, 0x94, - 0xc6, 0x65, 0x05, 0x61, 0xda, 0x9d, 0x28, 0x98, 0x76, 0x79, 0x06, 0x4c, 0x0b, 0xc9, 0x61, 0x38, - 0xed, 0x41, 0x34, 0x4e, 0xbb, 0x3a, 0x13, 0xa7, 0x71, 0x59, 0x61, 0xa0, 0xf6, 0x4e, 0x00, 0xa8, - 0x5d, 0x88, 0x01, 0x6a, 0x9c, 0x91, 0x20, 0xb5, 0x6f, 0x4f, 0x20, 0x35, 0x79, 0x1a, 0x52, 0xe3, - 0x9c, 0x3e, 0x54, 0x6b, 0x44, 0x42, 0xb5, 0x2b, 0xb3, 0xa0, 0x9a, 0xb0, 0xbc, 0x20, 0x56, 0x7b, - 0x14, 0x83, 0xd5, 0xae, 0xcd, 0xc6, 0x6a, 0x5c, 0xdc, 0x18, 0x58, 0x53, 0xa7, 0x82, 0xb5, 0x77, - 0x8e, 0x09, 0xd6, 0xb8, 0xec, 0x28, 0xb4, 0xf6, 0xeb, 0x61, 0xb4, 0xb6, 0x12, 0x8f, 0xd6, 0xb8, - 0x10, 0x0e, 0xd7, 0x1a, 0x91, 0x70, 0xed, 0xca, 0x2c, 0xb8, 0x26, 0x94, 0x16, 0xc4, 0x6b, 0x0f, - 0xa2, 0xf1, 0xda, 0xd5, 0x99, 0x78, 0x4d, 0xd8, 0x4e, 0x08, 0xb0, 0x35, 0x22, 0x01, 0xdb, 0x95, - 0x59, 0x80, 0xcd, 0x5f, 0xcd, 0x00, 0x62, 0xdb, 0x8b, 0x45, 0x6c, 0x6f, 0x1e, 0x07, 0xb1, 0x71, - 0x91, 0x13, 0x90, 0xed, 0xc9, 0x31, 0x20, 0xdb, 0xcd, 0x13, 0x41, 0x36, 0xfe, 0xa6, 0x78, 0xcc, - 0xf6, 0x69, 0x3c, 0x66, 0x7b, 0xeb, 0x58, 0x98, 0x4d, 0x04, 0xb7, 0x09, 0xd0, 0x76, 0x33, 0x04, - 0xda, 0x6a, 0xb1, 0xa0, 0x4d, 0xc4, 0x5a, 0x8a, 0xda, 0xbe, 0x3d, 0x81, 0xda, 0xe4, 0x69, 0xa8, - 0x4d, 0x38, 0xac, 0x80, 0x6d, 0x0f, 0xa2, 0x61, 0xdb, 0xd5, 0x63, 0x7e, 0xdf, 0x31, 0x86, 0xdb, - 0xd4, 0xa9, 0x38, 0xeb, 0x9d, 0x63, 0xe2, 0x2c, 0xe1, 0x62, 0x11, 0x40, 0xab, 0x1e, 0x01, 0xb4, - 0x2e, 0x4d, 0x07, 0x5a, 0x62, 0x67, 0x1d, 0x21, 0xad, 0x3b, 0x51, 0x48, 0xeb, 0xf2, 0x0c, 0xa4, - 0x25, 0x02, 0x75, 0x00, 0x6a, 0xdd, 0x1e, 0x83, 0x5a, 0x17, 0x67, 0x26, 0x43, 0x7d, 0xac, 0xf5, - 0xe1, 0x24, 0xd6, 0x7a, 0x7d, 0x2a, 0xd6, 0xe2, 0xfc, 0x23, 0xb0, 0x75, 0x7b, 0x0c, 0x6c, 0x5d, - 0x9c, 0x02, 0xb6, 0xc4, 0xcb, 0x83, 0x68, 0xeb, 0x5e, 0x26, 0xf7, 0x5a, 0xf9, 0x82, 0xfc, 0xb3, - 0x2c, 0xcc, 0xdd, 0x15, 0x29, 0xcb, 0x40, 0x95, 0xa9, 0xf4, 0x32, 0x55, 0xa6, 0x68, 0x13, 0xe6, - 0x1d, 0xdc, 0xeb, 0x98, 0xba, 0xc6, 0x11, 0xd8, 0xa5, 0xc8, 0x58, 0x41, 0x7b, 0x4c, 0x94, 0x4e, - 0x0b, 0xd6, 0x97, 0xac, 0x06, 0x41, 0xb7, 0x61, 0xa1, 0xef, 0x62, 0x47, 0x14, 0x36, 0xb2, 0xab, - 0x0e, 0x69, 0xe3, 0x0c, 0x2f, 0xc7, 0x2f, 0xee, 0xb9, 0xd8, 0xe1, 0x95, 0x8d, 0x43, 0xa5, 0xd8, - 0x0f, 0xfc, 0x27, 0x7e, 0x45, 0x20, 0x7b, 0xfc, 0x5f, 0x11, 0xf8, 0x04, 0xca, 0x0e, 0xd6, 0x8c, - 0x50, 0x10, 0x60, 0xa5, 0x9a, 0xd1, 0xe1, 0x51, 0x33, 0x02, 0x9e, 0x1e, 0x28, 0xd9, 0x5c, 0x74, - 0xc2, 0x4d, 0xe8, 0x11, 0x90, 0xb3, 0x8b, 0x8e, 0xc5, 0x2f, 0x38, 0x70, 0xe4, 0xf5, 0xe6, 0xf8, - 0x4a, 0xf0, 0x5f, 0x7b, 0xa0, 0xe9, 0xdf, 0x3a, 0xeb, 0x5a, 0x67, 0xbf, 0xf5, 0xa0, 0x14, 0xa9, - 0x00, 0x4e, 0x44, 0xef, 0xc2, 0xd9, 0xae, 0x36, 0x60, 0xe5, 0xcc, 0x62, 0x6f, 0xa0, 0x05, 0xd6, - 0xb9, 0x40, 0x8e, 0x1c, 0x75, 0xb5, 0x01, 0xfd, 0xbd, 0x03, 0xd6, 0x81, 0x7e, 0x87, 0xfa, 0x16, - 0x94, 0x0c, 0xd3, 0xf5, 0x4c, 0x4b, 0x17, 0xdf, 0xe2, 0xe4, 0x83, 0x75, 0xa2, 0xa2, 0x8d, 0x7e, - 0x74, 0x83, 0xae, 0xc3, 0x12, 0xff, 0xb6, 0x75, 0xf4, 0x0b, 0x08, 0x14, 0x4a, 0xe5, 0x46, 0x13, - 0x25, 0xcd, 0xa3, 0x1f, 0x90, 0xd8, 0x86, 0xc5, 0x96, 0xe6, 0xe1, 0x23, 0x6d, 0xa8, 0x5a, 0xb6, - 0x41, 0x17, 0xbb, 0x40, 0xbf, 0x2e, 0xa8, 0xf1, 0xc5, 0x5e, 0xd8, 0x66, 0xcd, 0xec, 0x13, 0xb1, - 0x17, 0xcf, 0xfc, 0x8f, 0xc5, 0x16, 0x5a, 0x81, 0x06, 0x43, 0xfe, 0x89, 0x04, 0xc5, 0xd0, 0xa5, - 0xd5, 0x6f, 0x8c, 0x25, 0x8a, 0xcf, 0x47, 0x23, 0xa7, 0xe8, 0x0b, 0x8e, 0x75, 0xc8, 0x71, 0x2d, - 0x89, 0xdc, 0x7d, 0x2d, 0x7e, 0xf3, 0xa4, 0xa7, 0x14, 0x91, 0x7c, 0x17, 0x6c, 0xef, 0x67, 0xfe, - 0xfc, 0xa7, 0xb5, 0x53, 0xf2, 0x3f, 0xa6, 0x61, 0x21, 0x7c, 0x57, 0xd5, 0x18, 0x1b, 0x57, 0x54, - 0x90, 0x0d, 0x71, 0xc4, 0x8f, 0x72, 0x13, 0xf2, 0x0e, 0xef, 0x24, 0x86, 0xb9, 0x32, 0x25, 0x1d, - 0x1e, 0x1c, 0xe7, 0x88, 0xb1, 0xfa, 0xc7, 0x29, 0xdf, 0xf9, 0x57, 0x21, 0x4b, 0x7f, 0xb8, 0x84, - 0x0f, 0x2d, 0xaa, 0x7e, 0x65, 0x8b, 0xb4, 0x2b, 0xac, 0x1b, 0x09, 0x16, 0xcd, 0x97, 0x2a, 0x49, - 0xf7, 0x09, 0x2f, 0xf1, 0xd3, 0x1d, 0x57, 0xc9, 0x51, 0xad, 0xd3, 0xa1, 0x1f, 0x30, 0x72, 0x93, - 0xcc, 0xac, 0xa4, 0xaf, 0x15, 0xc9, 0xf9, 0x8b, 0x93, 0x99, 0x35, 0xbe, 0x5c, 0xe1, 0x35, 0x5b, - 0xb8, 0x37, 0x1f, 0xc0, 0xe9, 0x08, 0x7f, 0x45, 0x25, 0x80, 0xfa, 0xa3, 0x9d, 0xdd, 0xc6, 0x6e, - 0x73, 0x6b, 0xa7, 0x59, 0x3e, 0x85, 0x16, 0x20, 0x4f, 0xfe, 0xdf, 0xda, 0xd9, 0xdd, 0xdb, 0x2d, - 0x4b, 0xa8, 0x0c, 0xc5, 0xc6, 0x4e, 0xa0, 0x43, 0xaa, 0x9a, 0xf9, 0x83, 0xbf, 0x5d, 0x3e, 0xf5, - 0xe6, 0x27, 0x50, 0x08, 0x14, 0x6a, 0x23, 0x04, 0xa5, 0xc7, 0x7b, 0xbb, 0x77, 0xd5, 0x66, 0xe3, - 0xe1, 0xd6, 0x6e, 0x73, 0xfd, 0xe1, 0xe3, 0xf2, 0x29, 0x22, 0x99, 0xd2, 0xd6, 0x37, 0x1e, 0x29, - 0xcd, 0xb2, 0xe4, 0xff, 0xdf, 0x7c, 0xb4, 0x57, 0xbf, 0x5b, 0x4e, 0xf9, 0xff, 0x7f, 0xb4, 0xb7, - 0xa5, 0x7c, 0x56, 0x4e, 0x73, 0xc1, 0x1a, 0x9c, 0x8d, 0x2c, 0x99, 0x40, 0x05, 0x98, 0xdf, 0xb3, - 0x0e, 0x2d, 0xfb, 0xc8, 0x62, 0xa3, 0xf4, 0xef, 0xec, 0xcb, 0x12, 0xca, 0xb1, 0x7b, 0xf9, 0x72, - 0x0a, 0xcd, 0x41, 0x6a, 0xf7, 0x66, 0x39, 0x8d, 0x16, 0xa1, 0x10, 0x28, 0x3a, 0x28, 0x67, 0x50, - 0x9e, 0xdf, 0x51, 0x97, 0xb3, 0x37, 0x3e, 0x85, 0x9c, 0xf8, 0x76, 0x0f, 0x3d, 0x80, 0x2c, 0xdb, - 0xf5, 0x6a, 0xf1, 0x56, 0x4b, 0xed, 0xbf, 0xba, 0x32, 0xcb, 0xac, 0xe5, 0x53, 0x44, 0xf2, 0xd6, - 0xe0, 0x97, 0x21, 0x79, 0xe3, 0xe2, 0x57, 0xff, 0xb1, 0x7c, 0xea, 0xab, 0xe7, 0xcb, 0xd2, 0xd7, - 0xcf, 0x97, 0xa5, 0x7f, 0x7d, 0xbe, 0x2c, 0xfd, 0xfb, 0xf3, 0x65, 0xe9, 0xc7, 0xff, 0xb9, 0x7c, - 0xea, 0xf3, 0x79, 0xce, 0xf2, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x15, 0xfa, 0xb7, 0x0f, - 0x48, 0x00, 0x00, + // 4507 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0x4d, 0x70, 0xdb, 0x48, + 0x76, 0x36, 0xf8, 0x23, 0x91, 0x8f, 0x94, 0x44, 0xb5, 0xec, 0x31, 0xcd, 0xb1, 0x45, 0x19, 0xfe, + 0x1d, 0xcf, 0x58, 0xf2, 0xda, 0x71, 0x66, 0x3c, 0x99, 0xad, 0x1d, 0x89, 0x92, 0x65, 0x5a, 0xb6, + 0xec, 0x81, 0xa8, 0xf9, 0xdb, 0xcd, 0x22, 0x10, 0xd0, 0x22, 0x11, 0x91, 0x00, 0x0d, 0x80, 0x16, + 0x35, 0x39, 0x6c, 0x65, 0x2b, 0x55, 0x49, 0x36, 0x95, 0xd4, 0xa6, 0x6a, 0xab, 0x92, 0x4d, 0x52, + 0xa9, 0xad, 0xe4, 0x92, 0x63, 0x0e, 0xa9, 0xe4, 0x98, 0x3d, 0xce, 0x2d, 0x73, 0x49, 0x55, 0x2a, + 0x5b, 0xe5, 0x4d, 0x9c, 0x5b, 0xae, 0xb9, 0xb9, 0x72, 0x48, 0xf5, 0x1f, 0x08, 0x90, 0x00, 0x29, + 0x79, 0xb0, 0xd9, 0xe4, 0x24, 0xe8, 0x75, 0xbf, 0x0f, 0xdd, 0xaf, 0xbb, 0x5f, 0x7f, 0xfd, 0xfa, + 0x81, 0x50, 0xd5, 0x6d, 0xfd, 0xc0, 0xb1, 0x35, 0xbd, 0xb5, 0xd2, 0x3d, 0x68, 0xae, 0xd0, 0xa7, + 0xee, 0xde, 0x8a, 0xd6, 0x35, 0x97, 0xbb, 0x8e, 0xed, 0xd9, 0x68, 0xde, 0xaf, 0xb0, 0xcc, 0x0b, + 0x2b, 0x4b, 0xd1, 0x3a, 0x86, 0xe6, 0x69, 0x4c, 0xa9, 0x22, 0x47, 0xd7, 0xc0, 0x8e, 0x63, 0x3b, + 0x2e, 0xaf, 0x73, 0x39, 0xba, 0x4e, 0x07, 0x7b, 0x5a, 0x00, 0xe9, 0x56, 0xb8, 0x96, 0xeb, 0xd9, + 0x8e, 0xd6, 0xc4, 0x2b, 0xd8, 0x6a, 0x9a, 0x96, 0xf8, 0x43, 0xb4, 0x9e, 0xeb, 0x3a, 0xd7, 0xb8, + 0x1b, 0xd6, 0xe8, 0x79, 0x66, 0x7b, 0xc5, 0x73, 0x34, 0xdd, 0xb4, 0x9a, 0x2b, 0x6e, 0x57, 0xb3, + 0x54, 0xdd, 0xb6, 0x3c, 0xdc, 0xf7, 0x54, 0x5d, 0x73, 0x1c, 0x13, 0x3b, 0x5c, 0xed, 0x6a, 0x84, + 0x5a, 0xab, 0xad, 0xaf, 0x78, 0x66, 0x07, 0xbb, 0x9e, 0xd6, 0xe9, 0xf2, 0x7a, 0xa7, 0x9b, 0x76, + 0xd3, 0xa6, 0x8f, 0x2b, 0xe4, 0x89, 0x49, 0xe5, 0xef, 0x41, 0x5e, 0xd1, 0xac, 0x26, 0xae, 0x5b, + 0xfb, 0x36, 0xfa, 0x00, 0x32, 0x06, 0x76, 0xf5, 0xb2, 0xb4, 0x24, 0x5d, 0x2f, 0xdc, 0x96, 0x97, + 0x47, 0x2c, 0xb8, 0x4c, 0xeb, 0xae, 0x63, 0x57, 0x77, 0xcc, 0xae, 0x67, 0x3b, 0x6b, 0x99, 0x2f, + 0x5f, 0x54, 0x4f, 0x29, 0x54, 0x0b, 0xfd, 0x0a, 0x64, 0xdb, 0x58, 0x73, 0x71, 0x39, 0x45, 0xd5, + 0xcb, 0x11, 0xea, 0x8f, 0x48, 0x39, 0x57, 0x62, 0x95, 0xe5, 0x97, 0x12, 0xcc, 0x2a, 0xd8, 0xed, + 0xda, 0x96, 0x8b, 0x1f, 0x60, 0xcd, 0xc0, 0x0e, 0xba, 0x05, 0x69, 0xaf, 0x6f, 0x95, 0xd3, 0x14, + 0x66, 0x31, 0x02, 0xa6, 0xe1, 0x68, 0x96, 0xab, 0xe9, 0x9e, 0x69, 0x5b, 0x0a, 0xa9, 0x8a, 0xde, + 0x83, 0x82, 0x83, 0xdd, 0x5e, 0x07, 0xab, 0xc4, 0x50, 0xe5, 0x0c, 0xd5, 0x3c, 0x1b, 0xa1, 0xb9, + 0xd3, 0xd5, 0x2c, 0x05, 0x58, 0x5d, 0xf2, 0x8c, 0xaa, 0x90, 0xb3, 0x7a, 0x1d, 0xf5, 0x00, 0x1f, + 0xb9, 0xe5, 0xec, 0x92, 0x74, 0x3d, 0xcd, 0x5b, 0x37, 0x6d, 0xf5, 0x3a, 0x5b, 0xf8, 0xc8, 0x45, + 0x35, 0x28, 0x38, 0xa4, 0xd3, 0xaa, 0x69, 0xed, 0xdb, 0x6e, 0x79, 0x6a, 0x29, 0x7d, 0xbd, 0x70, + 0xfb, 0x7c, 0x9c, 0x69, 0x88, 0x19, 0x39, 0x02, 0x38, 0x42, 0xe0, 0xca, 0x9b, 0x00, 0x9b, 0xd8, + 0x53, 0xf0, 0xb3, 0x1e, 0x76, 0x3d, 0x74, 0x0f, 0xa6, 0x5a, 0xb4, 0xa7, 0xdc, 0xd0, 0x71, 0x0d, + 0x5d, 0xcb, 0x11, 0xa0, 0xaf, 0x5e, 0x54, 0x25, 0x85, 0x2b, 0xc8, 0xdf, 0x97, 0xa0, 0x40, 0x91, + 0x98, 0xc1, 0x50, 0x6d, 0x08, 0xea, 0x62, 0x54, 0xc3, 0x42, 0xd6, 0x1d, 0x05, 0x45, 0xcb, 0x90, + 0x7d, 0xae, 0xb5, 0x7b, 0xe3, 0x06, 0xee, 0x63, 0x52, 0xae, 0xb0, 0x6a, 0xf2, 0x3f, 0x48, 0x00, + 0x4f, 0x7b, 0x09, 0x74, 0x87, 0x4c, 0x99, 0x63, 0xbd, 0x59, 0x4c, 0x19, 0x5a, 0x19, 0x9d, 0x87, + 0x29, 0xd3, 0x6a, 0x9b, 0x16, 0xa6, 0x53, 0x24, 0xc7, 0x0b, 0xb9, 0x0c, 0x55, 0x20, 0xbb, 0xd7, + 0x36, 0x2d, 0x83, 0xce, 0x02, 0x51, 0xc8, 0x44, 0xb2, 0x02, 0x05, 0xda, 0xf0, 0x04, 0xad, 0x27, + 0xff, 0x4c, 0x82, 0x33, 0x35, 0xdb, 0x32, 0x4c, 0x32, 0x1d, 0xb5, 0xf6, 0x2f, 0xd3, 0x30, 0x77, + 0x21, 0x8f, 0xfb, 0x5d, 0x95, 0x69, 0xa6, 0x27, 0x0c, 0x66, 0x0e, 0xf7, 0xbb, 0xf4, 0x69, 0xac, + 0xc5, 0x7e, 0x1d, 0xde, 0x18, 0xee, 0x5c, 0x92, 0xc6, 0xfb, 0x6d, 0x09, 0x66, 0xeb, 0x96, 0xe9, + 0xfd, 0x12, 0xad, 0x26, 0x7f, 0x0c, 0x73, 0x7e, 0x13, 0x92, 0xec, 0xdb, 0x33, 0x28, 0xd5, 0x2d, + 0xdd, 0xc1, 0x1d, 0x6c, 0x25, 0xd1, 0x39, 0x19, 0xf2, 0xa6, 0x80, 0xa3, 0x1d, 0x14, 0xae, 0x6a, + 0x20, 0x96, 0x7f, 0x0b, 0xe6, 0x03, 0xaf, 0x4c, 0xd2, 0x47, 0x5c, 0x84, 0xbc, 0x85, 0x0f, 0xd5, + 0x81, 0x79, 0xc5, 0xdb, 0x73, 0x16, 0x3e, 0xa4, 0x46, 0x95, 0x1f, 0xc2, 0xcc, 0x3a, 0x6e, 0x63, + 0x0f, 0x27, 0xe0, 0xe7, 0x76, 0x61, 0x56, 0x60, 0x25, 0x39, 0x24, 0x7f, 0x26, 0x01, 0xe2, 0xb8, + 0xc4, 0x39, 0x27, 0x30, 0x2a, 0x57, 0xc8, 0xce, 0xe3, 0xf5, 0x1c, 0x8b, 0x6d, 0x21, 0x41, 0x87, + 0x04, 0xac, 0x80, 0xee, 0x22, 0x03, 0x97, 0x95, 0x19, 0x75, 0x59, 0x0f, 0x33, 0xb9, 0x54, 0x29, + 0x2d, 0x1f, 0xc2, 0x42, 0xa8, 0x6d, 0x49, 0x0e, 0xdf, 0x9b, 0x90, 0xa1, 0xed, 0x4b, 0x2d, 0xa5, + 0xaf, 0x17, 0xd7, 0xa6, 0x5f, 0xbd, 0xa8, 0xa6, 0xb7, 0xf0, 0x91, 0x42, 0x85, 0xf2, 0x36, 0x14, + 0x76, 0x74, 0xcd, 0xfa, 0xfa, 0xd6, 0xe0, 0x1d, 0xf9, 0x81, 0x04, 0x45, 0x06, 0x98, 0x64, 0x17, + 0xee, 0x42, 0xc6, 0xb1, 0x0f, 0x59, 0x17, 0x0a, 0xb7, 0xdf, 0x8c, 0x80, 0xd8, 0xc2, 0x47, 0xc1, + 0xe5, 0x4d, 0xab, 0xcb, 0xbb, 0x80, 0x14, 0xfc, 0x1c, 0x3b, 0x2e, 0x4e, 0xb4, 0x8f, 0x7f, 0x2c, + 0xc1, 0x42, 0x08, 0xf7, 0xff, 0x40, 0x57, 0x0f, 0xe1, 0x6c, 0xad, 0x85, 0xf5, 0x83, 0x9a, 0x6d, + 0xb9, 0xa6, 0xeb, 0x61, 0x4b, 0x3f, 0x4a, 0x60, 0x86, 0x5f, 0x84, 0xfc, 0xa1, 0xe9, 0xb5, 0x54, + 0xc3, 0xdc, 0xdf, 0xa7, 0x2b, 0x5f, 0xcc, 0xde, 0x1c, 0x11, 0xaf, 0x9b, 0xfb, 0xfb, 0xb2, 0x0a, + 0xe5, 0xd1, 0x17, 0x27, 0xb9, 0x6e, 0xff, 0x44, 0x82, 0x85, 0x5a, 0x8b, 0x2c, 0x8b, 0xfb, 0x8e, + 0xfd, 0x05, 0x4e, 0x60, 0x18, 0xc9, 0x8a, 0xdc, 0xa7, 0x58, 0xa1, 0x3e, 0x71, 0x19, 0xba, 0x06, + 0xc5, 0x4e, 0xcf, 0xf5, 0x54, 0x32, 0xc0, 0xa6, 0xcd, 0xb8, 0x68, 0x9e, 0xd7, 0x29, 0x90, 0x92, + 0x8f, 0x59, 0x81, 0xfc, 0xb3, 0x14, 0x9c, 0x0e, 0xb7, 0x2c, 0xc9, 0x89, 0x70, 0x13, 0xe6, 0x28, + 0x8b, 0x74, 0x55, 0x6d, 0x7f, 0x1f, 0xeb, 0x1e, 0x36, 0x42, 0xbe, 0x77, 0x96, 0x15, 0xae, 0xf2, + 0x32, 0xf4, 0x0e, 0xcc, 0x74, 0x4c, 0x4b, 0x75, 0x3d, 0xcd, 0xf1, 0x88, 0x3f, 0xa2, 0xcd, 0x2e, + 0xae, 0xe5, 0x5e, 0xbd, 0xa8, 0x66, 0x14, 0xb2, 0xde, 0x0b, 0x1d, 0xd3, 0xda, 0x21, 0xa5, 0x5b, + 0xf8, 0x08, 0xed, 0xc3, 0x14, 0x39, 0x95, 0x60, 0xb7, 0x9c, 0xa1, 0xf3, 0xec, 0x4e, 0x44, 0x0b, + 0xa3, 0xba, 0xb6, 0xbc, 0x43, 0xb5, 0x36, 0x2c, 0xcf, 0x39, 0x5a, 0x3b, 0x47, 0x1a, 0xf2, 0xfd, + 0x9f, 0x57, 0xa7, 0xa9, 0xb0, 0xbe, 0xfe, 0x83, 0x9f, 0x57, 0xa7, 0xb6, 0x6d, 0x03, 0xd7, 0xd7, + 0x15, 0x8e, 0x5e, 0xb9, 0x07, 0x85, 0x80, 0x06, 0x2a, 0x41, 0x9a, 0x34, 0x8d, 0x58, 0x25, 0xab, + 0x90, 0x47, 0x74, 0x3a, 0xb8, 0x6d, 0x67, 0xf9, 0xb6, 0xfc, 0x7e, 0xea, 0x3d, 0x49, 0x6e, 0xc0, + 0xd9, 0x35, 0xdc, 0x34, 0xad, 0x20, 0xe1, 0xff, 0xfa, 0x9b, 0x8b, 0x0a, 0xe5, 0x51, 0xd4, 0x24, + 0xa7, 0xeb, 0x3f, 0xa5, 0xe0, 0xcc, 0x86, 0x65, 0x24, 0xda, 0x6a, 0x32, 0x61, 0x75, 0xbb, 0xd3, + 0x31, 0xbd, 0xf0, 0x84, 0x65, 0x32, 0x74, 0x0f, 0x72, 0x06, 0xd6, 0x0c, 0x9f, 0x15, 0x17, 0x6e, + 0x5f, 0x08, 0x40, 0x93, 0x43, 0xe1, 0x72, 0xab, 0xad, 0x2f, 0x37, 0xc4, 0xa1, 0x50, 0xf1, 0xab, + 0xa3, 0xdf, 0x80, 0xb3, 0xa6, 0xe5, 0x61, 0xc7, 0xd2, 0xda, 0x2a, 0x43, 0x53, 0x3d, 0xc7, 0x6c, + 0x36, 0xb1, 0xc3, 0x0f, 0x52, 0xd7, 0x23, 0x1a, 0x59, 0xe7, 0x1a, 0x35, 0xaa, 0xd0, 0x60, 0xf5, + 0x95, 0x33, 0x66, 0x94, 0x18, 0x7d, 0x08, 0x45, 0x52, 0x60, 0x79, 0xf4, 0x78, 0x46, 0x0e, 0x5a, + 0xe9, 0x71, 0x7d, 0xe7, 0xcb, 0x8c, 0xa9, 0x10, 0x89, 0x2b, 0xff, 0x58, 0x82, 0x37, 0x86, 0x2d, + 0x9a, 0xec, 0x11, 0xa8, 0x64, 0x5b, 0x58, 0xed, 0xb6, 0x34, 0x17, 0x73, 0x23, 0x84, 0x76, 0xea, + 0x59, 0xdb, 0xc2, 0x4f, 0x49, 0x21, 0xeb, 0x18, 0xdb, 0x04, 0x1e, 0x66, 0x72, 0xe9, 0x52, 0x46, + 0xf6, 0x60, 0x7e, 0xd5, 0x20, 0x0b, 0xab, 0xdb, 0x36, 0x93, 0x20, 0x7a, 0x97, 0x21, 0xef, 0x12, + 0x28, 0xba, 0x82, 0x53, 0x74, 0x05, 0xfb, 0x1b, 0x76, 0x8e, 0x96, 0x6c, 0xe1, 0x23, 0xf9, 0x33, + 0x40, 0xc1, 0xb7, 0x26, 0x39, 0x7d, 0xb7, 0x79, 0x87, 0x1e, 0x63, 0x27, 0x09, 0x8e, 0xe4, 0x37, + 0x95, 0xe3, 0x25, 0xd9, 0xd4, 0xef, 0xc1, 0x39, 0x0a, 0x4d, 0x27, 0xc6, 0x3e, 0x76, 0x68, 0x80, + 0x21, 0x81, 0x31, 0xb8, 0x06, 0x53, 0x9e, 0xe6, 0x34, 0x31, 0x5b, 0x6c, 0xd9, 0xb5, 0x39, 0x52, + 0xe3, 0xd5, 0x0b, 0xdf, 0xcd, 0x29, 0xbc, 0x58, 0xd6, 0xa0, 0x12, 0xd5, 0x80, 0x24, 0xfb, 0xf8, + 0x9f, 0x12, 0x7f, 0x07, 0x73, 0xc6, 0x0a, 0xee, 0xb6, 0x4d, 0x5d, 0x73, 0x13, 0xe8, 0xe5, 0x16, + 0x14, 0x74, 0x8a, 0xa9, 0x7a, 0x47, 0x5d, 0xe6, 0x7e, 0x67, 0x6f, 0x5f, 0x8e, 0x6c, 0x23, 0x7d, + 0x27, 0x6b, 0x40, 0xe3, 0xa8, 0x2b, 0x78, 0x07, 0xe8, 0xbe, 0x04, 0xad, 0xc3, 0x34, 0xb3, 0x09, + 0x61, 0xc1, 0x64, 0x7d, 0x8f, 0x01, 0x22, 0x0b, 0xb8, 0x41, 0x2b, 0x8b, 0x70, 0x0b, 0x57, 0x95, + 0xf7, 0xe0, 0xcd, 0xc8, 0xbe, 0x26, 0x7d, 0x0a, 0xa0, 0x1c, 0xfb, 0x91, 0x6d, 0x1f, 0xf4, 0xba, + 0x09, 0x18, 0xf2, 0x12, 0x40, 0x47, 0xeb, 0xab, 0x6c, 0x3b, 0xe6, 0x53, 0x86, 0x1f, 0xce, 0x3a, + 0x5a, 0x9f, 0xbe, 0xcb, 0x45, 0x8b, 0x30, 0xed, 0x30, 0xc6, 0x18, 0x72, 0x2d, 0x42, 0xc8, 0xbd, + 0xc9, 0x7f, 0x11, 0x62, 0x19, 0x6c, 0x5c, 0x92, 0x6e, 0xee, 0x43, 0x98, 0xf2, 0xdb, 0x98, 0x3e, + 0x51, 0x88, 0x8f, 0xeb, 0xa1, 0x5d, 0x98, 0xef, 0x3a, 0x78, 0x1f, 0x7b, 0x7a, 0x0b, 0x1b, 0xa2, + 0xc3, 0xe9, 0x13, 0x82, 0x95, 0x06, 0x10, 0xcc, 0x36, 0xf2, 0xef, 0x4a, 0xb0, 0xf0, 0x00, 0x6b, + 0x8e, 0xb7, 0x87, 0x35, 0xaf, 0xd1, 0x4f, 0x62, 0xbf, 0xbc, 0x0b, 0x69, 0xcb, 0x3e, 0xe4, 0xa1, + 0x80, 0xf1, 0x9b, 0x21, 0x6f, 0x16, 0xa9, 0x2f, 0x7f, 0x1b, 0x4e, 0x87, 0x1b, 0x92, 0xe4, 0xcc, + 0xfb, 0x8b, 0x34, 0xe4, 0x37, 0x6b, 0x09, 0x74, 0xee, 0x03, 0x7e, 0x9e, 0x8b, 0xb7, 0xbc, 0xff, + 0x9a, 0xe5, 0xcd, 0xda, 0x16, 0x3e, 0x12, 0x07, 0x05, 0xa2, 0x85, 0x56, 0x21, 0xef, 0xb5, 0x1c, + 0xec, 0xb6, 0xec, 0xb6, 0xc1, 0xf7, 0xf8, 0x63, 0x19, 0x68, 0xa0, 0x85, 0xda, 0x70, 0xc6, 0xeb, + 0x5b, 0x74, 0x3f, 0x57, 0x9b, 0xba, 0x3a, 0x80, 0xcb, 0x1e, 0x07, 0xae, 0x42, 0xe0, 0x5e, 0xbe, + 0xa8, 0xa2, 0x46, 0xdf, 0x22, 0x3d, 0xdc, 0xac, 0x35, 0x04, 0x80, 0x82, 0x3c, 0x2e, 0xd3, 0x7d, + 0x59, 0x05, 0x43, 0x96, 0xf6, 0x02, 0x9d, 0x1b, 0x90, 0xc7, 0xc0, 0xae, 0x48, 0x59, 0x24, 0xe9, + 0x94, 0x78, 0xc1, 0x49, 0x46, 0x7d, 0xa0, 0x25, 0x7f, 0x04, 0x40, 0xcc, 0x96, 0xe4, 0x88, 0xbf, + 0x4c, 0xc3, 0xec, 0xd3, 0x9e, 0xdb, 0x4a, 0x66, 0x4e, 0xd7, 0x00, 0xba, 0x3d, 0xb7, 0x85, 0x1d, + 0xd5, 0xeb, 0x5b, 0xbc, 0x93, 0x13, 0x02, 0xe4, 0xa2, 0x97, 0x4c, 0xaf, 0xd1, 0xb7, 0xd0, 0x13, + 0x0e, 0x82, 0xd5, 0x41, 0x94, 0xfd, 0x46, 0x00, 0x84, 0x5f, 0x55, 0x2c, 0xb3, 0x3b, 0x8a, 0x65, + 0x71, 0x55, 0xb1, 0xdc, 0xe8, 0x5b, 0x8f, 0xb1, 0xa7, 0x85, 0x00, 0x31, 0x01, 0xfc, 0x00, 0xa6, + 0xc9, 0x3f, 0xaa, 0x67, 0x9f, 0x64, 0x32, 0x4d, 0x11, 0x9d, 0x86, 0x2d, 0xd6, 0x69, 0xf6, 0x64, + 0xeb, 0x94, 0x0c, 0x37, 0x7b, 0x29, 0xd9, 0xb9, 0xa6, 0xe8, 0xce, 0x15, 0x65, 0x09, 0x6e, 0xfb, + 0xc0, 0x9e, 0x95, 0xa3, 0xef, 0x25, 0x3b, 0x56, 0x05, 0xb2, 0xfb, 0xb6, 0xa3, 0xe3, 0xf2, 0x74, + 0x30, 0xee, 0x49, 0x45, 0xe8, 0x6d, 0x98, 0xb5, 0xf0, 0xa1, 0xda, 0x75, 0x4c, 0xdb, 0x31, 0x3d, + 0x13, 0xbb, 0xe5, 0x5c, 0xa0, 0xd2, 0x8c, 0x85, 0x0f, 0x9f, 0xfa, 0x45, 0xf2, 0x9f, 0x4b, 0x30, + 0xe7, 0x0f, 0x72, 0x92, 0xfe, 0xba, 0x16, 0x1a, 0xaa, 0x93, 0x8f, 0x37, 0x19, 0x1e, 0xf9, 0x87, + 0x12, 0xcc, 0x7d, 0xd4, 0xc3, 0xce, 0x51, 0x32, 0x73, 0x70, 0x8d, 0xdd, 0xce, 0xa4, 0x5e, 0x73, + 0xde, 0x10, 0x65, 0xf9, 0x95, 0x04, 0xa5, 0x41, 0x93, 0x92, 0xb4, 0xd8, 0x06, 0x14, 0x9e, 0xf5, + 0xb0, 0x63, 0x62, 0xe3, 0xc4, 0x26, 0x03, 0xae, 0x48, 0xa6, 0xf4, 0xe7, 0x50, 0x3c, 0xd4, 0x4c, + 0xcf, 0xb4, 0x9a, 0x04, 0x86, 0xf9, 0xd9, 0xe2, 0xda, 0xbb, 0xff, 0xfa, 0xa2, 0x7a, 0xa7, 0x69, + 0x7a, 0xad, 0xde, 0xde, 0xb2, 0x6e, 0x77, 0x56, 0x7c, 0x54, 0x63, 0x6f, 0x25, 0xe2, 0x16, 0xae, + 0xd7, 0x33, 0x8d, 0xe5, 0xdd, 0xdd, 0xfa, 0xba, 0x52, 0xe0, 0x60, 0x8d, 0xbe, 0xe5, 0xca, 0xbf, + 0x93, 0x82, 0xd3, 0x0a, 0x76, 0xed, 0xf6, 0x73, 0x5c, 0xa7, 0x47, 0x9c, 0x04, 0x06, 0xe5, 0x09, + 0x00, 0x3f, 0x61, 0x7d, 0x9d, 0xb1, 0xc9, 0x33, 0x0c, 0x62, 0x80, 0x35, 0x98, 0x72, 0x3d, 0xcd, + 0xeb, 0xb1, 0x90, 0x66, 0x34, 0x2b, 0x0c, 0x98, 0x70, 0x87, 0xd6, 0x15, 0x2b, 0x9b, 0x69, 0x92, + 0x13, 0x6b, 0xd7, 0x36, 0x5d, 0xdb, 0x0a, 0x07, 0x3d, 0x99, 0x4c, 0xfe, 0x0e, 0x9c, 0x19, 0xb2, + 0x42, 0x92, 0x7e, 0xf7, 0xf7, 0x53, 0x70, 0x2e, 0x0c, 0x9f, 0x50, 0xc0, 0xf7, 0xff, 0xa1, 0xa5, + 0x67, 0xa1, 0xb8, 0x6d, 0xdb, 0x3e, 0x95, 0x94, 0x67, 0xa0, 0xc0, 0xfe, 0xa7, 0xc6, 0x20, 0x47, + 0x98, 0x28, 0x4b, 0x25, 0x7b, 0x4c, 0x2b, 0x26, 0x74, 0x98, 0x7c, 0xcd, 0x3b, 0x9e, 0x06, 0xcc, + 0xfc, 0x02, 0x4e, 0x9f, 0x7f, 0x25, 0x01, 0x6a, 0x38, 0x3d, 0x4b, 0xd7, 0x3c, 0xfc, 0xc8, 0x6e, + 0x26, 0xd0, 0xbb, 0x0a, 0x64, 0x4d, 0xcb, 0xc0, 0x7d, 0xda, 0xbb, 0x8c, 0xe8, 0x03, 0x15, 0xa1, + 0xbb, 0x90, 0xe3, 0x37, 0xd1, 0x06, 0x9d, 0x2a, 0x69, 0x9f, 0x46, 0x4d, 0xb3, 0xbb, 0xe7, 0xf5, + 0x57, 0x83, 0x47, 0x65, 0x9a, 0x5d, 0x3f, 0x1b, 0xf2, 0xe7, 0xb0, 0x10, 0x6a, 0x63, 0x92, 0x06, + 0xf8, 0x47, 0x1a, 0x05, 0xa7, 0xbd, 0x4e, 0xea, 0xe4, 0xfd, 0x5a, 0x59, 0x04, 0xe8, 0x5d, 0x80, + 0xae, 0x83, 0x9f, 0xab, 0x4c, 0x35, 0x3d, 0x5e, 0x55, 0xc9, 0x93, 0xba, 0xf4, 0x51, 0xfe, 0xa9, + 0x04, 0xa7, 0x93, 0x0e, 0x1e, 0xfc, 0x2f, 0x77, 0xe1, 0x31, 0x94, 0xe8, 0x43, 0xdd, 0xda, 0xb7, + 0x13, 0x88, 0xd6, 0xfc, 0x91, 0x04, 0xf3, 0x01, 0xbc, 0x24, 0x37, 0xe7, 0x13, 0x19, 0x46, 0x12, + 0x19, 0x22, 0xdf, 0x26, 0xdb, 0x65, 0x70, 0x8e, 0x25, 0x7a, 0x01, 0x9d, 0x82, 0x37, 0x6a, 0x76, + 0xa7, 0xdb, 0xf3, 0x30, 0xbd, 0xc2, 0x70, 0x7b, 0x9d, 0x04, 0x66, 0xc0, 0x22, 0x4c, 0x8b, 0x9b, + 0x03, 0xd2, 0xd5, 0x19, 0x71, 0xd4, 0xe7, 0x42, 0xf4, 0x9b, 0x50, 0xd0, 0xf9, 0xdb, 0xc4, 0x6a, + 0x2e, 0xae, 0xd5, 0x49, 0x9d, 0xd7, 0x64, 0x18, 0x2f, 0x5f, 0x54, 0x41, 0xb4, 0xbf, 0xbe, 0xae, + 0x80, 0x40, 0xaf, 0x1b, 0x68, 0x09, 0x72, 0xae, 0xa5, 0x75, 0xdd, 0x96, 0x1d, 0x0e, 0x69, 0xfa, + 0x52, 0xf9, 0xbb, 0x70, 0x76, 0xc4, 0x04, 0x49, 0xda, 0xf8, 0x3b, 0x50, 0x5d, 0xc7, 0x5d, 0x07, + 0x13, 0x17, 0x64, 0x7c, 0x8c, 0x1d, 0x73, 0xff, 0x28, 0x39, 0x5b, 0xcb, 0x4d, 0x58, 0x8a, 0x47, + 0x4f, 0xb2, 0x1b, 0x0f, 0x01, 0xc8, 0x61, 0x13, 0x1f, 0x3a, 0xa6, 0x87, 0xd1, 0x05, 0x00, 0xbb, + 0x6d, 0xa8, 0x5d, 0x07, 0xef, 0x9b, 0x7d, 0x76, 0x20, 0x55, 0xf2, 0x76, 0xdb, 0x78, 0x4a, 0x05, + 0xa4, 0x98, 0x9d, 0x1f, 0x68, 0x71, 0x8a, 0x15, 0xd3, 0x53, 0x03, 0x11, 0xc8, 0x7f, 0x37, 0x0d, + 0x33, 0x1b, 0xfd, 0xae, 0xed, 0x78, 0x3b, 0x8c, 0x2f, 0xa0, 0x87, 0x90, 0xeb, 0x3a, 0xf6, 0x73, + 0x53, 0x34, 0x72, 0x36, 0x32, 0xec, 0x1e, 0xd2, 0x79, 0xca, 0xeb, 0xfb, 0x07, 0x1b, 0xfe, 0x3f, + 0x52, 0x20, 0xff, 0xc8, 0xd6, 0xb5, 0xf6, 0x7d, 0xb3, 0x2d, 0xd6, 0xda, 0xf2, 0x24, 0xb0, 0x65, + 0x5f, 0xe3, 0xa9, 0xe6, 0xb5, 0x04, 0x4d, 0xf1, 0x85, 0x68, 0x13, 0x72, 0x0f, 0x3c, 0xaf, 0x4b, + 0x0a, 0xb9, 0x73, 0xba, 0x32, 0x11, 0x92, 0x28, 0x88, 0xc6, 0x09, 0x65, 0xa4, 0xc0, 0xfc, 0xa6, + 0x6d, 0x37, 0xdb, 0xb8, 0xd6, 0xb6, 0x7b, 0x46, 0xcd, 0xb6, 0xf6, 0xcd, 0x26, 0x3f, 0x37, 0x5e, + 0x9e, 0x88, 0xb8, 0x59, 0xdb, 0x51, 0x46, 0xd5, 0xd1, 0xb7, 0x20, 0xb7, 0x73, 0x87, 0x43, 0xb1, + 0x83, 0xe4, 0xa5, 0x89, 0x50, 0x3b, 0x77, 0x14, 0x5f, 0x09, 0x3d, 0x80, 0xc2, 0xea, 0x17, 0x3d, + 0x07, 0x73, 0x8c, 0x29, 0x8a, 0x71, 0x75, 0x22, 0x06, 0xd5, 0x51, 0x82, 0xaa, 0x95, 0xb7, 0x60, + 0x26, 0x64, 0x49, 0x54, 0x86, 0x4c, 0x97, 0x18, 0x4d, 0x0a, 0x5c, 0x21, 0x52, 0x49, 0xe5, 0x2a, + 0x64, 0x88, 0x55, 0x88, 0xb7, 0xd8, 0xd3, 0x5c, 0xbc, 0xeb, 0x98, 0xa1, 0x4a, 0x42, 0x58, 0xf9, + 0x1b, 0x09, 0x52, 0x3b, 0x77, 0x08, 0xc9, 0xdb, 0xeb, 0xe9, 0x07, 0xd8, 0x0b, 0xd5, 0xe2, 0x32, + 0x4a, 0x01, 0x07, 0x93, 0xcd, 0x2f, 0x65, 0x32, 0x74, 0x09, 0x40, 0xd3, 0x75, 0xec, 0xba, 0xfe, + 0xb5, 0xa0, 0xa8, 0x91, 0x67, 0xf2, 0x2d, 0x7c, 0x44, 0x20, 0x5c, 0xac, 0x3b, 0x98, 0xf9, 0x09, + 0x1f, 0x82, 0xc9, 0x08, 0x84, 0x87, 0x3b, 0x5d, 0xd5, 0xb3, 0x0f, 0xb0, 0x45, 0xad, 0xec, 0x43, + 0x10, 0x79, 0x83, 0x88, 0x2b, 0xab, 0x90, 0xde, 0xac, 0xed, 0x7c, 0x9d, 0xa6, 0x56, 0x7e, 0x2c, + 0x41, 0x96, 0x1a, 0x14, 0xc9, 0x90, 0xd7, 0x6d, 0xcb, 0xd3, 0x4c, 0x8b, 0xaf, 0x09, 0xff, 0x85, + 0xbe, 0x78, 0x42, 0xb7, 0xaf, 0x41, 0x51, 0xd3, 0x75, 0xbb, 0x67, 0x79, 0xaa, 0xa5, 0x75, 0x70, + 0xf8, 0x1a, 0x97, 0x97, 0x6c, 0x6b, 0x1d, 0x8c, 0xae, 0x80, 0xf8, 0x97, 0x1a, 0x28, 0xd8, 0x7f, + 0xe0, 0x05, 0x5b, 0xf8, 0x48, 0xfe, 0x4b, 0x09, 0xe6, 0x3f, 0x21, 0xcb, 0x7f, 0x4d, 0xf3, 0xf4, + 0x56, 0x02, 0x1b, 0xc5, 0xfb, 0x90, 0x37, 0x34, 0x4f, 0x63, 0x69, 0x8b, 0xa9, 0xf1, 0xda, 0x7c, + 0x21, 0x91, 0xfa, 0x34, 0x75, 0x11, 0x41, 0x86, 0x3c, 0xb3, 0xdd, 0x43, 0xa1, 0xcf, 0xf2, 0x67, + 0x80, 0x82, 0xed, 0x4b, 0xd2, 0xfd, 0x7d, 0x25, 0x09, 0x97, 0x95, 0x40, 0xbf, 0x3f, 0x84, 0x69, + 0x7e, 0x50, 0xe2, 0xbd, 0x5e, 0x9a, 0xb4, 0xd6, 0xc4, 0xa2, 0xe0, 0x6a, 0x68, 0x0d, 0x80, 0xdd, + 0x73, 0x7b, 0x66, 0xe7, 0x78, 0x57, 0x9e, 0x62, 0xf2, 0x50, 0x35, 0x22, 0x95, 0xff, 0x36, 0x05, + 0xb3, 0xa2, 0x4b, 0x49, 0xf2, 0x9c, 0x35, 0xc8, 0xee, 0x9b, 0x6d, 0x3f, 0xca, 0x1e, 0xef, 0x47, + 0xfc, 0x2b, 0x75, 0xe2, 0x2d, 0xfc, 0x00, 0x14, 0x51, 0xad, 0xfc, 0x48, 0x82, 0x0c, 0x75, 0xbc, + 0xdf, 0x80, 0x0c, 0x9d, 0x1d, 0xd2, 0x71, 0x66, 0x07, 0xad, 0xea, 0xbb, 0x9c, 0xd4, 0xb0, 0xcb, + 0x41, 0x17, 0xc5, 0x7c, 0x33, 0xbf, 0xc0, 0xfc, 0x10, 0x11, 0x9c, 0x56, 0xe6, 0x17, 0x18, 0xbd, + 0x01, 0x53, 0x6e, 0x4b, 0xbb, 0xfb, 0x8d, 0xdb, 0x74, 0x8d, 0x17, 0x15, 0xfe, 0xdf, 0xc3, 0x4c, + 0x2e, 0x53, 0xca, 0xca, 0x7f, 0x90, 0x86, 0x99, 0x7a, 0x27, 0xa1, 0x59, 0xb0, 0x1a, 0xb6, 0x53, + 0xd4, 0x86, 0x12, 0x7a, 0xd7, 0xa8, 0x99, 0xc2, 0x0b, 0x28, 0x7d, 0xb2, 0x05, 0x74, 0x1f, 0x8a, + 0x07, 0xf8, 0x48, 0x75, 0xd8, 0x8e, 0x2e, 0xd2, 0x20, 0x2e, 0x44, 0xa7, 0xdb, 0xf0, 0x7d, 0x5f, + 0x38, 0x8f, 0x03, 0x5f, 0xe2, 0x56, 0xfa, 0x7c, 0xa4, 0xde, 0x83, 0xb4, 0x61, 0x0a, 0x33, 0x1c, + 0x77, 0x42, 0x13, 0x95, 0x31, 0x03, 0x36, 0x18, 0x8d, 0xcc, 0xd0, 0x68, 0xa4, 0x4b, 0x19, 0x79, + 0x17, 0x66, 0x85, 0x81, 0x92, 0x5c, 0xea, 0xff, 0xbd, 0x00, 0x45, 0x6e, 0xf2, 0x5d, 0x8b, 0xf0, + 0xd5, 0x15, 0x48, 0x37, 0xb9, 0x33, 0x8f, 0x36, 0xd0, 0x20, 0xbb, 0x59, 0x21, 0x35, 0x89, 0x42, + 0xb7, 0xe7, 0x45, 0x84, 0xe1, 0x07, 0x71, 0xd9, 0x81, 0x42, 0xb7, 0xe7, 0xa1, 0x8f, 0x60, 0x4e, + 0x1f, 0xe4, 0x99, 0xaa, 0x44, 0x39, 0x1d, 0x9b, 0x7c, 0x10, 0x99, 0x6e, 0xab, 0xcc, 0xea, 0x21, + 0x31, 0x5a, 0x0d, 0x26, 0x4c, 0x66, 0x62, 0x59, 0xc1, 0x70, 0x8e, 0x66, 0x20, 0x9f, 0x12, 0xbd, + 0x07, 0x53, 0x06, 0x4d, 0xc9, 0xe3, 0xac, 0x22, 0x6a, 0x50, 0x43, 0x39, 0x8f, 0x0a, 0xaf, 0x8f, + 0x1e, 0x40, 0x91, 0x3d, 0xb1, 0x3b, 0x32, 0xce, 0x28, 0xae, 0xc4, 0xeb, 0x07, 0xc2, 0x53, 0x4a, + 0xc1, 0x18, 0xc8, 0xd0, 0x6d, 0xc8, 0xb8, 0xba, 0x66, 0xd1, 0x20, 0x75, 0x74, 0x28, 0x33, 0x90, + 0xd8, 0xa6, 0xd0, 0xba, 0xe8, 0x13, 0x98, 0xdf, 0xc3, 0x4d, 0xd3, 0x52, 0xbd, 0x41, 0xe0, 0x88, + 0x06, 0xb0, 0xc3, 0xb1, 0x2a, 0x01, 0x10, 0x93, 0x63, 0xa3, 0x94, 0xf6, 0x86, 0x0a, 0xc8, 0x30, + 0x61, 0xcb, 0x08, 0xc1, 0xe6, 0x63, 0x87, 0x29, 0x32, 0x05, 0x46, 0x99, 0xc5, 0x21, 0x31, 0xda, + 0x80, 0x82, 0x66, 0xd0, 0xb4, 0xa5, 0x6e, 0xdb, 0xf4, 0xca, 0x10, 0xcb, 0x04, 0x47, 0x92, 0x2c, + 0x14, 0xd0, 0x7c, 0xd1, 0x00, 0xa6, 0x83, 0x9d, 0x26, 0x2e, 0x17, 0xc6, 0xc3, 0x04, 0xa3, 0x51, + 0x1c, 0x86, 0x8a, 0xd0, 0x16, 0xcc, 0xb4, 0xc4, 0xf5, 0x1f, 0x8d, 0xf0, 0x15, 0x63, 0xa9, 0x60, + 0xc4, 0x7d, 0xa5, 0x52, 0x6c, 0x05, 0x84, 0xe8, 0x1d, 0x48, 0x35, 0xf5, 0xf2, 0x0c, 0x45, 0x38, + 0x3f, 0xee, 0x8e, 0x4e, 0x49, 0x35, 0x75, 0xf4, 0x01, 0xe4, 0xd8, 0x8d, 0x46, 0xdf, 0x2a, 0xcf, + 0xc6, 0x2e, 0xde, 0xf0, 0x65, 0x92, 0x42, 0x6f, 0x5e, 0xc8, 0xbb, 0x1e, 0x40, 0x91, 0x45, 0x87, + 0xda, 0xf4, 0xde, 0xb8, 0x3c, 0x17, 0x3b, 0xe1, 0x46, 0xaf, 0xbe, 0x15, 0xf6, 0x89, 0x03, 0x93, + 0xa1, 0x6d, 0x98, 0x75, 0x58, 0x3c, 0x50, 0x65, 0x51, 0xca, 0x72, 0x89, 0x62, 0x5d, 0x8b, 0x76, + 0x25, 0x23, 0x71, 0x6c, 0x65, 0xc6, 0x09, 0x4a, 0xd1, 0x77, 0xe1, 0x74, 0x18, 0x8f, 0x2f, 0x89, + 0x79, 0x8a, 0xfa, 0xce, 0x44, 0xd4, 0xe0, 0xca, 0x40, 0xce, 0x48, 0x11, 0xba, 0x0b, 0x59, 0x36, + 0xe6, 0x88, 0x02, 0x56, 0x23, 0x00, 0x43, 0xc3, 0xcd, 0x6a, 0x13, 0x83, 0x79, 0x3c, 0x2e, 0xa6, + 0xb6, 0xed, 0x66, 0x79, 0x21, 0xd6, 0x60, 0xa3, 0x21, 0x3e, 0xa5, 0xe0, 0x0d, 0x64, 0x64, 0xce, + 0x38, 0x4c, 0xce, 0x83, 0x37, 0xa7, 0x63, 0xe7, 0x4c, 0x44, 0xb0, 0x4c, 0x29, 0x3a, 0x01, 0x21, + 0x1d, 0x47, 0x96, 0x10, 0xa0, 0xd2, 0x65, 0x7f, 0x26, 0x7e, 0x1c, 0x47, 0xd2, 0x5a, 0x95, 0x82, + 0x33, 0x90, 0xa1, 0x06, 0x94, 0x74, 0x76, 0xac, 0x57, 0x45, 0x38, 0xa0, 0xfc, 0x06, 0x45, 0x7b, + 0x2b, 0xd2, 0xa7, 0x46, 0x05, 0x41, 0x94, 0x39, 0x3d, 0x2c, 0x47, 0x5d, 0xa8, 0x18, 0xfe, 0x71, + 0x5b, 0x7d, 0x4e, 0xcf, 0xdb, 0x03, 0xfc, 0xb3, 0x14, 0xff, 0x76, 0xa4, 0x9b, 0x1b, 0x1b, 0x01, + 0x50, 0xca, 0x46, 0x4c, 0x05, 0xe2, 0xcc, 0x28, 0xbe, 0xaa, 0x0f, 0xd2, 0x4b, 0xcb, 0xe5, 0x58, + 0x67, 0x16, 0x93, 0x02, 0xab, 0x94, 0xf4, 0xa1, 0x02, 0xe2, 0x59, 0x2d, 0xdb, 0xee, 0x96, 0xcf, + 0xc5, 0x7a, 0xd6, 0x40, 0x98, 0x5c, 0xa1, 0x75, 0xc9, 0x22, 0x35, 0x2d, 0xd3, 0xa3, 0x1b, 0x54, + 0x25, 0x76, 0x91, 0x86, 0x3f, 0x69, 0x50, 0xa6, 0x4d, 0xf6, 0x3f, 0x99, 0x29, 0x3c, 0xe1, 0x86, + 0xe7, 0x9e, 0xbe, 0x19, 0x3b, 0x53, 0x22, 0xd2, 0x5d, 0x95, 0xa2, 0x1e, 0x10, 0x92, 0x75, 0xea, + 0xf1, 0xc8, 0x25, 0x9f, 0x77, 0xe7, 0x63, 0xd7, 0x69, 0x54, 0x88, 0x53, 0x99, 0xf1, 0x82, 0x52, + 0xb2, 0x4e, 0x99, 0x07, 0x1d, 0x42, 0xbd, 0x10, 0xbb, 0x4e, 0x63, 0x53, 0xaf, 0x14, 0xa4, 0x8d, + 0x14, 0x11, 0xc6, 0x4e, 0x01, 0xe9, 0x97, 0x54, 0xe5, 0xc5, 0xd8, 0x0d, 0x79, 0x38, 0x98, 0xa9, + 0xe4, 0xdb, 0x42, 0x42, 0xbc, 0x3c, 0x25, 0x5d, 0xea, 0x1e, 0x39, 0xe0, 0x94, 0xab, 0xb1, 0x5e, + 0x7e, 0xe4, 0x94, 0xa6, 0xc0, 0xa1, 0x2f, 0x22, 0xfb, 0x3a, 0xa6, 0x5c, 0xac, 0xbc, 0x34, 0x81, + 0xac, 0xf9, 0xfb, 0x3a, 0xab, 0x8f, 0xbe, 0x05, 0xf9, 0x67, 0x3d, 0xec, 0x1c, 0x51, 0x2f, 0x7d, + 0x31, 0xf6, 0x3b, 0xb9, 0xa1, 0xfb, 0x56, 0x25, 0xf7, 0x8c, 0x0b, 0xc8, 0xab, 0x4d, 0x4a, 0xd9, + 0xca, 0x72, 0xec, 0xab, 0x43, 0xa4, 0x57, 0xe1, 0xf5, 0x91, 0x06, 0x67, 0xd8, 0xf8, 0xf0, 0x29, + 0xe4, 0xf0, 0xe4, 0xa8, 0xf2, 0x25, 0x0a, 0x74, 0x33, 0x6e, 0x80, 0x22, 0xd3, 0xc6, 0x94, 0x05, + 0x6d, 0xb4, 0xec, 0xfd, 0xcc, 0x97, 0x3f, 0xa9, 0x4a, 0xf2, 0x3f, 0x2f, 0xc0, 0x8c, 0xe0, 0x88, + 0x8c, 0xff, 0xdd, 0x0a, 0xf2, 0xbf, 0xc5, 0x38, 0xfe, 0xc7, 0x34, 0x18, 0x01, 0xbc, 0x15, 0x24, + 0x80, 0x8b, 0x71, 0x04, 0x50, 0x68, 0x10, 0x06, 0xa8, 0xc4, 0x31, 0xc0, 0xb7, 0x8e, 0xc1, 0x00, + 0x39, 0xd0, 0x30, 0x05, 0x5c, 0x1b, 0xa5, 0x80, 0x97, 0xc7, 0x53, 0x40, 0x0e, 0x14, 0xe0, 0x80, + 0xf7, 0x86, 0x38, 0xe0, 0xc5, 0x31, 0x1c, 0x90, 0x6b, 0x0b, 0x12, 0x58, 0x8f, 0x24, 0x81, 0x57, + 0x27, 0x91, 0x40, 0x8e, 0x12, 0x62, 0x81, 0x77, 0x42, 0x2c, 0xb0, 0x1a, 0xcb, 0x02, 0xb9, 0x2e, + 0xa3, 0x81, 0x9f, 0xc6, 0xd3, 0xc0, 0xb7, 0x8f, 0x45, 0x03, 0x39, 0xda, 0x28, 0x0f, 0x54, 0xe2, + 0x78, 0xe0, 0x5b, 0xc7, 0xe0, 0x81, 0x62, 0xb0, 0x86, 0x88, 0xe0, 0xfd, 0x28, 0x22, 0x78, 0x65, + 0x02, 0x11, 0xe4, 0x58, 0x41, 0x26, 0x78, 0x3f, 0x8a, 0x09, 0x5e, 0x99, 0xc0, 0x04, 0x43, 0x38, + 0x8c, 0x0a, 0x3e, 0x8a, 0xa6, 0x82, 0xd7, 0x26, 0x52, 0x41, 0x8e, 0x15, 0xe6, 0x82, 0x37, 0x03, + 0x5c, 0xf0, 0x42, 0x0c, 0x17, 0xe4, 0x8a, 0x84, 0x0c, 0x7e, 0x73, 0x84, 0x0c, 0xca, 0xe3, 0xc8, + 0x20, 0xd7, 0xf4, 0xd9, 0x60, 0x3d, 0x92, 0x0d, 0x5e, 0x9d, 0xc4, 0x06, 0xc5, 0xcc, 0x0b, 0xd2, + 0xc1, 0x27, 0x31, 0x74, 0xf0, 0xfa, 0x64, 0x3a, 0xc8, 0xe1, 0x86, 0xf8, 0xa0, 0x3a, 0x96, 0x0f, + 0xde, 0x3c, 0x26, 0x1f, 0xe4, 0xd8, 0x51, 0x84, 0xf0, 0x57, 0xc3, 0x84, 0x70, 0x29, 0x9e, 0x10, + 0x72, 0x10, 0xce, 0x08, 0xeb, 0x91, 0x8c, 0xf0, 0xea, 0x24, 0x46, 0x28, 0x8c, 0x16, 0xa4, 0x84, + 0x8f, 0xa2, 0x29, 0xe1, 0xb5, 0x89, 0x94, 0x50, 0xcc, 0x9d, 0x10, 0x27, 0xac, 0x47, 0x72, 0xc2, + 0xab, 0x93, 0x38, 0xa1, 0x3f, 0x9a, 0x01, 0x52, 0xb8, 0x1b, 0x4b, 0x0a, 0x6f, 0x1c, 0x87, 0x14, + 0x72, 0xc8, 0x11, 0x56, 0xf8, 0xec, 0x18, 0xac, 0xf0, 0xce, 0x89, 0x58, 0x21, 0x7f, 0x53, 0x3c, + 0x2d, 0xfc, 0x34, 0x9e, 0x16, 0xbe, 0x7d, 0x2c, 0x5a, 0x28, 0x9c, 0xdb, 0x08, 0x2f, 0xbc, 0x13, + 0xe2, 0x85, 0xd5, 0x58, 0x5e, 0x28, 0x7c, 0x2d, 0x25, 0x86, 0xdf, 0x1c, 0x21, 0x86, 0xf2, 0x38, + 0x62, 0x28, 0x16, 0xac, 0x60, 0x86, 0x8f, 0xa2, 0x99, 0xe1, 0xb5, 0x63, 0x7e, 0x93, 0x33, 0x44, + 0x0d, 0xd5, 0xb1, 0x54, 0xee, 0xe6, 0x31, 0xa9, 0x9c, 0x58, 0x62, 0x11, 0x5c, 0xae, 0x16, 0xc1, + 0xe5, 0x2e, 0x8f, 0xe7, 0x72, 0x62, 0x67, 0x1d, 0x90, 0xb9, 0xfb, 0x51, 0x64, 0xee, 0xca, 0x04, + 0x32, 0x27, 0x1c, 0x75, 0x80, 0xcd, 0xdd, 0x1b, 0x62, 0x73, 0x17, 0x27, 0xc6, 0x5b, 0x7d, 0x3a, + 0xf7, 0xe1, 0x28, 0x9d, 0xbb, 0x34, 0x96, 0xce, 0x71, 0xfd, 0x01, 0x9f, 0xbb, 0x37, 0xc4, 0xe7, + 0x2e, 0x8e, 0xe1, 0x73, 0xe2, 0xe5, 0x9c, 0xd0, 0xed, 0x8d, 0x27, 0x74, 0xcb, 0xc7, 0x25, 0x74, + 0x1c, 0x36, 0x9e, 0xd1, 0x3d, 0xcc, 0xe4, 0xce, 0x97, 0x2e, 0xc8, 0x3f, 0xcd, 0xc2, 0xd4, 0x03, + 0x11, 0x79, 0x0d, 0x24, 0xcb, 0x4a, 0xaf, 0x93, 0x2c, 0x8b, 0xd6, 0x61, 0x9a, 0x37, 0x98, 0xb3, + 0xbc, 0x31, 0xf9, 0xfe, 0x23, 0x19, 0xe0, 0x42, 0xf5, 0x35, 0x93, 0x5a, 0xd0, 0x3d, 0x98, 0xe9, + 0xb9, 0xd8, 0x11, 0xf9, 0x99, 0xec, 0xc6, 0x46, 0x5a, 0x3b, 0xcd, 0x3f, 0xd3, 0x28, 0xee, 0xba, + 0xd8, 0xe1, 0x09, 0x9a, 0x47, 0x4a, 0xb1, 0x17, 0xf8, 0x4f, 0xfc, 0xba, 0x44, 0xf6, 0xf8, 0xbf, + 0x2e, 0xf1, 0x09, 0x94, 0x1c, 0xac, 0x19, 0x21, 0x47, 0xc3, 0x32, 0x4e, 0xa3, 0x5d, 0xb0, 0x66, + 0x04, 0xbc, 0x49, 0x20, 0xf3, 0x74, 0xce, 0x09, 0x17, 0xa1, 0x27, 0x40, 0x8e, 0x60, 0x3a, 0x16, + 0xbf, 0xec, 0xc1, 0xd9, 0xdd, 0x8d, 0xe1, 0x91, 0xe0, 0xbf, 0x02, 0x42, 0xa3, 0xd8, 0x35, 0x56, + 0xb5, 0xc6, 0x7e, 0x03, 0x44, 0x29, 0x52, 0x00, 0x2e, 0x44, 0xef, 0xc2, 0x99, 0x8e, 0xd6, 0x67, + 0x59, 0xd9, 0x62, 0xff, 0xa1, 0x79, 0xe2, 0xb9, 0x40, 0xa8, 0x1f, 0x75, 0xb4, 0x3e, 0xfd, 0x1d, + 0x0c, 0x56, 0x81, 0x7e, 0x9f, 0xfc, 0x36, 0xcc, 0x1a, 0xa6, 0xeb, 0x99, 0x96, 0x2e, 0xbe, 0xd1, + 0xca, 0x07, 0xd3, 0x5d, 0x45, 0x19, 0xfd, 0x18, 0x0b, 0xdd, 0x82, 0x79, 0xfe, 0xcd, 0xf3, 0xe0, + 0x97, 0x31, 0x28, 0x5d, 0xcb, 0x0d, 0x3a, 0x4a, 0x8a, 0x07, 0x3f, 0x2c, 0xb2, 0x09, 0x73, 0x4d, + 0xcd, 0xc3, 0x87, 0xda, 0x91, 0x6a, 0xd9, 0x06, 0x1d, 0xec, 0x02, 0xfd, 0x48, 0xa2, 0xca, 0x07, + 0x7b, 0x66, 0x93, 0x15, 0xb3, 0x4f, 0x07, 0x5f, 0xbd, 0xf0, 0x3f, 0x22, 0x9c, 0x69, 0x06, 0x0a, + 0x0c, 0xf9, 0x47, 0x12, 0x14, 0x43, 0x77, 0x6f, 0xbf, 0x36, 0x14, 0xef, 0x3e, 0x17, 0xcd, 0xce, + 0xa2, 0xef, 0x69, 0x56, 0x21, 0xc7, 0xad, 0x24, 0xae, 0x20, 0xaa, 0xf1, 0x1b, 0x34, 0x3d, 0x09, + 0x89, 0x3b, 0x04, 0xa1, 0xf6, 0x7e, 0xe6, 0x4f, 0x7f, 0x52, 0x3d, 0x25, 0xff, 0x7d, 0x1a, 0x66, + 0xc2, 0x57, 0x6e, 0xf5, 0xa1, 0x76, 0x45, 0x39, 0xf2, 0x90, 0x46, 0x7c, 0x2b, 0xd7, 0x21, 0xef, + 0xf0, 0x4a, 0xa2, 0x99, 0x4b, 0x63, 0xa2, 0xfa, 0xc1, 0x76, 0x0e, 0x14, 0x2b, 0x7f, 0x98, 0xf2, + 0x17, 0xff, 0x32, 0x64, 0xe9, 0x0f, 0xda, 0xf0, 0xa6, 0x45, 0xa5, 0xe1, 0x6c, 0x90, 0x72, 0x85, + 0x55, 0x23, 0xce, 0xa2, 0xf1, 0x5a, 0x99, 0xf5, 0xbe, 0xe0, 0x35, 0x7e, 0xd2, 0xe5, 0x1a, 0x39, + 0x0e, 0xb6, 0xdb, 0xf4, 0xc3, 0x56, 0x3e, 0x25, 0x33, 0x4b, 0xe9, 0xeb, 0x45, 0x72, 0xc6, 0xe3, + 0x62, 0x36, 0x1b, 0x5f, 0x2f, 0x7f, 0x9c, 0x0d, 0xdc, 0x8d, 0x47, 0xb0, 0x10, 0xb1, 0x5e, 0xd1, + 0x2c, 0x40, 0xed, 0xc9, 0xf6, 0x4e, 0x7d, 0xa7, 0xb1, 0xb1, 0xdd, 0x28, 0x9d, 0x42, 0x33, 0x90, + 0x27, 0xff, 0x6f, 0x6c, 0xef, 0xec, 0xee, 0x94, 0x24, 0x54, 0x82, 0x62, 0x7d, 0x3b, 0x50, 0x21, + 0x55, 0xc9, 0xfc, 0xde, 0x5f, 0x2f, 0x9e, 0xba, 0xf1, 0x09, 0x14, 0x02, 0xf9, 0xe6, 0x08, 0xc1, + 0xec, 0xd3, 0xdd, 0x9d, 0x07, 0x6a, 0xa3, 0xfe, 0x78, 0x63, 0xa7, 0xb1, 0xfa, 0xf8, 0x69, 0xe9, + 0x14, 0x41, 0xa6, 0xb2, 0xd5, 0xb5, 0x27, 0x4a, 0xa3, 0x24, 0xf9, 0xff, 0x37, 0x9e, 0xec, 0xd6, + 0x1e, 0x94, 0x52, 0xfe, 0xff, 0x1f, 0xed, 0x6e, 0x28, 0x9f, 0x95, 0xd2, 0x1c, 0x58, 0x83, 0x33, + 0x91, 0x99, 0x1f, 0xa8, 0x00, 0xd3, 0xbb, 0xd6, 0x81, 0x65, 0x1f, 0x5a, 0xac, 0x95, 0x7e, 0xea, + 0x41, 0x49, 0x42, 0x39, 0x96, 0x5e, 0x50, 0x4a, 0xa1, 0x29, 0x48, 0xed, 0xdc, 0x29, 0xa5, 0xd1, + 0x1c, 0x14, 0x02, 0xb9, 0x13, 0xa5, 0x0c, 0xca, 0xf3, 0xab, 0xf6, 0x52, 0xf6, 0xf6, 0xa7, 0x90, + 0x13, 0xdf, 0x74, 0xa2, 0x47, 0x90, 0x65, 0x3b, 0x6b, 0x35, 0x7e, 0xd6, 0xd2, 0xf9, 0x5f, 0x59, + 0x9a, 0x34, 0xad, 0xe5, 0x53, 0x04, 0x79, 0xa3, 0xff, 0x8b, 0x40, 0x5e, 0xbb, 0xf8, 0xe5, 0xbf, + 0x2f, 0x9e, 0xfa, 0xf2, 0xe5, 0xa2, 0xf4, 0xd5, 0xcb, 0x45, 0xe9, 0x5f, 0x5e, 0x2e, 0x4a, 0xff, + 0xf6, 0x72, 0x51, 0xfa, 0xe1, 0x7f, 0x2c, 0x9e, 0xfa, 0x7c, 0x9a, 0xab, 0xfc, 0x4f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xae, 0x15, 0x7f, 0xcb, 0x27, 0x4a, 0x00, 0x00, } diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index fa85c17ff54e..95f6db150ac3 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -384,6 +384,19 @@ message AdminTransferLeaseResponse { optional ResponseHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; } +// An AdminChangeReplicasRequest is the argument to the AdminChangeReplicas() +// method. A change replicas operation allows adding or removing a set of +// replicas for a range. +message AdminChangeReplicasRequest { + optional Span header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + optional ReplicaChangeType change_type = 2 [(gogoproto.nullable) = false]; + repeated ReplicationTarget targets = 3 [(gogoproto.nullable) = false]; +} + +message AdminChangeReplicasResponse { + optional ResponseHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; +} + // A RangeLookupRequest is arguments to the RangeLookup() method. A // forward lookup request returns a range containing the requested // key. A reverse lookup request returns a range containing the @@ -867,6 +880,7 @@ message RequestUnion { optional AdminSplitRequest admin_split = 10; optional AdminMergeRequest admin_merge = 11; optional AdminTransferLeaseRequest admin_transfer_lease = 29; + optional AdminChangeReplicasRequest admin_change_replicas = 35; optional HeartbeatTxnRequest heartbeat_txn = 12; optional GCRequest gc = 13; optional PushTxnRequest push_txn = 14; @@ -913,6 +927,7 @@ message ResponseUnion { optional AdminSplitResponse admin_split = 10; optional AdminMergeResponse admin_merge = 11; optional AdminTransferLeaseResponse admin_transfer_lease = 29; + optional AdminChangeReplicasResponse admin_change_replicas = 35; optional HeartbeatTxnResponse heartbeat_txn = 12; optional GCResponse gc = 13; optional PushTxnResponse push_txn = 14; diff --git a/pkg/roachpb/batch_generated.go b/pkg/roachpb/batch_generated.go index 89d777989bbf..b5ca110b20cd 100644 --- a/pkg/roachpb/batch_generated.go +++ b/pkg/roachpb/batch_generated.go @@ -8,7 +8,7 @@ import ( "strconv" ) -type reqCounts [34]int32 +type reqCounts [35]int32 // getReqCounts returns the number of times each // request type appears in the batch. @@ -40,50 +40,52 @@ func (ba *BatchRequest) getReqCounts() reqCounts { counts[10]++ case r.AdminTransferLease != nil: counts[11]++ - case r.HeartbeatTxn != nil: + case r.AdminChangeReplicas != nil: counts[12]++ - case r.Gc != nil: + case r.HeartbeatTxn != nil: counts[13]++ - case r.PushTxn != nil: + case r.Gc != nil: counts[14]++ - case r.RangeLookup != nil: + case r.PushTxn != nil: counts[15]++ - case r.ResolveIntent != nil: + case r.RangeLookup != nil: counts[16]++ - case r.ResolveIntentRange != nil: + case r.ResolveIntent != nil: counts[17]++ - case r.Merge != nil: + case r.ResolveIntentRange != nil: counts[18]++ - case r.TruncateLog != nil: + case r.Merge != nil: counts[19]++ - case r.RequestLease != nil: + case r.TruncateLog != nil: counts[20]++ - case r.ReverseScan != nil: + case r.RequestLease != nil: counts[21]++ - case r.ComputeChecksum != nil: + case r.ReverseScan != nil: counts[22]++ - case r.DeprecatedVerifyChecksum != nil: + case r.ComputeChecksum != nil: counts[23]++ - case r.CheckConsistency != nil: + case r.DeprecatedVerifyChecksum != nil: counts[24]++ - case r.Noop != nil: + case r.CheckConsistency != nil: counts[25]++ - case r.InitPut != nil: + case r.Noop != nil: counts[26]++ - case r.ChangeFrozen != nil: + case r.InitPut != nil: counts[27]++ - case r.TransferLease != nil: + case r.ChangeFrozen != nil: counts[28]++ - case r.LeaseInfo != nil: + case r.TransferLease != nil: counts[29]++ - case r.WriteBatch != nil: + case r.LeaseInfo != nil: counts[30]++ - case r.Export != nil: + case r.WriteBatch != nil: counts[31]++ - case r.Import != nil: + case r.Export != nil: counts[32]++ - case r.QueryTxn != nil: + case r.Import != nil: counts[33]++ + case r.QueryTxn != nil: + counts[34]++ default: panic(fmt.Sprintf("unsupported request: %+v", r)) } @@ -104,6 +106,7 @@ var requestNames = []string{ "AdmSplit", "AdmMerge", "AdmTransferLease", + "AdmChangeReplicas", "HeartbeatTxn", "Gc", "PushTxn", @@ -172,28 +175,29 @@ func (ba *BatchRequest) CreateReply() *BatchResponse { var buf9 []AdminSplitResponse var buf10 []AdminMergeResponse var buf11 []AdminTransferLeaseResponse - var buf12 []HeartbeatTxnResponse - var buf13 []GCResponse - var buf14 []PushTxnResponse - var buf15 []RangeLookupResponse - var buf16 []ResolveIntentResponse - var buf17 []ResolveIntentRangeResponse - var buf18 []MergeResponse - var buf19 []TruncateLogResponse - var buf20 []RequestLeaseResponse - var buf21 []ReverseScanResponse - var buf22 []ComputeChecksumResponse - var buf23 []DeprecatedVerifyChecksumResponse - var buf24 []CheckConsistencyResponse - var buf25 []NoopResponse - var buf26 []InitPutResponse - var buf27 []ChangeFrozenResponse - var buf28 []RequestLeaseResponse - var buf29 []LeaseInfoResponse - var buf30 []WriteBatchResponse - var buf31 []ExportResponse - var buf32 []ImportResponse - var buf33 []QueryTxnResponse + var buf12 []AdminChangeReplicasResponse + var buf13 []HeartbeatTxnResponse + var buf14 []GCResponse + var buf15 []PushTxnResponse + var buf16 []RangeLookupResponse + var buf17 []ResolveIntentResponse + var buf18 []ResolveIntentRangeResponse + var buf19 []MergeResponse + var buf20 []TruncateLogResponse + var buf21 []RequestLeaseResponse + var buf22 []ReverseScanResponse + var buf23 []ComputeChecksumResponse + var buf24 []DeprecatedVerifyChecksumResponse + var buf25 []CheckConsistencyResponse + var buf26 []NoopResponse + var buf27 []InitPutResponse + var buf28 []ChangeFrozenResponse + var buf29 []RequestLeaseResponse + var buf30 []LeaseInfoResponse + var buf31 []WriteBatchResponse + var buf32 []ExportResponse + var buf33 []ImportResponse + var buf34 []QueryTxnResponse for i, r := range ba.Requests { switch { @@ -269,138 +273,144 @@ func (ba *BatchRequest) CreateReply() *BatchResponse { } br.Responses[i].AdminTransferLease = &buf11[0] buf11 = buf11[1:] - case r.HeartbeatTxn != nil: + case r.AdminChangeReplicas != nil: if buf12 == nil { - buf12 = make([]HeartbeatTxnResponse, counts[12]) + buf12 = make([]AdminChangeReplicasResponse, counts[12]) } - br.Responses[i].HeartbeatTxn = &buf12[0] + br.Responses[i].AdminChangeReplicas = &buf12[0] buf12 = buf12[1:] - case r.Gc != nil: + case r.HeartbeatTxn != nil: if buf13 == nil { - buf13 = make([]GCResponse, counts[13]) + buf13 = make([]HeartbeatTxnResponse, counts[13]) } - br.Responses[i].Gc = &buf13[0] + br.Responses[i].HeartbeatTxn = &buf13[0] buf13 = buf13[1:] - case r.PushTxn != nil: + case r.Gc != nil: if buf14 == nil { - buf14 = make([]PushTxnResponse, counts[14]) + buf14 = make([]GCResponse, counts[14]) } - br.Responses[i].PushTxn = &buf14[0] + br.Responses[i].Gc = &buf14[0] buf14 = buf14[1:] - case r.RangeLookup != nil: + case r.PushTxn != nil: if buf15 == nil { - buf15 = make([]RangeLookupResponse, counts[15]) + buf15 = make([]PushTxnResponse, counts[15]) } - br.Responses[i].RangeLookup = &buf15[0] + br.Responses[i].PushTxn = &buf15[0] buf15 = buf15[1:] - case r.ResolveIntent != nil: + case r.RangeLookup != nil: if buf16 == nil { - buf16 = make([]ResolveIntentResponse, counts[16]) + buf16 = make([]RangeLookupResponse, counts[16]) } - br.Responses[i].ResolveIntent = &buf16[0] + br.Responses[i].RangeLookup = &buf16[0] buf16 = buf16[1:] - case r.ResolveIntentRange != nil: + case r.ResolveIntent != nil: if buf17 == nil { - buf17 = make([]ResolveIntentRangeResponse, counts[17]) + buf17 = make([]ResolveIntentResponse, counts[17]) } - br.Responses[i].ResolveIntentRange = &buf17[0] + br.Responses[i].ResolveIntent = &buf17[0] buf17 = buf17[1:] - case r.Merge != nil: + case r.ResolveIntentRange != nil: if buf18 == nil { - buf18 = make([]MergeResponse, counts[18]) + buf18 = make([]ResolveIntentRangeResponse, counts[18]) } - br.Responses[i].Merge = &buf18[0] + br.Responses[i].ResolveIntentRange = &buf18[0] buf18 = buf18[1:] - case r.TruncateLog != nil: + case r.Merge != nil: if buf19 == nil { - buf19 = make([]TruncateLogResponse, counts[19]) + buf19 = make([]MergeResponse, counts[19]) } - br.Responses[i].TruncateLog = &buf19[0] + br.Responses[i].Merge = &buf19[0] buf19 = buf19[1:] - case r.RequestLease != nil: + case r.TruncateLog != nil: if buf20 == nil { - buf20 = make([]RequestLeaseResponse, counts[20]) + buf20 = make([]TruncateLogResponse, counts[20]) } - br.Responses[i].RequestLease = &buf20[0] + br.Responses[i].TruncateLog = &buf20[0] buf20 = buf20[1:] - case r.ReverseScan != nil: + case r.RequestLease != nil: if buf21 == nil { - buf21 = make([]ReverseScanResponse, counts[21]) + buf21 = make([]RequestLeaseResponse, counts[21]) } - br.Responses[i].ReverseScan = &buf21[0] + br.Responses[i].RequestLease = &buf21[0] buf21 = buf21[1:] - case r.ComputeChecksum != nil: + case r.ReverseScan != nil: if buf22 == nil { - buf22 = make([]ComputeChecksumResponse, counts[22]) + buf22 = make([]ReverseScanResponse, counts[22]) } - br.Responses[i].ComputeChecksum = &buf22[0] + br.Responses[i].ReverseScan = &buf22[0] buf22 = buf22[1:] - case r.DeprecatedVerifyChecksum != nil: + case r.ComputeChecksum != nil: if buf23 == nil { - buf23 = make([]DeprecatedVerifyChecksumResponse, counts[23]) + buf23 = make([]ComputeChecksumResponse, counts[23]) } - br.Responses[i].DeprecatedVerifyChecksum = &buf23[0] + br.Responses[i].ComputeChecksum = &buf23[0] buf23 = buf23[1:] - case r.CheckConsistency != nil: + case r.DeprecatedVerifyChecksum != nil: if buf24 == nil { - buf24 = make([]CheckConsistencyResponse, counts[24]) + buf24 = make([]DeprecatedVerifyChecksumResponse, counts[24]) } - br.Responses[i].CheckConsistency = &buf24[0] + br.Responses[i].DeprecatedVerifyChecksum = &buf24[0] buf24 = buf24[1:] - case r.Noop != nil: + case r.CheckConsistency != nil: if buf25 == nil { - buf25 = make([]NoopResponse, counts[25]) + buf25 = make([]CheckConsistencyResponse, counts[25]) } - br.Responses[i].Noop = &buf25[0] + br.Responses[i].CheckConsistency = &buf25[0] buf25 = buf25[1:] - case r.InitPut != nil: + case r.Noop != nil: if buf26 == nil { - buf26 = make([]InitPutResponse, counts[26]) + buf26 = make([]NoopResponse, counts[26]) } - br.Responses[i].InitPut = &buf26[0] + br.Responses[i].Noop = &buf26[0] buf26 = buf26[1:] - case r.ChangeFrozen != nil: + case r.InitPut != nil: if buf27 == nil { - buf27 = make([]ChangeFrozenResponse, counts[27]) + buf27 = make([]InitPutResponse, counts[27]) } - br.Responses[i].ChangeFrozen = &buf27[0] + br.Responses[i].InitPut = &buf27[0] buf27 = buf27[1:] - case r.TransferLease != nil: + case r.ChangeFrozen != nil: if buf28 == nil { - buf28 = make([]RequestLeaseResponse, counts[28]) + buf28 = make([]ChangeFrozenResponse, counts[28]) } - br.Responses[i].RequestLease = &buf28[0] + br.Responses[i].ChangeFrozen = &buf28[0] buf28 = buf28[1:] - case r.LeaseInfo != nil: + case r.TransferLease != nil: if buf29 == nil { - buf29 = make([]LeaseInfoResponse, counts[29]) + buf29 = make([]RequestLeaseResponse, counts[29]) } - br.Responses[i].LeaseInfo = &buf29[0] + br.Responses[i].RequestLease = &buf29[0] buf29 = buf29[1:] - case r.WriteBatch != nil: + case r.LeaseInfo != nil: if buf30 == nil { - buf30 = make([]WriteBatchResponse, counts[30]) + buf30 = make([]LeaseInfoResponse, counts[30]) } - br.Responses[i].WriteBatch = &buf30[0] + br.Responses[i].LeaseInfo = &buf30[0] buf30 = buf30[1:] - case r.Export != nil: + case r.WriteBatch != nil: if buf31 == nil { - buf31 = make([]ExportResponse, counts[31]) + buf31 = make([]WriteBatchResponse, counts[31]) } - br.Responses[i].Export = &buf31[0] + br.Responses[i].WriteBatch = &buf31[0] buf31 = buf31[1:] - case r.Import != nil: + case r.Export != nil: if buf32 == nil { - buf32 = make([]ImportResponse, counts[32]) + buf32 = make([]ExportResponse, counts[32]) } - br.Responses[i].Import = &buf32[0] + br.Responses[i].Export = &buf32[0] buf32 = buf32[1:] - case r.QueryTxn != nil: + case r.Import != nil: if buf33 == nil { - buf33 = make([]QueryTxnResponse, counts[33]) + buf33 = make([]ImportResponse, counts[33]) } - br.Responses[i].QueryTxn = &buf33[0] + br.Responses[i].Import = &buf33[0] buf33 = buf33[1:] + case r.QueryTxn != nil: + if buf34 == nil { + buf34 = make([]QueryTxnResponse, counts[34]) + } + br.Responses[i].QueryTxn = &buf34[0] + buf34 = buf34[1:] default: panic(fmt.Sprintf("unsupported request: %+v", r)) } diff --git a/pkg/roachpb/method.go b/pkg/roachpb/method.go index ac24bb673c96..19eaa87beb6e 100644 --- a/pkg/roachpb/method.go +++ b/pkg/roachpb/method.go @@ -65,6 +65,8 @@ const ( AdminMerge // AdminTransferLease is called to initiate a range lease transfer. AdminTransferLease + // AdminChangeReplicas is called to add or remove replicas for a range. + AdminChangeReplicas // HeartbeatTxn sends a periodic heartbeat to extant // transaction rows to indicate the client is still alive and // the transaction should not be considered abandoned. diff --git a/pkg/roachpb/method_string.go b/pkg/roachpb/method_string.go index 3331016b7a32..837798a2d9dd 100644 --- a/pkg/roachpb/method_string.go +++ b/pkg/roachpb/method_string.go @@ -4,9 +4,9 @@ package roachpb import "fmt" -const _Method_name = "GetPutConditionalPutIncrementDeleteDeleteRangeScanReverseScanBeginTransactionEndTransactionAdminSplitAdminMergeAdminTransferLeaseHeartbeatTxnGCPushTxnQueryTxnRangeLookupResolveIntentResolveIntentRangeNoopMergeTruncateLogRequestLeaseTransferLeaseLeaseInfoComputeChecksumDeprecatedVerifyChecksumCheckConsistencyInitPutChangeFrozenWriteBatchExportImport" +const _Method_name = "GetPutConditionalPutIncrementDeleteDeleteRangeScanReverseScanBeginTransactionEndTransactionAdminSplitAdminMergeAdminTransferLeaseAdminChangeReplicasHeartbeatTxnGCPushTxnQueryTxnRangeLookupResolveIntentResolveIntentRangeNoopMergeTruncateLogRequestLeaseTransferLeaseLeaseInfoComputeChecksumDeprecatedVerifyChecksumCheckConsistencyInitPutChangeFrozenWriteBatchExportImport" -var _Method_index = [...]uint16{0, 3, 6, 20, 29, 35, 46, 50, 61, 77, 91, 101, 111, 129, 141, 143, 150, 158, 169, 182, 200, 204, 209, 220, 232, 245, 254, 269, 293, 309, 316, 328, 338, 344, 350} +var _Method_index = [...]uint16{0, 3, 6, 20, 29, 35, 46, 50, 61, 77, 91, 101, 111, 129, 148, 160, 162, 169, 177, 188, 201, 219, 223, 228, 239, 251, 264, 273, 288, 312, 328, 335, 347, 357, 363, 369} func (i Method) String() string { if i < 0 || i >= Method(len(_Method_index)-1) { diff --git a/pkg/storage/replica.go b/pkg/storage/replica.go index 2f8d952fb628..d967d6360926 100644 --- a/pkg/storage/replica.go +++ b/pkg/storage/replica.go @@ -1913,17 +1913,32 @@ func (r *Replica) addAdminCmd( var reply roachpb.AdminSplitResponse reply, pErr = r.AdminSplit(ctx, *tArgs) resp = &reply + case *roachpb.AdminMergeRequest: var reply roachpb.AdminMergeResponse reply, pErr = r.AdminMerge(ctx, *tArgs) resp = &reply + case *roachpb.AdminTransferLeaseRequest: pErr = roachpb.NewError(r.AdminTransferLease(ctx, tArgs.Target)) resp = &roachpb.AdminTransferLeaseResponse{} + + case *roachpb.AdminChangeReplicasRequest: + var err error + for _, target := range tArgs.Targets { + err = r.ChangeReplicas(ctx, tArgs.ChangeType, target, r.Desc()) + if err != nil { + break + } + } + pErr = roachpb.NewError(err) + resp = &roachpb.AdminChangeReplicasResponse{} + case *roachpb.CheckConsistencyRequest: var reply roachpb.CheckConsistencyResponse reply, pErr = r.CheckConsistency(ctx, *tArgs) resp = &reply + case *roachpb.ImportRequest: cArgs := CommandArgs{ Repl: r, @@ -1933,6 +1948,7 @@ func (r *Replica) addAdminCmd( resp = &roachpb.ImportResponse{} err := importCmdFn(ctx, cArgs) pErr = roachpb.NewError(err) + default: return nil, roachpb.NewErrorf("unrecognized admin command: %T", args) } diff --git a/pkg/testutils/testcluster/testcluster.go b/pkg/testutils/testcluster/testcluster.go index ef6b35297f51..e66e99310ee1 100644 --- a/pkg/testutils/testcluster/testcluster.go +++ b/pkg/testutils/testcluster/testcluster.go @@ -263,51 +263,19 @@ func (tc *TestCluster) Target(serverIdx int) roachpb.ReplicationTarget { } func (tc *TestCluster) changeReplicas( - action roachpb.ReplicaChangeType, startKey roachpb.RKey, targets ...roachpb.ReplicationTarget, + changeType roachpb.ReplicaChangeType, startKey roachpb.RKey, targets ...roachpb.ReplicationTarget, ) (roachpb.RangeDescriptor, error) { - var rangeDesc roachpb.RangeDescriptor - - // TODO(andrei): the following code has been adapted from - // multiTestContext.replicateRange(). Find a way to share. - for _, target := range targets { - // Perform a consistent read to get the updated range descriptor (as opposed - // to just going to one of the stores), to make sure we have the effects of - // the previous ChangeReplicas call. By the time ChangeReplicas returns the - // raft leader is guaranteed to have the updated version, but followers are - // not. - if err := tc.Servers[0].DB().GetProto(context.TODO(), - keys.RangeDescriptorKey(startKey), &rangeDesc); err != nil { - return roachpb.RangeDescriptor{}, err - } - - // Ask an arbitrary replica of the range to perform the change. Note that - // the target for addition/removal is specified, this is about the choice - // of which replica receives the ChangeReplicas operation. - store, err := tc.findMemberStore(rangeDesc.Replicas[0].StoreID) - if err != nil { - return roachpb.RangeDescriptor{}, err - } - replica, err := store.GetReplica(rangeDesc.RangeID) - if err != nil { - return roachpb.RangeDescriptor{}, err - } - ctx := replica.AnnotateCtx(context.Background()) - err = replica.ChangeReplicas( - ctx, - action, - roachpb.ReplicationTarget{ - NodeID: target.NodeID, - StoreID: target.StoreID, - }, - &rangeDesc, - ) - if err != nil { - return roachpb.RangeDescriptor{}, err - } + ctx := context.TODO() + if err := tc.Servers[0].DB().AdminChangeReplicas( + ctx, startKey.AsRawKey(), changeType, targets, + ); err != nil { + return roachpb.RangeDescriptor{}, errors.Wrap(err, "AdminChangeReplicas error") } - if err := tc.Servers[0].DB().GetProto(context.TODO(), - keys.RangeDescriptorKey(startKey), &rangeDesc); err != nil { - return roachpb.RangeDescriptor{}, err + var rangeDesc roachpb.RangeDescriptor + if err := tc.Servers[0].DB().GetProto( + ctx, keys.RangeDescriptorKey(startKey), &rangeDesc, + ); err != nil { + return roachpb.RangeDescriptor{}, errors.Wrap(err, "range descriptor lookup error") } return rangeDesc, nil }