From 0a1461eacd314d1dde57190c172c188b67cb2005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=B6=85?= Date: Fri, 29 Aug 2025 14:24:36 +0800 Subject: [PATCH 1/2] Add `IndexLookUp` executor and extra output channels (#376) Signed-off-by: Chao Wang --- go-tipb/analyze.pb.go | 3 + go-tipb/executor.pb.go | 1000 +++-- go-tipb/select.pb.go | 696 +++- proto/executor.proto | 11 + proto/select.proto | 41 +- scripts/proto.lock | 8671 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 10003 insertions(+), 419 deletions(-) create mode 100644 scripts/proto.lock diff --git a/go-tipb/analyze.pb.go b/go-tipb/analyze.pb.go index 1896fa5d..e96f5d15 100644 --- a/go-tipb/analyze.pb.go +++ b/go-tipb/analyze.pb.go @@ -41,6 +41,7 @@ It has these top-level messages: ChecksumResponse Executor ExchangeSender + IndexLookUp EncodedBytesSlice ExchangeReceiver ANNQueryInfo @@ -91,8 +92,10 @@ It has these top-level messages: KeyRange Row Error + IntermediateOutput SelectResponse Chunk + IntermediateOutputChannel RowMeta DAGRequest ChunkMemoryLayout diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 6be7851e..3d01f8d6 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -40,6 +40,7 @@ const ( ExecType_TypeWindow ExecType = 14 ExecType_TypeExpand ExecType = 15 ExecType_TypeExpand2 ExecType = 16 + ExecType_TypeIndexLookUp ExecType = 20 ) var ExecType_name = map[int32]string{ @@ -60,6 +61,7 @@ var ExecType_name = map[int32]string{ 14: "TypeWindow", 15: "TypeExpand", 16: "TypeExpand2", + 20: "TypeIndexLookUp", } var ExecType_value = map[string]int32{ "TypeTableScan": 0, @@ -79,6 +81,7 @@ var ExecType_value = map[string]int32{ "TypeWindow": 14, "TypeExpand": 15, "TypeExpand2": 16, + "TypeIndexLookUp": 20, } func (x ExecType) Enum() *ExecType { @@ -652,7 +655,11 @@ type Executor struct { FineGrainedShuffleBatchSize uint64 `protobuf:"varint,18,opt,name=fine_grained_shuffle_batch_size,json=fineGrainedShuffleBatchSize" json:"fine_grained_shuffle_batch_size"` Expand *Expand `protobuf:"bytes,19,opt,name=expand" json:"expand,omitempty"` Expand2 *Expand2 `protobuf:"bytes,20,opt,name=expand2" json:"expand2,omitempty"` - XXX_unrecognized []byte `json:"-"` + IndexLookup *IndexLookUp `protobuf:"bytes,24,opt,name=index_lookup,json=indexLookup" json:"index_lookup,omitempty"` + // It indicates the parent index of current executor. + // Not set indicates its parent is the next executor in `DAGRequest.executors`. + ParentIdx *uint32 `protobuf:"varint,25,opt,name=parent_idx,json=parentIdx" json:"parent_idx,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *Executor) Reset() { *m = Executor{} } @@ -800,6 +807,20 @@ func (m *Executor) GetExpand2() *Expand2 { return nil } +func (m *Executor) GetIndexLookup() *IndexLookUp { + if m != nil { + return m.IndexLookup + } + return nil +} + +func (m *Executor) GetParentIdx() uint32 { + if m != nil && m.ParentIdx != nil { + return *m.ParentIdx + } + return 0 +} + // ExchangeSender will build connection with ExchangeReceiver. type ExchangeSender struct { Tp ExchangeType `protobuf:"varint,1,opt,name=tp,enum=tipb.ExchangeType" json:"tp"` @@ -874,6 +895,32 @@ func (m *ExchangeSender) GetUpstreamCteTaskMeta() []*EncodedBytesSlice { return nil } +type IndexLookUp struct { + // It represents the index columns we should use to build the row handle. + IndexHandleOffsets []uint32 `protobuf:"varint,1,rep,name=index_handle_offsets,json=indexHandleOffsets" json:"index_handle_offsets,omitempty"` + KeepOrder *bool `protobuf:"varint,2,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *IndexLookUp) Reset() { *m = IndexLookUp{} } +func (m *IndexLookUp) String() string { return proto.CompactTextString(m) } +func (*IndexLookUp) ProtoMessage() {} +func (*IndexLookUp) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{2} } + +func (m *IndexLookUp) GetIndexHandleOffsets() []uint32 { + if m != nil { + return m.IndexHandleOffsets + } + return nil +} + +func (m *IndexLookUp) GetKeepOrder() bool { + if m != nil && m.KeepOrder != nil { + return *m.KeepOrder + } + return false +} + type EncodedBytesSlice struct { EncodedTasks [][]byte `protobuf:"bytes,1,rep,name=encoded_tasks,json=encodedTasks" json:"encoded_tasks,omitempty"` XXX_unrecognized []byte `json:"-"` @@ -882,7 +929,7 @@ type EncodedBytesSlice struct { func (m *EncodedBytesSlice) Reset() { *m = EncodedBytesSlice{} } func (m *EncodedBytesSlice) String() string { return proto.CompactTextString(m) } func (*EncodedBytesSlice) ProtoMessage() {} -func (*EncodedBytesSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{2} } +func (*EncodedBytesSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{3} } func (m *EncodedBytesSlice) GetEncodedTasks() [][]byte { if m != nil { @@ -903,7 +950,7 @@ type ExchangeReceiver struct { func (m *ExchangeReceiver) Reset() { *m = ExchangeReceiver{} } func (m *ExchangeReceiver) String() string { return proto.CompactTextString(m) } func (*ExchangeReceiver) ProtoMessage() {} -func (*ExchangeReceiver) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{3} } +func (*ExchangeReceiver) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{4} } func (m *ExchangeReceiver) GetEncodedTaskMeta() [][]byte { if m != nil { @@ -950,7 +997,7 @@ type ANNQueryInfo struct { func (m *ANNQueryInfo) Reset() { *m = ANNQueryInfo{} } func (m *ANNQueryInfo) String() string { return proto.CompactTextString(m) } func (*ANNQueryInfo) ProtoMessage() {} -func (*ANNQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{4} } +func (*ANNQueryInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{5} } func (m *ANNQueryInfo) GetQueryType() ANNQueryType { if m != nil { @@ -1035,7 +1082,7 @@ type TableScan struct { func (m *TableScan) Reset() { *m = TableScan{} } func (m *TableScan) String() string { return proto.CompactTextString(m) } func (*TableScan) ProtoMessage() {} -func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{5} } +func (*TableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } func (m *TableScan) GetTableId() int64 { if m != nil { @@ -1146,7 +1193,7 @@ type PartitionTableScan struct { func (m *PartitionTableScan) Reset() { *m = PartitionTableScan{} } func (m *PartitionTableScan) String() string { return proto.CompactTextString(m) } func (*PartitionTableScan) ProtoMessage() {} -func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{6} } +func (*PartitionTableScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } func (m *PartitionTableScan) GetTableId() int64 { if m != nil { @@ -1247,7 +1294,7 @@ type Join struct { func (m *Join) Reset() { *m = Join{} } func (m *Join) String() string { return proto.CompactTextString(m) } func (*Join) ProtoMessage() {} -func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{7} } +func (*Join) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } func (m *Join) GetJoinType() JoinType { if m != nil { @@ -1361,7 +1408,7 @@ type RuntimeFilter struct { func (m *RuntimeFilter) Reset() { *m = RuntimeFilter{} } func (m *RuntimeFilter) String() string { return proto.CompactTextString(m) } func (*RuntimeFilter) ProtoMessage() {} -func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{8} } +func (*RuntimeFilter) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } func (m *RuntimeFilter) GetId() int32 { if m != nil { @@ -1425,7 +1472,7 @@ type IndexScan struct { func (m *IndexScan) Reset() { *m = IndexScan{} } func (m *IndexScan) String() string { return proto.CompactTextString(m) } func (*IndexScan) ProtoMessage() {} -func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{9} } +func (*IndexScan) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } func (m *IndexScan) GetTableId() int64 { if m != nil { @@ -1480,7 +1527,7 @@ type Selection struct { func (m *Selection) Reset() { *m = Selection{} } func (m *Selection) String() string { return proto.CompactTextString(m) } func (*Selection) ProtoMessage() {} -func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{10} } +func (*Selection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } func (m *Selection) GetConditions() []*Expr { if m != nil { @@ -1514,7 +1561,7 @@ type Projection struct { func (m *Projection) Reset() { *m = Projection{} } func (m *Projection) String() string { return proto.CompactTextString(m) } func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{11} } +func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } func (m *Projection) GetExprs() []*Expr { if m != nil { @@ -1554,7 +1601,7 @@ type Aggregation struct { func (m *Aggregation) Reset() { *m = Aggregation{} } func (m *Aggregation) String() string { return proto.CompactTextString(m) } func (*Aggregation) ProtoMessage() {} -func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{12} } +func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } func (m *Aggregation) GetGroupBy() []*Expr { if m != nil { @@ -1619,7 +1666,7 @@ type TopN struct { func (m *TopN) Reset() { *m = TopN{} } func (m *TopN) String() string { return proto.CompactTextString(m) } func (*TopN) ProtoMessage() {} -func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{13} } +func (*TopN) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } func (m *TopN) GetOrderBy() []*ByItem { if m != nil { @@ -1662,7 +1709,7 @@ type Limit struct { func (m *Limit) Reset() { *m = Limit{} } func (m *Limit) String() string { return proto.CompactTextString(m) } func (*Limit) ProtoMessage() {} -func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{14} } +func (*Limit) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } func (m *Limit) GetLimit() uint64 { if m != nil { @@ -1698,7 +1745,7 @@ type Kill struct { func (m *Kill) Reset() { *m = Kill{} } func (m *Kill) String() string { return proto.CompactTextString(m) } func (*Kill) ProtoMessage() {} -func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{15} } +func (*Kill) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{16} } func (m *Kill) GetConnID() uint64 { if m != nil { @@ -1740,7 +1787,7 @@ func (m *ExecutorExecutionSummary) Reset() { *m = ExecutorExecutionSumma func (m *ExecutorExecutionSummary) String() string { return proto.CompactTextString(m) } func (*ExecutorExecutionSummary) ProtoMessage() {} func (*ExecutorExecutionSummary) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{16} + return fileDescriptorExecutor, []int{17} } type isExecutorExecutionSummary_DetailInfo interface { @@ -1882,7 +1929,7 @@ type TiFlashExecutionInfo struct { func (m *TiFlashExecutionInfo) Reset() { *m = TiFlashExecutionInfo{} } func (m *TiFlashExecutionInfo) String() string { return proto.CompactTextString(m) } func (*TiFlashExecutionInfo) ProtoMessage() {} -func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{17} } +func (*TiFlashExecutionInfo) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{18} } func (m *TiFlashExecutionInfo) GetExecutionSummaries() []*ExecutorExecutionSummary { if m != nil { @@ -1901,7 +1948,7 @@ func (m *TiFlashRegionNumOfInstance) Reset() { *m = TiFlashRegionNumOfIn func (m *TiFlashRegionNumOfInstance) String() string { return proto.CompactTextString(m) } func (*TiFlashRegionNumOfInstance) ProtoMessage() {} func (*TiFlashRegionNumOfInstance) Descriptor() ([]byte, []int) { - return fileDescriptorExecutor, []int{18} + return fileDescriptorExecutor, []int{19} } func (m *TiFlashRegionNumOfInstance) GetInstanceId() string { @@ -1968,7 +2015,7 @@ type TiFlashScanContext struct { func (m *TiFlashScanContext) Reset() { *m = TiFlashScanContext{} } func (m *TiFlashScanContext) String() string { return proto.CompactTextString(m) } func (*TiFlashScanContext) ProtoMessage() {} -func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{19} } +func (*TiFlashScanContext) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{20} } func (m *TiFlashScanContext) GetDmfileScannedPacks() uint64 { if m != nil && m.DmfileScannedPacks != nil { @@ -2281,7 +2328,7 @@ type TiFlashWaitSummary struct { func (m *TiFlashWaitSummary) Reset() { *m = TiFlashWaitSummary{} } func (m *TiFlashWaitSummary) String() string { return proto.CompactTextString(m) } func (*TiFlashWaitSummary) ProtoMessage() {} -func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{20} } +func (*TiFlashWaitSummary) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } func (m *TiFlashWaitSummary) GetMinTSOWaitNs() uint64 { if m != nil && m.MinTSOWaitNs != nil { @@ -2314,7 +2361,7 @@ type Sort struct { func (m *Sort) Reset() { *m = Sort{} } func (m *Sort) String() string { return proto.CompactTextString(m) } func (*Sort) ProtoMessage() {} -func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{21} } +func (*Sort) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } func (m *Sort) GetByItems() []*ByItem { if m != nil { @@ -2350,7 +2397,7 @@ type WindowFrameBound struct { func (m *WindowFrameBound) Reset() { *m = WindowFrameBound{} } func (m *WindowFrameBound) String() string { return proto.CompactTextString(m) } func (*WindowFrameBound) ProtoMessage() {} -func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{22} } +func (*WindowFrameBound) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } func (m *WindowFrameBound) GetType() WindowBoundType { if m != nil { @@ -2404,7 +2451,7 @@ type WindowFrame struct { func (m *WindowFrame) Reset() { *m = WindowFrame{} } func (m *WindowFrame) String() string { return proto.CompactTextString(m) } func (*WindowFrame) ProtoMessage() {} -func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{23} } +func (*WindowFrame) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } func (m *WindowFrame) GetType() WindowFrameType { if m != nil { @@ -2439,7 +2486,7 @@ type Window struct { func (m *Window) Reset() { *m = Window{} } func (m *Window) String() string { return proto.CompactTextString(m) } func (*Window) ProtoMessage() {} -func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{24} } +func (*Window) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } func (m *Window) GetFuncDesc() []*Expr { if m != nil { @@ -2484,7 +2531,7 @@ type GroupingExpr struct { func (m *GroupingExpr) Reset() { *m = GroupingExpr{} } func (m *GroupingExpr) String() string { return proto.CompactTextString(m) } func (*GroupingExpr) ProtoMessage() {} -func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{25} } +func (*GroupingExpr) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } func (m *GroupingExpr) GetGroupingExpr() []*Expr { if m != nil { @@ -2501,7 +2548,7 @@ type GroupingSet struct { func (m *GroupingSet) Reset() { *m = GroupingSet{} } func (m *GroupingSet) String() string { return proto.CompactTextString(m) } func (*GroupingSet) ProtoMessage() {} -func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{26} } +func (*GroupingSet) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } func (m *GroupingSet) GetGroupingExprs() []*GroupingExpr { if m != nil { @@ -2521,7 +2568,7 @@ type Expand struct { func (m *Expand) Reset() { *m = Expand{} } func (m *Expand) String() string { return proto.CompactTextString(m) } func (*Expand) ProtoMessage() {} -func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{27} } +func (*Expand) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } func (m *Expand) GetGroupingSets() []*GroupingSet { if m != nil { @@ -2552,7 +2599,7 @@ type ExprSlice struct { func (m *ExprSlice) Reset() { *m = ExprSlice{} } func (m *ExprSlice) String() string { return proto.CompactTextString(m) } func (*ExprSlice) ProtoMessage() {} -func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{28} } +func (*ExprSlice) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } func (m *ExprSlice) GetExprs() []*Expr { if m != nil { @@ -2571,7 +2618,7 @@ type Expand2 struct { func (m *Expand2) Reset() { *m = Expand2{} } func (m *Expand2) String() string { return proto.CompactTextString(m) } func (*Expand2) ProtoMessage() {} -func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{29} } +func (*Expand2) Descriptor() ([]byte, []int) { return fileDescriptorExecutor, []int{30} } func (m *Expand2) GetProjExprs() []*ExprSlice { if m != nil { @@ -2597,6 +2644,7 @@ func (m *Expand2) GetChild() *Executor { func init() { proto.RegisterType((*Executor)(nil), "tipb.Executor") proto.RegisterType((*ExchangeSender)(nil), "tipb.ExchangeSender") + proto.RegisterType((*IndexLookUp)(nil), "tipb.IndexLookUp") proto.RegisterType((*EncodedBytesSlice)(nil), "tipb.EncodedBytesSlice") proto.RegisterType((*ExchangeReceiver)(nil), "tipb.ExchangeReceiver") proto.RegisterType((*ANNQueryInfo)(nil), "tipb.ANNQueryInfo") @@ -2841,6 +2889,25 @@ func (m *Executor) MarshalTo(dAtA []byte) (int, error) { } i += n16 } + if m.IndexLookup != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(m.IndexLookup.Size())) + n17, err := m.IndexLookup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + if m.ParentIdx != nil { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(*m.ParentIdx)) + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2889,11 +2956,11 @@ func (m *ExchangeSender) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n17, err := m.Child.MarshalTo(dAtA[i:]) + n18, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n18 } if len(m.Types) > 0 { for _, msg := range m.Types { @@ -2940,6 +3007,44 @@ func (m *ExchangeSender) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *IndexLookUp) 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 *IndexLookUp) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.IndexHandleOffsets) > 0 { + for _, num := range m.IndexHandleOffsets { + dAtA[i] = 0x8 + i++ + i = encodeVarintExecutor(dAtA, i, uint64(num)) + } + } + if m.KeepOrder != nil { + dAtA[i] = 0x10 + i++ + if *m.KeepOrder { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *EncodedBytesSlice) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3196,11 +3301,11 @@ func (m *TableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x6a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n18, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n19, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n19 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3308,11 +3413,11 @@ func (m *PartitionTableScan) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.AnnQuery.Size())) - n19, err := m.AnnQuery.MarshalTo(dAtA[i:]) + n20, err := m.AnnQuery.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n20 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3649,11 +3754,11 @@ func (m *Selection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n20, err := m.Child.MarshalTo(dAtA[i:]) + n21, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n21 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3704,11 +3809,11 @@ func (m *Projection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n21, err := m.Child.MarshalTo(dAtA[i:]) + n22, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n22 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -3791,11 +3896,11 @@ func (m *Aggregation) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n22, err := m.Child.MarshalTo(dAtA[i:]) + n23, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n23 } if m.PreAggMode != nil { dAtA[i] = 0x38 @@ -3842,11 +3947,11 @@ func (m *TopN) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n23, err := m.Child.MarshalTo(dAtA[i:]) + n24, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n24 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -3888,11 +3993,11 @@ func (m *Limit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n24, err := m.Child.MarshalTo(dAtA[i:]) + n25, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n25 } if len(m.PartitionBy) > 0 { for _, msg := range m.PartitionBy { @@ -3986,11 +4091,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintExecutor(dAtA, i, uint64(*m.Concurrency)) } if m.DetailInfo != nil { - nn25, err := m.DetailInfo.MarshalTo(dAtA[i:]) + nn26, err := m.DetailInfo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn25 + i += nn26 } if m.RuConsumption != nil { dAtA[i] = 0x3a @@ -4002,11 +4107,11 @@ func (m *ExecutorExecutionSummary) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashWaitSummary.Size())) - n26, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) + n27, err := m.TiflashWaitSummary.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n27 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4020,11 +4125,11 @@ func (m *ExecutorExecutionSummary_TiflashScanContext) MarshalTo(dAtA []byte) (in dAtA[i] = 0x32 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.TiflashScanContext.Size())) - n27, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) + n28, err := m.TiflashScanContext.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n28 } return i, nil } @@ -4469,11 +4574,11 @@ func (m *Sort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n28, err := m.Child.MarshalTo(dAtA[i:]) + n29, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n29 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4528,11 +4633,11 @@ func (m *WindowFrameBound) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.FrameRange.Size())) - n29, err := m.FrameRange.MarshalTo(dAtA[i:]) + n30, err := m.FrameRange.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n30 } if m.CmpDataType != nil { dAtA[i] = 0x30 @@ -4567,21 +4672,21 @@ func (m *WindowFrame) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Start.Size())) - n30, err := m.Start.MarshalTo(dAtA[i:]) + n31, err := m.Start.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n31 } if m.End != nil { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.End.Size())) - n31, err := m.End.MarshalTo(dAtA[i:]) + n32, err := m.End.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n32 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4644,21 +4749,21 @@ func (m *Window) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Frame.Size())) - n32, err := m.Frame.MarshalTo(dAtA[i:]) + n33, err := m.Frame.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n33 } if m.Child != nil { dAtA[i] = 0x2a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n33, err := m.Child.MarshalTo(dAtA[i:]) + n34, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n34 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4763,11 +4868,11 @@ func (m *Expand) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n34, err := m.Child.MarshalTo(dAtA[i:]) + n35, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n35 } if m.Version != nil { dAtA[i] = 0x18 @@ -4859,11 +4964,11 @@ func (m *Expand2) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintExecutor(dAtA, i, uint64(m.Child.Size())) - n35, err := m.Child.MarshalTo(dAtA[i:]) + n36, err := m.Child.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n36 } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) @@ -4954,6 +5059,13 @@ func (m *Executor) Size() (n int) { l = m.Expand2.Size() n += 2 + l + sovExecutor(uint64(l)) } + if m.IndexLookup != nil { + l = m.IndexLookup.Size() + n += 2 + l + sovExecutor(uint64(l)) + } + if m.ParentIdx != nil { + n += 2 + sovExecutor(uint64(*m.ParentIdx)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -5005,6 +5117,23 @@ func (m *ExchangeSender) Size() (n int) { return n } +func (m *IndexLookUp) Size() (n int) { + var l int + _ = l + if len(m.IndexHandleOffsets) > 0 { + for _, e := range m.IndexHandleOffsets { + n += 1 + sovExecutor(uint64(e)) + } + } + if m.KeepOrder != nil { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *EncodedBytesSlice) Size() (n int) { var l int _ = l @@ -6544,6 +6673,59 @@ func (m *Executor) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IndexLookup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.IndexLookup == nil { + m.IndexLookup = &IndexLookUp{} + } + if err := m.IndexLookup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ParentIdx", wireType) + } + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ParentIdx = &v default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -6841,6 +7023,140 @@ func (m *ExchangeSender) Unmarshal(dAtA []byte) error { } return nil } +func (m *IndexLookUp) 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 ErrIntOverflowExecutor + } + 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: IndexLookUp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IndexLookUp: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IndexHandleOffsets = append(m.IndexHandleOffsets, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field IndexHandleOffsets", wireType) + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field KeepOrder", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.KeepOrder = &b + default: + iNdEx = preIndex + skippy, err := skipExecutor(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthExecutor + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *EncodedBytesSlice) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -12811,277 +13127,283 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 4340 bytes of a gzipped FileDescriptorProto + // 4434 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1b, 0x47, - 0x76, 0x27, 0x40, 0x7c, 0x3e, 0x80, 0xe0, 0xb0, 0x49, 0x49, 0x10, 0x65, 0x49, 0x34, 0x56, 0xb6, - 0x15, 0xc4, 0x96, 0x6d, 0x4a, 0xeb, 0x8f, 0xdd, 0xec, 0xda, 0xfc, 0xb4, 0x20, 0x91, 0x20, 0x77, - 0xc0, 0xc8, 0x7b, 0x48, 0xd5, 0xd4, 0x70, 0xa6, 0x01, 0xb6, 0x38, 0xd3, 0x33, 0x9a, 0x9e, 0x91, - 0x40, 0x9f, 0xfc, 0x37, 0x64, 0x2b, 0xa9, 0xdc, 0x52, 0x95, 0x53, 0xaa, 0x92, 0xca, 0xbf, 0x90, - 0x54, 0xa5, 0x52, 0xb5, 0xc7, 0x5c, 0xb3, 0x87, 0x54, 0xca, 0x39, 0xe5, 0x5f, 0xc8, 0x29, 0xd5, - 0xaf, 0x7b, 0x06, 0x03, 0x02, 0xa4, 0xe5, 0x4a, 0x0e, 0x39, 0x01, 0xf3, 0xde, 0xef, 0xf7, 0xfa, - 0xeb, 0xf5, 0xeb, 0xd7, 0x6f, 0x06, 0x5a, 0x74, 0x4c, 0x9d, 0x24, 0x0e, 0xa2, 0x47, 0x61, 0x14, - 0xc4, 0x01, 0x29, 0xc5, 0x2c, 0x3c, 0x5d, 0x37, 0xe8, 0x38, 0x8c, 0xa8, 0x10, 0x2c, 0xe0, 0x4a, - 0xbe, 0xde, 0x14, 0xce, 0x19, 0xf5, 0x6d, 0xfd, 0xb4, 0x36, 0x0a, 0x46, 0x01, 0xfe, 0xfd, 0x58, - 0xfe, 0x53, 0xd2, 0xce, 0x3f, 0x57, 0xa1, 0xb6, 0xa7, 0xcd, 0x91, 0x07, 0x50, 0x8c, 0xc3, 0x76, - 0x61, 0xa3, 0xf0, 0xb0, 0xb5, 0xd9, 0x7a, 0x24, 0xad, 0x3e, 0x92, 0xba, 0x93, 0x8b, 0x90, 0x6e, - 0x97, 0x7e, 0xff, 0xef, 0xf7, 0x17, 0xcc, 0x62, 0x1c, 0x92, 0x2e, 0xd4, 0xe2, 0x53, 0xcf, 0x12, - 0x8e, 0xcd, 0xdb, 0xc5, 0x8d, 0xc2, 0xc3, 0xc6, 0xe6, 0xb2, 0xc2, 0x9e, 0xd8, 0xa7, 0x1e, 0x1d, - 0x38, 0x36, 0x37, 0xab, 0xf1, 0xa9, 0x27, 0xff, 0x48, 0x2c, 0x73, 0xc7, 0x0a, 0xbb, 0x98, 0xc7, - 0xf6, 0xb8, 0x4b, 0xc7, 0x0a, 0xcb, 0x5c, 0xfc, 0x43, 0x3e, 0x82, 0xba, 0xa0, 0x1e, 0x75, 0x62, - 0x16, 0xf0, 0x76, 0x29, 0x0f, 0x1e, 0xa4, 0x62, 0x73, 0x82, 0x20, 0x8f, 0xa1, 0x61, 0x8f, 0x46, - 0x11, 0x1d, 0xd9, 0x48, 0x28, 0x23, 0x61, 0x45, 0x11, 0xb6, 0x26, 0x0a, 0x33, 0x8f, 0x22, 0xf7, - 0xa0, 0x14, 0x07, 0x61, 0xbf, 0x5d, 0x41, 0x34, 0xe8, 0x7e, 0x07, 0x61, 0xdf, 0x44, 0x39, 0x79, - 0x17, 0xca, 0x1e, 0xf3, 0x59, 0xdc, 0xae, 0x22, 0xa0, 0xa1, 0x00, 0x07, 0x52, 0x64, 0x2a, 0x0d, - 0xd9, 0x81, 0x15, 0x3a, 0x76, 0xce, 0x6c, 0x3e, 0xa2, 0x56, 0x44, 0x1d, 0xca, 0x5e, 0xd3, 0xa8, - 0x5d, 0x43, 0xf8, 0xcd, 0x74, 0xce, 0x94, 0xda, 0xd4, 0x5a, 0xd3, 0xa0, 0x97, 0x24, 0xb2, 0x1f, - 0x2f, 0x03, 0xc6, 0xdb, 0xf5, 0x7c, 0x3f, 0x9e, 0x05, 0x8c, 0x9b, 0x28, 0x27, 0xf7, 0xa1, 0x91, - 0x2e, 0xb2, 0xc5, 0xdc, 0x36, 0x6c, 0x14, 0x1e, 0xd6, 0x4d, 0x48, 0x45, 0x3d, 0x57, 0x1a, 0x38, - 0x67, 0x9e, 0xd7, 0x6e, 0xe4, 0x0d, 0x3c, 0x67, 0x9e, 0x67, 0xa2, 0x9c, 0xfc, 0x0a, 0x96, 0xb3, - 0x5e, 0x0a, 0xca, 0x5d, 0x1a, 0xb5, 0x9b, 0x08, 0x5d, 0x9b, 0xee, 0xe3, 0x00, 0x75, 0x66, 0x8b, - 0x4e, 0x3d, 0x93, 0x4f, 0x00, 0x8e, 0xa3, 0xe0, 0xa5, 0x5e, 0x8c, 0x25, 0x64, 0x1a, 0x8a, 0x39, - 0x91, 0x9b, 0x39, 0x0c, 0x79, 0x06, 0x6b, 0xa1, 0x1d, 0xc5, 0x4c, 0x3e, 0x58, 0xb1, 0xf4, 0x04, - 0xb5, 0xea, 0x2d, 0xe4, 0xb6, 0x35, 0x37, 0x45, 0x4c, 0x5c, 0x85, 0x84, 0x33, 0x32, 0x39, 0x38, - 0x11, 0x44, 0x71, 0x7b, 0x39, 0x3f, 0xb8, 0x41, 0x10, 0xc5, 0x26, 0xca, 0xc9, 0x03, 0xa8, 0xbc, - 0x61, 0xdc, 0x0d, 0xde, 0xb4, 0x0d, 0x44, 0x34, 0x15, 0xe2, 0x5b, 0x94, 0x99, 0x5a, 0x47, 0xfa, - 0xf0, 0xee, 0x90, 0x71, 0x6a, 0x8d, 0x22, 0x9b, 0x71, 0xea, 0x5a, 0xe2, 0x2c, 0x19, 0x0e, 0x65, - 0xb7, 0xe2, 0x88, 0xda, 0xbe, 0xe5, 0x04, 0x09, 0x8f, 0xdb, 0x2b, 0x1b, 0x85, 0x87, 0x25, 0xed, - 0xdc, 0x77, 0x25, 0xfc, 0x1b, 0x85, 0x1e, 0x28, 0xf0, 0x00, 0xb1, 0x3b, 0x12, 0x4a, 0x9e, 0xc1, - 0xfd, 0xb9, 0xf6, 0x4e, 0xed, 0xd8, 0x39, 0xb3, 0x04, 0xfb, 0x8e, 0xb6, 0x49, 0xce, 0xda, 0x9d, - 0x59, 0x6b, 0xdb, 0x12, 0x39, 0x60, 0xdf, 0x51, 0x39, 0x02, 0x3a, 0x0e, 0x6d, 0xee, 0xb6, 0x57, - 0xf3, 0x23, 0xd8, 0x43, 0x99, 0xa9, 0x75, 0xe4, 0x03, 0xa8, 0xaa, 0x7f, 0x9b, 0xed, 0x35, 0x84, - 0x2d, 0xe5, 0x61, 0x9b, 0x66, 0xaa, 0xed, 0xfc, 0xfd, 0x22, 0xb4, 0xa6, 0x57, 0x94, 0x3c, 0xcc, - 0xed, 0x65, 0x32, 0xbd, 0xe6, 0x33, 0xfb, 0x79, 0x85, 0x72, 0x27, 0x70, 0xa9, 0x6b, 0xc5, 0xb6, - 0x38, 0xb7, 0x7c, 0x1a, 0xdb, 0xed, 0xe2, 0xc6, 0xe2, 0xc3, 0xa6, 0xb9, 0xac, 0x15, 0x27, 0xb6, - 0x38, 0x3f, 0xa4, 0xb1, 0x4d, 0x3e, 0x85, 0xd6, 0x64, 0x95, 0xcf, 0xe9, 0x85, 0x68, 0x2f, 0x6e, - 0x2c, 0x4e, 0xd6, 0x68, 0x6f, 0x1c, 0x46, 0xe6, 0x52, 0x86, 0x78, 0x4e, 0x2f, 0x04, 0x79, 0x00, - 0x65, 0xe7, 0x8c, 0x79, 0xae, 0xde, 0xd2, 0xb9, 0xb8, 0x22, 0x5d, 0xd9, 0x54, 0x4a, 0xf2, 0x1e, - 0x94, 0xe3, 0x8b, 0x90, 0x8a, 0x76, 0x19, 0xed, 0xe9, 0x8d, 0xbf, 0xcf, 0xa8, 0xe7, 0xca, 0xee, - 0x9a, 0x4a, 0x4b, 0x3e, 0x87, 0x65, 0xdb, 0xf3, 0xac, 0xa1, 0x94, 0x5b, 0x8a, 0x50, 0x99, 0x4f, - 0x58, 0xb2, 0x3d, 0x2f, 0x7b, 0x12, 0xe4, 0x57, 0xd0, 0x70, 0x02, 0x3f, 0x0d, 0x90, 0xb8, 0xbd, - 0x5b, 0x9b, 0x37, 0x14, 0x69, 0x67, 0xa2, 0x38, 0x0c, 0xdc, 0x74, 0x6a, 0xf2, 0x78, 0x72, 0x00, - 0x37, 0x93, 0x30, 0x75, 0x9c, 0x98, 0xe6, 0x26, 0xaa, 0x86, 0xcd, 0xdf, 0xd2, 0xa3, 0x52, 0xd3, - 0xb5, 0x7d, 0x11, 0x53, 0x31, 0xf0, 0x98, 0x43, 0xcd, 0xd5, 0x94, 0xb6, 0x13, 0xd3, 0x74, 0x16, - 0x3b, 0x5f, 0xc0, 0xca, 0x0c, 0x92, 0xfc, 0x0c, 0x96, 0xf2, 0xcb, 0x20, 0xda, 0x05, 0x5c, 0x82, - 0x66, 0x6e, 0x09, 0x44, 0xe7, 0x0f, 0x05, 0x30, 0x2e, 0x87, 0x97, 0xf9, 0x0b, 0x58, 0x98, 0xbf, - 0x80, 0x9f, 0x40, 0x23, 0x3f, 0x79, 0xc5, 0xf9, 0x93, 0x07, 0xc3, 0xc9, 0xcc, 0x75, 0xd0, 0x91, - 0x16, 0xaf, 0x72, 0x24, 0x74, 0xa1, 0x5d, 0xb8, 0x1f, 0x44, 0x6c, 0xc4, 0xb8, 0xed, 0xe1, 0xf4, - 0x84, 0x91, 0x1b, 0x38, 0x09, 0x8d, 0x72, 0xfd, 0x29, 0x61, 0x7f, 0xee, 0xa4, 0xb0, 0x9d, 0x98, - 0x1e, 0x6b, 0x50, 0x36, 0x2d, 0xbf, 0x5b, 0x84, 0xe6, 0x56, 0xbf, 0xff, 0x9b, 0x84, 0x46, 0x17, - 0x3d, 0x3e, 0x0c, 0xc8, 0xe7, 0x00, 0xaf, 0xe4, 0x03, 0x76, 0x76, 0xda, 0x97, 0x53, 0x5c, 0xce, - 0x97, 0xeb, 0xaf, 0x52, 0x01, 0xe9, 0xc1, 0xb2, 0xcb, 0x44, 0x6c, 0x73, 0x87, 0xca, 0xd6, 0x23, - 0xe6, 0xe0, 0x49, 0xd5, 0xda, 0x5c, 0x57, 0xec, 0x17, 0xd4, 0x89, 0x83, 0x68, 0x57, 0x43, 0x0e, - 0x11, 0xa1, 0xad, 0xb4, 0xdc, 0x29, 0x29, 0xb9, 0x0d, 0xe5, 0x38, 0x08, 0xad, 0x73, 0x9c, 0x81, - 0x25, 0x0d, 0x92, 0x87, 0xc5, 0x73, 0xf2, 0x9e, 0xf4, 0x29, 0x2f, 0xf1, 0xb9, 0xc5, 0x6d, 0x9f, - 0xa2, 0x7f, 0xd7, 0x35, 0x00, 0x94, 0xa2, 0x6f, 0xfb, 0x94, 0xbc, 0x0b, 0x75, 0x0d, 0x63, 0x2e, - 0x1e, 0x53, 0x8b, 0x1a, 0x54, 0x53, 0x62, 0x8c, 0xe6, 0x8d, 0x88, 0x0e, 0xad, 0xd7, 0xd4, 0xb1, - 0x86, 0x8f, 0x37, 0xf1, 0x74, 0x6a, 0x9a, 0xf5, 0x88, 0x0e, 0x5f, 0x50, 0x67, 0xff, 0xf1, 0x26, - 0xb9, 0x0f, 0x35, 0x26, 0x0f, 0x4c, 0x69, 0xa1, 0x96, 0xb3, 0x50, 0x45, 0x69, 0x4f, 0x46, 0x8a, - 0xa6, 0x6f, 0x8f, 0xad, 0xb4, 0xef, 0x78, 0x60, 0x14, 0x52, 0x47, 0xf6, 0xed, 0x71, 0x3a, 0x54, - 0xd2, 0x85, 0xd6, 0x19, 0x17, 0x6f, 0x2c, 0x3a, 0xb4, 0x04, 0xb5, 0x23, 0xe7, 0x0c, 0x23, 0x4b, - 0x3a, 0xae, 0xa6, 0xd4, 0xed, 0x0d, 0x07, 0xa8, 0x79, 0x56, 0xaa, 0x55, 0x8d, 0x5a, 0xe7, 0xfb, - 0x32, 0xd4, 0x27, 0xa1, 0xf9, 0x3e, 0xd4, 0x54, 0x70, 0x67, 0x2e, 0x2e, 0x48, 0xd6, 0x13, 0x94, - 0xf6, 0x5c, 0xd2, 0x85, 0xaa, 0x1a, 0x56, 0xea, 0x5c, 0x46, 0xba, 0xc9, 0x70, 0xac, 0x7c, 0x18, - 0x98, 0x29, 0x80, 0xb4, 0xa1, 0xe4, 0x52, 0xe1, 0xe0, 0xd4, 0xd6, 0xd2, 0xa9, 0x95, 0x12, 0xf2, - 0x21, 0x90, 0x30, 0x62, 0xbe, 0x1d, 0x5d, 0x58, 0xd9, 0xdc, 0x09, 0xf4, 0xa1, 0x45, 0xd3, 0xd0, - 0x1a, 0x6d, 0xd1, 0x15, 0xe4, 0x6b, 0x30, 0x38, 0x1d, 0xc7, 0x56, 0x44, 0x6d, 0xd7, 0xa2, 0x7c, - 0xc4, 0x38, 0xc5, 0x89, 0x6e, 0xa5, 0x8d, 0xef, 0xa1, 0x2c, 0xe7, 0x2b, 0x2d, 0x89, 0x37, 0xa9, - 0xed, 0x2a, 0x0d, 0xf9, 0x10, 0x2a, 0x91, 0xf4, 0xe8, 0x34, 0x9c, 0xe8, 0x28, 0xf5, 0x9c, 0x5e, - 0x98, 0x52, 0xac, 0x59, 0x1a, 0x43, 0xbe, 0x84, 0xdb, 0x69, 0xef, 0xc2, 0x88, 0x0e, 0xd9, 0x38, - 0xdf, 0xc9, 0x2a, 0x76, 0xf2, 0xa6, 0x06, 0x1c, 0xa3, 0x7e, 0xd2, 0xd5, 0xbb, 0x00, 0xe7, 0x94, - 0x86, 0x56, 0x10, 0xb9, 0x3a, 0x6d, 0xa8, 0x99, 0x75, 0x29, 0x39, 0x92, 0x02, 0xb2, 0x01, 0x4d, - 0x26, 0xac, 0xa1, 0x2d, 0x62, 0x75, 0x7a, 0xd6, 0x11, 0x00, 0x4c, 0xec, 0xdb, 0x22, 0xc6, 0x05, - 0x38, 0x84, 0xbb, 0x61, 0x22, 0xce, 0xa8, 0x6b, 0xb9, 0xc1, 0x1b, 0x6e, 0x0d, 0x99, 0x17, 0xd3, - 0xc8, 0x72, 0x02, 0xee, 0x62, 0xc8, 0x15, 0x6d, 0x98, 0x09, 0xc8, 0xeb, 0x8a, 0xb0, 0x1b, 0xbc, - 0xe1, 0xfb, 0x08, 0xdf, 0xc9, 0xd0, 0x64, 0x07, 0x56, 0xa3, 0x84, 0xc7, 0xcc, 0xa7, 0xa9, 0x29, - 0x8f, 0x89, 0xb8, 0xdd, 0x40, 0x23, 0xab, 0xca, 0x88, 0xa9, 0x00, 0x8a, 0x6b, 0xae, 0x44, 0xf9, - 0xc7, 0x03, 0x26, 0x62, 0xf2, 0x11, 0x18, 0xd2, 0xfb, 0xde, 0xd8, 0x2c, 0xb6, 0xd0, 0x94, 0x2f, - 0x30, 0xdb, 0x28, 0xeb, 0x79, 0x5b, 0xf2, 0xed, 0xf1, 0xb7, 0x36, 0x8b, 0x4f, 0x98, 0x4f, 0x0f, - 0x05, 0xf9, 0x18, 0xea, 0x36, 0xe7, 0x16, 0x6e, 0x57, 0x9d, 0x5b, 0x5c, 0xda, 0xd5, 0xe8, 0x26, - 0x35, 0x9b, 0x73, 0x7c, 0xea, 0xfc, 0x75, 0x09, 0xc8, 0x6c, 0xea, 0xf0, 0xff, 0xd3, 0x17, 0xaf, - 0xf5, 0x8d, 0xf2, 0xb5, 0xbe, 0xf1, 0x33, 0x98, 0x1c, 0x9d, 0x08, 0xaf, 0x20, 0xbc, 0x99, 0x09, - 0x25, 0xe8, 0xb2, 0x87, 0x54, 0x7f, 0xba, 0x87, 0xd4, 0xfe, 0x2f, 0x3c, 0xa4, 0xfe, 0xbf, 0xf6, - 0x10, 0x78, 0x4b, 0x0f, 0x69, 0xbc, 0x85, 0x87, 0xfc, 0x77, 0x19, 0x4a, 0x32, 0x7d, 0x26, 0x9f, - 0x42, 0x5d, 0x26, 0xd0, 0xf9, 0x13, 0xa3, 0x35, 0xc9, 0xae, 0x73, 0x11, 0xa0, 0xf6, 0x52, 0x3f, - 0x93, 0x5f, 0x43, 0x0b, 0x29, 0x32, 0xbb, 0x56, 0xbc, 0x62, 0xfe, 0xa4, 0x91, 0xbc, 0x4b, 0xb7, - 0xa0, 0xe6, 0xcb, 0x9c, 0x4c, 0xde, 0x71, 0x30, 0x87, 0x89, 0x28, 0xd7, 0xd9, 0xd0, 0xe5, 0x1c, - 0x27, 0xd3, 0xcb, 0xb3, 0x80, 0x71, 0x4e, 0x65, 0x52, 0x3f, 0xc6, 0x03, 0x23, 0x3b, 0x0b, 0x50, - 0xdc, 0x73, 0xc7, 0xe4, 0x13, 0x68, 0x79, 0x74, 0x18, 0x5b, 0xd8, 0x27, 0x4c, 0xb1, 0xca, 0x33, - 0xeb, 0xd5, 0x94, 0x08, 0xd9, 0x31, 0xcc, 0xb0, 0x36, 0x61, 0x39, 0x62, 0xa3, 0xb3, 0x3c, 0xa5, - 0x32, 0x9b, 0x95, 0x21, 0x24, 0xe3, 0x7c, 0x02, 0x8d, 0x30, 0x0a, 0x4e, 0xa9, 0xce, 0x03, 0xaa, - 0x57, 0xe4, 0x01, 0x88, 0x51, 0x79, 0xc0, 0x27, 0xd0, 0x38, 0x4d, 0x58, 0x96, 0x39, 0xd4, 0xae, - 0x60, 0x20, 0x46, 0x31, 0x1e, 0xc3, 0x32, 0x8e, 0x24, 0xe7, 0x7a, 0xf5, 0x99, 0x7e, 0xe1, 0x60, - 0x73, 0xee, 0xf6, 0x73, 0x30, 0xd4, 0x60, 0xae, 0x0d, 0x69, 0x6a, 0xc0, 0xd3, 0xb4, 0x20, 0x3e, - 0x9b, 0xf6, 0xf3, 0xc6, 0x2c, 0x0d, 0x31, 0x39, 0xda, 0x53, 0xb8, 0xa3, 0x68, 0xf4, 0x55, 0x8e, - 0x69, 0x0d, 0xa3, 0xc0, 0xb7, 0x18, 0x6f, 0x37, 0x67, 0x2c, 0xdc, 0x42, 0xf8, 0xde, 0xab, 0x89, - 0x8d, 0xfd, 0x28, 0xf0, 0x7b, 0x9c, 0x3c, 0x81, 0x5b, 0x4c, 0x58, 0x3c, 0xf1, 0x3c, 0xcb, 0x7e, - 0x63, 0x47, 0xf2, 0xd6, 0xe5, 0x33, 0x5c, 0x11, 0x0c, 0x71, 0x35, 0x73, 0x95, 0x89, 0x7e, 0xe2, - 0x79, 0x5b, 0x52, 0x39, 0xa0, 0x3e, 0x43, 0x77, 0xbd, 0x62, 0x73, 0xb5, 0x7e, 0xca, 0xe6, 0xea, - 0xfc, 0x57, 0x11, 0x96, 0xa6, 0x40, 0x64, 0x0d, 0x8a, 0x3a, 0x26, 0xa6, 0x1b, 0xac, 0xc8, 0x5c, - 0xf2, 0x04, 0x0c, 0x11, 0x24, 0x91, 0x43, 0x2d, 0x3a, 0x0e, 0x75, 0x4b, 0xc5, 0xd9, 0x05, 0x51, - 0x18, 0xf9, 0x1f, 0xb7, 0xee, 0x13, 0x30, 0x62, 0x3b, 0x1a, 0xd1, 0x38, 0xc7, 0x9a, 0x4d, 0xfa, - 0x5b, 0x0a, 0x93, 0xb1, 0x36, 0x81, 0x64, 0x6d, 0x4d, 0xee, 0xb1, 0xf9, 0x14, 0xc9, 0x48, 0xdb, - 0xc9, 0xee, 0xb4, 0x9b, 0x40, 0xb2, 0x96, 0x26, 0x9c, 0x72, 0x9e, 0x93, 0xb6, 0x92, 0x71, 0x3e, - 0x83, 0x6a, 0x34, 0x54, 0xbb, 0xb6, 0x82, 0xbb, 0xf6, 0xd6, 0x9c, 0x49, 0xcb, 0x6d, 0xdd, 0x4a, - 0x34, 0xc4, 0x4d, 0xab, 0x78, 0x7e, 0xe0, 0x52, 0x7d, 0x17, 0x98, 0xc7, 0xcb, 0xdd, 0x06, 0x2a, - 0xd1, 0x50, 0x3e, 0x75, 0xfe, 0xad, 0x00, 0xf5, 0xac, 0x76, 0xf1, 0xe3, 0x27, 0x50, 0x3e, 0x71, - 0x2b, 0xce, 0x4b, 0xdc, 0x72, 0x47, 0xd4, 0xe2, 0xdb, 0x1e, 0x51, 0xa5, 0x99, 0x23, 0xea, 0x26, - 0x54, 0x12, 0xce, 0x5e, 0x25, 0x2a, 0xed, 0xa9, 0x99, 0xfa, 0xe9, 0x8a, 0xa3, 0xab, 0x32, 0xff, - 0xe8, 0xea, 0xfc, 0xae, 0x00, 0xf5, 0xac, 0xd4, 0x42, 0xba, 0x00, 0xb9, 0xbd, 0x54, 0x98, 0x59, - 0xf1, 0x9c, 0x96, 0x3c, 0x81, 0x56, 0x14, 0xf2, 0xfc, 0xde, 0x53, 0x7e, 0xa5, 0xef, 0xab, 0x66, - 0xc8, 0x75, 0x0c, 0x0a, 0x79, 0x6e, 0xf3, 0x65, 0x37, 0xc3, 0xc5, 0x6b, 0x6e, 0x86, 0x9d, 0xef, - 0x0b, 0xf9, 0x5a, 0x04, 0xd9, 0x80, 0xb2, 0xf4, 0xc3, 0x79, 0x3d, 0x52, 0x0a, 0xd2, 0x85, 0xba, - 0xec, 0x8c, 0x42, 0xcd, 0xed, 0x47, 0x2d, 0x52, 0x7f, 0xde, 0xb6, 0x0b, 0xff, 0x54, 0x84, 0x46, - 0xae, 0xa4, 0x44, 0xde, 0x83, 0xda, 0x28, 0x0a, 0x92, 0xd0, 0x3a, 0xbd, 0x98, 0xd3, 0x8d, 0x2a, - 0xea, 0xb6, 0x2f, 0x24, 0xcc, 0x1e, 0x8d, 0xac, 0x61, 0xc2, 0x9d, 0x39, 0xfb, 0xac, 0x6a, 0x8f, - 0x46, 0xfb, 0x09, 0x77, 0xc8, 0x06, 0xd4, 0xd4, 0x15, 0x91, 0xba, 0x53, 0xd9, 0x47, 0x26, 0x25, - 0x1f, 0x43, 0x53, 0x8e, 0x28, 0x6b, 0xb3, 0x34, 0x6f, 0x50, 0x10, 0x85, 0xfc, 0x1b, 0xdd, 0xb2, - 0x26, 0x64, 0xad, 0x97, 0xaf, 0x22, 0x6c, 0xe9, 0x3e, 0x64, 0xf3, 0x50, 0xb9, 0xee, 0x92, 0xfe, - 0x25, 0x34, 0xc3, 0x88, 0xa2, 0xd9, 0xd9, 0x9d, 0x73, 0xc2, 0xf6, 0x3d, 0x5b, 0x9c, 0x1d, 0x47, - 0x74, 0x6b, 0x34, 0x92, 0x7b, 0x45, 0x9e, 0x1e, 0xe9, 0xff, 0xce, 0xdf, 0x14, 0xa0, 0x74, 0x12, - 0x84, 0x7d, 0xf2, 0x01, 0xd4, 0x30, 0xf7, 0x9d, 0xcc, 0x9d, 0xae, 0x7d, 0x6c, 0x5f, 0xf4, 0x62, - 0xea, 0x9b, 0x55, 0xd4, 0x6e, 0x5f, 0x90, 0xf5, 0xb4, 0x14, 0x57, 0xcc, 0x15, 0x55, 0x74, 0x0d, - 0xee, 0xad, 0x96, 0x4d, 0xce, 0xc2, 0x24, 0x9f, 0xca, 0xa6, 0x6d, 0xba, 0xb9, 0x46, 0x86, 0xd8, - 0xbe, 0xe8, 0x7c, 0x07, 0x65, 0x2c, 0xf5, 0x4d, 0xda, 0x2e, 0x5c, 0xd3, 0x76, 0xf1, 0xa7, 0xb4, - 0xbd, 0xf8, 0x63, 0x6d, 0x7f, 0x0d, 0xa5, 0xe7, 0xcc, 0xf3, 0xc8, 0x3b, 0x50, 0x71, 0x02, 0xce, - 0x7b, 0xbb, 0x53, 0x6d, 0x6b, 0x99, 0xec, 0x98, 0x4a, 0x8a, 0x8a, 0x39, 0x47, 0x51, 0xa2, 0xce, - 0xdf, 0x2d, 0x42, 0x3b, 0xed, 0x86, 0xfa, 0x65, 0x01, 0x1f, 0x24, 0xbe, 0xdc, 0xe4, 0xa4, 0x0b, - 0x2b, 0x78, 0xca, 0x84, 0x51, 0xe0, 0x50, 0x21, 0xa8, 0x6b, 0xe1, 0xa6, 0x2e, 0x3c, 0x2c, 0x99, - 0xcb, 0x52, 0x71, 0x9c, 0xca, 0xfb, 0x72, 0x03, 0xad, 0xf0, 0xc4, 0x97, 0x50, 0x37, 0x71, 0xa8, - 0x6b, 0x45, 0xc1, 0x1b, 0xa1, 0x56, 0xc1, 0x5c, 0xe6, 0x89, 0x7f, 0xac, 0xe5, 0x66, 0xf0, 0x46, - 0x90, 0xf7, 0xa0, 0x25, 0xb1, 0x2c, 0xa6, 0x91, 0xad, 0x76, 0xfe, 0x22, 0x02, 0x97, 0x78, 0xe2, - 0xf7, 0x32, 0xe1, 0xe5, 0x7a, 0x66, 0x69, 0xa6, 0x9e, 0xb9, 0x21, 0xef, 0xd2, 0xdc, 0x49, 0xa2, - 0x88, 0x72, 0xe7, 0x02, 0xc3, 0x58, 0xc9, 0xcc, 0x8b, 0xc8, 0x01, 0xac, 0xc5, 0x6c, 0x28, 0x5d, - 0x0c, 0x13, 0x5f, 0x19, 0x6c, 0x62, 0x3a, 0x8e, 0xb5, 0xc7, 0xb6, 0xa7, 0x9c, 0x50, 0x06, 0xe7, - 0x1d, 0xa5, 0x7f, 0xba, 0x60, 0x12, 0xcd, 0xcb, 0x49, 0x65, 0xbf, 0xa3, 0x44, 0xda, 0x10, 0x89, - 0x1f, 0xc6, 0x69, 0x49, 0xa8, 0x69, 0x2e, 0x45, 0xc9, 0xce, 0x44, 0x48, 0x9e, 0x4d, 0x1a, 0xc5, - 0xdc, 0x55, 0xa8, 0xe9, 0xd4, 0xf5, 0xde, 0xe9, 0x46, 0x65, 0xfe, 0xaa, 0xa7, 0x3b, 0x6b, 0x32, - 0x27, 0xdb, 0x6e, 0x02, 0xec, 0xd2, 0xd8, 0x66, 0x9e, 0x8c, 0xea, 0x9d, 0x11, 0xac, 0x69, 0x5e, - 0xb6, 0x56, 0x58, 0xf3, 0x38, 0x82, 0x55, 0x9a, 0x0a, 0x74, 0x73, 0x8c, 0xa6, 0xd1, 0xee, 0xde, - 0xb4, 0xb3, 0x5d, 0x5e, 0x65, 0x93, 0xd0, 0x69, 0x09, 0xa3, 0xa2, 0xf3, 0x67, 0xb0, 0xae, 0x1b, - 0x32, 0xe9, 0x88, 0x05, 0xbc, 0x9f, 0xf8, 0x47, 0xc3, 0x1e, 0xd7, 0xf5, 0x80, 0xfb, 0xd0, 0x60, - 0xfa, 0x7f, 0x7a, 0x88, 0xd5, 0x4d, 0x48, 0x45, 0x3d, 0x57, 0x5e, 0x58, 0x23, 0xe4, 0x59, 0x3c, - 0xf1, 0xb5, 0x17, 0xd4, 0xa3, 0xd4, 0x52, 0xe7, 0x1f, 0x09, 0x90, 0xd9, 0x49, 0x27, 0x4f, 0x60, - 0xcd, 0xf5, 0x87, 0x4c, 0x17, 0x81, 0x39, 0x75, 0xad, 0xd0, 0x76, 0xce, 0xb5, 0xc7, 0x6d, 0x17, - 0xdb, 0x05, 0x93, 0x28, 0xfd, 0x40, 0xa9, 0x8f, 0xa5, 0x36, 0xcf, 0x3a, 0x67, 0x61, 0x98, 0xb1, - 0x8a, 0x33, 0x2c, 0xa5, 0x56, 0xac, 0xcf, 0xa1, 0xad, 0x59, 0xae, 0x1d, 0xdb, 0x59, 0x83, 0xe8, - 0xb5, 0xca, 0x19, 0x6f, 0x28, 0xfd, 0xae, 0x1d, 0xdb, 0xba, 0x3d, 0xf4, 0xdd, 0xcb, 0x44, 0xdd, - 0x26, 0x12, 0x4b, 0x33, 0x44, 0xa5, 0x45, 0xe2, 0x17, 0x70, 0x2b, 0x0e, 0x62, 0xdb, 0xb3, 0x34, - 0x3d, 0x12, 0x96, 0x17, 0xd8, 0xae, 0xbc, 0xd4, 0x94, 0xb3, 0xae, 0xae, 0x22, 0x64, 0x17, 0x11, - 0xa6, 0x38, 0x08, 0x6c, 0x17, 0x2f, 0x36, 0x6b, 0xd3, 0x4c, 0xaa, 0x68, 0x15, 0x6c, 0x6e, 0x25, - 0x4f, 0xa1, 0x48, 0xf8, 0x79, 0xda, 0x94, 0xca, 0xbd, 0x05, 0xb7, 0x43, 0x71, 0x16, 0xc4, 0x92, - 0x53, 0x45, 0x8e, 0xb2, 0xb7, 0x2d, 0xb5, 0x03, 0xad, 0x3c, 0xc4, 0xab, 0xa4, 0x17, 0x38, 0xb6, - 0x67, 0xa9, 0x95, 0x12, 0xe8, 0xb0, 0x25, 0xb3, 0x89, 0x42, 0xe5, 0x07, 0xb8, 0x77, 0x23, 0xea, - 0x07, 0x31, 0xcd, 0x50, 0x75, 0xb5, 0x77, 0x95, 0x34, 0x85, 0xbd, 0x0f, 0xcb, 0x89, 0xa0, 0x91, - 0xea, 0xeb, 0xe9, 0x45, 0x4c, 0xd5, 0xd5, 0xad, 0x64, 0x2e, 0x49, 0xb1, 0xec, 0x27, 0x56, 0x31, - 0xc9, 0xa7, 0x70, 0x43, 0x75, 0xd5, 0xa3, 0x76, 0xc4, 0x53, 0x82, 0x2f, 0xf0, 0x02, 0x57, 0x32, - 0x09, 0x2a, 0x0f, 0x94, 0x4e, 0x8f, 0xee, 0x4f, 0xe0, 0x8e, 0xcb, 0x84, 0x3c, 0x4f, 0x10, 0xeb, - 0xd8, 0xce, 0x19, 0xb5, 0xce, 0x58, 0xac, 0x9b, 0x69, 0x22, 0xf1, 0x96, 0x82, 0x48, 0xca, 0x8e, - 0x04, 0x3c, 0x65, 0xb1, 0x6a, 0xf0, 0xd7, 0xf0, 0xce, 0x2c, 0xdb, 0x67, 0x42, 0x68, 0xfa, 0x12, - 0xd2, 0xdb, 0x97, 0xe8, 0x87, 0x4c, 0x08, 0xc5, 0xff, 0x0c, 0xda, 0x97, 0x97, 0xd1, 0x39, 0xa3, - 0xce, 0xb9, 0xec, 0x73, 0x2b, 0x37, 0xb9, 0xe9, 0x1a, 0xee, 0x48, 0xe5, 0xa1, 0x90, 0x59, 0x95, - 0x88, 0xed, 0x74, 0xf5, 0xd2, 0xb9, 0x5b, 0x46, 0x86, 0x81, 0x1a, 0xd9, 0x58, 0x3a, 0x7d, 0xeb, - 0x50, 0x13, 0x74, 0xe4, 0x53, 0x1e, 0x0b, 0x7c, 0x5d, 0x51, 0x32, 0xb3, 0x67, 0xb5, 0xb9, 0xec, - 0xb4, 0xe0, 0xbb, 0x92, 0x6e, 0x2e, 0x5b, 0x55, 0x7b, 0xa5, 0xda, 0xa5, 0x5e, 0x6c, 0x2b, 0x97, - 0x24, 0x4a, 0x8d, 0x12, 0x74, 0xc3, 0xfb, 0xd0, 0x50, 0x6a, 0x35, 0xdc, 0x55, 0xd4, 0x2b, 0x86, - 0x1a, 0xe0, 0xfb, 0xb0, 0xec, 0xbf, 0x76, 0x1c, 0x8b, 0xf1, 0x30, 0x89, 0x95, 0x91, 0x35, 0xb5, - 0x72, 0x52, 0xdc, 0x93, 0x52, 0x34, 0xf4, 0x10, 0x8c, 0x1c, 0x4e, 0x59, 0xbb, 0x81, 0xc0, 0x56, - 0x06, 0x54, 0x16, 0x53, 0x64, 0x90, 0xc4, 0x99, 0xc9, 0x9b, 0x13, 0xe4, 0x11, 0x8a, 0xd1, 0xe6, - 0x06, 0x34, 0x3d, 0x1f, 0xf7, 0x94, 0x42, 0xdd, 0x52, 0xbd, 0xf3, 0x7c, 0xb9, 0x91, 0x10, 0xf1, - 0x4b, 0x58, 0xcf, 0xbb, 0x36, 0x36, 0xae, 0x4b, 0xec, 0xbe, 0x68, 0xb7, 0xd5, 0xda, 0x4f, 0xbc, - 0xbb, 0x37, 0xd1, 0x1f, 0xe6, 0x9c, 0x4d, 0x91, 0x4f, 0x59, 0xec, 0xdb, 0xa1, 0xe4, 0xdd, 0xce, - 0x39, 0x1b, 0xf2, 0xb6, 0x51, 0x75, 0x28, 0xc8, 0x47, 0xb0, 0xea, 0x33, 0x6e, 0xa9, 0x7d, 0x31, - 0x69, 0x68, 0x5d, 0xad, 0x9b, 0xcf, 0xf8, 0x81, 0xd4, 0x0c, 0xd2, 0x16, 0x24, 0xdc, 0x1e, 0xcf, - 0xc0, 0xef, 0x68, 0xb8, 0x3d, 0x9e, 0x86, 0x7f, 0x0c, 0x6b, 0xd2, 0xba, 0xde, 0x50, 0x13, 0xfc, - 0x3b, 0x6a, 0x67, 0xfb, 0x8c, 0x9b, 0xa8, 0x9a, 0x22, 0xd8, 0xe3, 0x59, 0xc2, 0x5d, 0x4d, 0xb0, - 0xc7, 0x97, 0x08, 0xc7, 0xb0, 0xaa, 0x7d, 0xcd, 0x0a, 0x86, 0x56, 0x1a, 0xa2, 0xdb, 0xf7, 0xf0, - 0x64, 0xd8, 0x98, 0x3a, 0x8a, 0xe6, 0x44, 0x7a, 0x73, 0x45, 0x93, 0x73, 0xc1, 0x7f, 0x12, 0x00, - 0x71, 0x51, 0xa7, 0x22, 0xe7, 0xfd, 0x7c, 0x00, 0x3c, 0x7c, 0xed, 0x38, 0xf3, 0x23, 0xa7, 0x22, - 0xe6, 0x23, 0xe7, 0xc6, 0x0c, 0x31, 0x17, 0x39, 0xbf, 0x86, 0xbb, 0x9a, 0xe8, 0xf9, 0xe9, 0x8d, - 0x77, 0xaa, 0xd9, 0x77, 0x91, 0x7d, 0x5b, 0x81, 0x0e, 0x7c, 0x75, 0x0f, 0xcb, 0x37, 0x3d, 0xd7, - 0x42, 0xbe, 0xfd, 0xce, 0x5c, 0x0b, 0xb9, 0x3e, 0x7c, 0x05, 0x77, 0x95, 0xeb, 0xbc, 0xc6, 0xb7, - 0x00, 0x16, 0x73, 0xc7, 0x2a, 0x7c, 0xe3, 0xad, 0x5f, 0x3c, 0x6e, 0xbb, 0x2a, 0x6e, 0x20, 0x48, - 0xbd, 0x29, 0xe8, 0xb9, 0x63, 0x19, 0xc0, 0xe5, 0x55, 0x7f, 0xf0, 0x98, 0xec, 0xc0, 0xfd, 0x6b, - 0x0c, 0xb8, 0x4c, 0x9c, 0xb7, 0x29, 0x9a, 0x58, 0x9f, 0x6f, 0x62, 0x97, 0x89, 0x73, 0xb2, 0x07, - 0x1b, 0xd7, 0x18, 0xc1, 0x58, 0xd6, 0x1e, 0xa2, 0x95, 0x3b, 0xf3, 0xad, 0x60, 0x30, 0xbb, 0x7a, - 0x30, 0x69, 0x95, 0x6d, 0x74, 0xd5, 0x60, 0x74, 0xa9, 0x6d, 0xde, 0x60, 0xd4, 0x9b, 0x81, 0xcc, - 0xc4, 0xd9, 0xbc, 0xc1, 0xa8, 0x77, 0x04, 0xda, 0xc8, 0x11, 0xbc, 0x77, 0x95, 0x91, 0xd7, 0x4c, - 0xb0, 0x58, 0xa6, 0x9b, 0x81, 0x4b, 0x45, 0x9b, 0xa1, 0xa9, 0x8d, 0x79, 0xa6, 0x5e, 0x28, 0x60, - 0x5f, 0xe2, 0xc8, 0x00, 0x3e, 0xb8, 0xca, 0xa0, 0xcb, 0x84, 0x63, 0x47, 0x6e, 0x66, 0xf2, 0x25, - 0x9a, 0xec, 0xcc, 0x33, 0xb9, 0x9b, 0x42, 0x95, 0xd1, 0x7d, 0x78, 0x77, 0xc6, 0x28, 0x86, 0xdf, - 0xd7, 0xd4, 0xc9, 0x06, 0x7b, 0x3e, 0x6f, 0xce, 0x65, 0x3c, 0x7f, 0x41, 0x1d, 0x3d, 0xda, 0x03, - 0x78, 0x30, 0xdf, 0x0e, 0xd6, 0x86, 0x44, 0x66, 0xca, 0x43, 0x53, 0xf7, 0x66, 0x4d, 0x1d, 0x21, - 0x4e, 0x59, 0xeb, 0xfc, 0x6d, 0x21, 0xcb, 0xa0, 0x72, 0xd9, 0x22, 0x79, 0x00, 0x2d, 0x9f, 0xf1, - 0x93, 0xc1, 0x91, 0x4a, 0x3c, 0xb3, 0x6c, 0xbd, 0xa9, 0xa4, 0x12, 0xda, 0x17, 0xe4, 0x31, 0xdc, - 0x0c, 0x59, 0x48, 0x3d, 0xc6, 0xa9, 0xf5, 0x2a, 0xa1, 0x09, 0xcd, 0xd0, 0x2a, 0x53, 0x5b, 0x4d, - 0xb5, 0xbf, 0x91, 0x4a, 0x4d, 0xfa, 0x1c, 0xda, 0x19, 0xe9, 0x34, 0xa2, 0xf6, 0x39, 0x8d, 0x32, - 0x9a, 0x4e, 0x98, 0x52, 0xfd, 0xb6, 0x52, 0x2b, 0x62, 0xe7, 0x3b, 0x28, 0x0d, 0x82, 0x28, 0x26, - 0xef, 0x43, 0xf5, 0x14, 0xaf, 0x30, 0x62, 0xfe, 0x15, 0x4e, 0x2b, 0xc9, 0x03, 0x58, 0x62, 0x02, - 0x0b, 0xf7, 0xb6, 0x27, 0x89, 0xea, 0xd6, 0x62, 0x4e, 0x0b, 0xdf, 0xf2, 0x0e, 0xfe, 0xe7, 0x45, - 0x30, 0xd4, 0x0b, 0xfe, 0xfd, 0xc8, 0xf6, 0xe9, 0x76, 0x90, 0x70, 0x79, 0xcb, 0x2a, 0xe5, 0x0a, - 0xbd, 0x37, 0xf2, 0x9f, 0x01, 0x20, 0x20, 0x57, 0xf8, 0x41, 0x20, 0xe9, 0x40, 0x3d, 0xe1, 0xa7, - 0x52, 0x45, 0xdd, 0xa9, 0x3b, 0xd4, 0x44, 0x4c, 0x6e, 0x42, 0x25, 0x18, 0x0e, 0x05, 0x8d, 0xf5, - 0x64, 0xe8, 0x27, 0xf2, 0x10, 0xea, 0x8e, 0xed, 0x39, 0xf2, 0xbe, 0x2c, 0xf4, 0x5d, 0x32, 0x7f, - 0x9f, 0x9f, 0x28, 0xc9, 0x1f, 0x43, 0x63, 0x28, 0x3b, 0x69, 0xe1, 0xfb, 0x22, 0xfd, 0x69, 0xca, - 0x54, 0xed, 0x04, 0xd5, 0xf8, 0x6a, 0x89, 0xfc, 0x02, 0x96, 0x1c, 0x3f, 0x54, 0x29, 0x68, 0xae, - 0x8e, 0xa5, 0xbf, 0x25, 0x41, 0xcc, 0x8e, 0x1f, 0xca, 0x14, 0x14, 0x0b, 0xac, 0x0d, 0x67, 0xf2, - 0xd0, 0xf9, 0xcb, 0x02, 0x34, 0x72, 0x93, 0x72, 0xdd, 0x7c, 0x20, 0x60, 0x66, 0x3e, 0x3e, 0x84, - 0xb2, 0x88, 0x6d, 0xbd, 0x32, 0xd9, 0x07, 0x2c, 0x97, 0xe7, 0xd9, 0x54, 0x20, 0xf2, 0x10, 0x16, - 0x29, 0x4f, 0xd7, 0xe9, 0x2a, 0xac, 0x84, 0x74, 0xfe, 0x50, 0x80, 0x8a, 0xd2, 0x90, 0x0f, 0xa0, - 0x3e, 0x4c, 0xb8, 0x63, 0x61, 0xe9, 0x6a, 0xb6, 0x5a, 0x52, 0x93, 0xca, 0x5d, 0x2a, 0x9c, 0x99, - 0x2b, 0x73, 0xf1, 0x47, 0xae, 0xcc, 0x53, 0xa5, 0x84, 0xc5, 0xeb, 0x4a, 0x09, 0x1f, 0x40, 0x19, - 0x27, 0x5c, 0x7f, 0x82, 0xb0, 0x32, 0xd3, 0x73, 0x53, 0xe9, 0x27, 0xae, 0x58, 0xbe, 0xce, 0x15, - 0xbf, 0x82, 0x26, 0x16, 0x5a, 0x18, 0x1f, 0xc9, 0x21, 0x90, 0x8f, 0x61, 0x69, 0xa4, 0x9f, 0xb1, - 0xea, 0x34, 0x67, 0x94, 0xcd, 0x51, 0x8e, 0xd0, 0x79, 0x0a, 0x8d, 0xd4, 0xc0, 0x80, 0xc6, 0xe4, - 0x4b, 0x68, 0x4d, 0xf1, 0xd3, 0x5d, 0xa5, 0x5f, 0x40, 0xe4, 0xdb, 0x32, 0x97, 0xf2, 0x86, 0x44, - 0xe7, 0xfb, 0x02, 0x54, 0xd4, 0xd7, 0x20, 0xe4, 0xb3, 0x5c, 0x2f, 0x04, 0x8d, 0x53, 0x23, 0x2b, - 0xd3, 0x46, 0x06, 0x34, 0x9e, 0x74, 0x66, 0x40, 0x63, 0xf1, 0x96, 0xf5, 0x8c, 0x36, 0x54, 0x5f, - 0xd3, 0x08, 0xbf, 0x9d, 0x50, 0xbb, 0x22, 0x7d, 0xec, 0x7c, 0x04, 0x75, 0xd9, 0x17, 0xf5, 0x11, - 0xc3, 0x8f, 0x56, 0xe7, 0x3a, 0x7f, 0x51, 0x80, 0xaa, 0xfe, 0x7e, 0x85, 0x3c, 0x02, 0x08, 0xa3, - 0xe0, 0xe5, 0xd4, 0xa0, 0x97, 0x27, 0x14, 0xf5, 0x05, 0x45, 0x5d, 0x42, 0x54, 0xb5, 0xee, 0x09, - 0xdc, 0x1c, 0x51, 0x4e, 0x23, 0x5b, 0x1e, 0x28, 0x3a, 0x05, 0xe5, 0xb6, 0xaf, 0xbf, 0x63, 0xa8, - 0x9b, 0x6b, 0x99, 0x56, 0x25, 0xa2, 0x7d, 0xa9, 0x7b, 0xbb, 0xf8, 0xd2, 0xfd, 0x97, 0xa2, 0xfa, - 0x10, 0x0e, 0xab, 0xc3, 0x2b, 0xb0, 0x24, 0x7f, 0xb3, 0x57, 0x8d, 0xc6, 0x42, 0x2a, 0xca, 0x6a, - 0xbf, 0x46, 0x21, 0x15, 0x65, 0x25, 0x53, 0xa3, 0x48, 0x56, 0x61, 0x59, 0x8a, 0x72, 0xc5, 0x42, - 0x63, 0x91, 0x34, 0xa1, 0x86, 0xd6, 0x82, 0xb0, 0x6f, 0x94, 0xc8, 0x12, 0xd4, 0xe5, 0x13, 0x16, - 0x9a, 0x8c, 0x72, 0x66, 0x04, 0xb3, 0xbc, 0xad, 0xd1, 0xc8, 0xa8, 0xa4, 0xf8, 0x67, 0x01, 0xe3, - 0x46, 0x35, 0x7d, 0x7a, 0xce, 0x3c, 0xcf, 0xa8, 0x91, 0x9b, 0x40, 0xe4, 0xd3, 0xf4, 0xc7, 0x3e, - 0x46, 0x9d, 0xb4, 0x61, 0x2d, 0x2f, 0x4f, 0xbf, 0x0d, 0x31, 0x80, 0x10, 0x68, 0x49, 0xcd, 0xa4, - 0x84, 0x6a, 0x34, 0xc8, 0x3a, 0xdc, 0x44, 0xd9, 0xcc, 0x3b, 0x55, 0xa3, 0x99, 0xb6, 0x27, 0x43, - 0xb3, 0xb1, 0x44, 0x5a, 0x00, 0xf2, 0x49, 0xed, 0x15, 0xa3, 0x95, 0x3e, 0xab, 0x15, 0x34, 0x96, - 0xc9, 0x32, 0x34, 0x26, 0xcf, 0x9b, 0x86, 0xd1, 0xfd, 0x02, 0x9a, 0xf9, 0xcf, 0x43, 0x24, 0xe0, - 0xd8, 0x16, 0xe2, 0xe4, 0x2c, 0x0a, 0x92, 0xd1, 0x99, 0xb1, 0x20, 0xc7, 0xbf, 0x1d, 0x05, 0xb6, - 0xeb, 0xd8, 0x22, 0x36, 0x0a, 0xa4, 0x06, 0xa5, 0xa7, 0xb6, 0x38, 0x33, 0x8a, 0xdd, 0x5f, 0xc2, - 0xf2, 0xa5, 0x2f, 0x71, 0xa4, 0xb2, 0x7f, 0xd4, 0xdf, 0x33, 0x16, 0xe4, 0xbf, 0xfd, 0xad, 0xc1, - 0x89, 0x51, 0x20, 0x6b, 0x60, 0x3c, 0xed, 0x7d, 0xf3, 0xd4, 0xda, 0x39, 0x3a, 0x3c, 0x36, 0xf7, - 0x06, 0x83, 0xde, 0x51, 0xdf, 0x28, 0x76, 0x1f, 0x01, 0x4c, 0x5e, 0xf2, 0x93, 0x3a, 0x94, 0x31, - 0x3b, 0x57, 0xc4, 0x13, 0xf6, 0xfc, 0x85, 0x51, 0x20, 0x0d, 0xa8, 0xea, 0x73, 0xd6, 0x28, 0x76, - 0x1f, 0xc3, 0xb2, 0x3e, 0x92, 0xe5, 0x82, 0x3e, 0x67, 0x5c, 0xc6, 0x7d, 0xd2, 0xeb, 0xbf, 0xd8, - 0x3a, 0xe8, 0xed, 0x5a, 0xbd, 0xfe, 0xee, 0xde, 0x6f, 0xad, 0xe7, 0xbd, 0xfe, 0xae, 0xb2, 0xf0, - 0xb4, 0x3f, 0xf8, 0xd6, 0x28, 0x74, 0x4f, 0x61, 0x6d, 0xde, 0x97, 0x23, 0xe4, 0x0e, 0xdc, 0x4a, - 0x99, 0xbb, 0xbd, 0xc1, 0xc9, 0x56, 0x7f, 0x67, 0xcf, 0x3a, 0xdc, 0x3b, 0x31, 0x7b, 0x3b, 0xc6, - 0x02, 0xa9, 0x40, 0xf1, 0xe0, 0x53, 0xa3, 0x80, 0xbf, 0x9b, 0x46, 0x91, 0x00, 0x54, 0x76, 0x8e, - 0x06, 0xbd, 0xfe, 0x9e, 0xb1, 0x28, 0x17, 0xbf, 0xd7, 0xef, 0xef, 0x99, 0xd6, 0xb1, 0x79, 0xb4, - 0xfb, 0xa7, 0x3b, 0x27, 0x46, 0xa9, 0xfb, 0xe9, 0xe4, 0x1b, 0x18, 0x1c, 0xca, 0x1a, 0x18, 0x3d, - 0xfe, 0xda, 0xf6, 0x98, 0x9b, 0xc9, 0x8c, 0x05, 0x39, 0x96, 0x23, 0x15, 0xdc, 0x8c, 0x42, 0xf7, - 0x1f, 0x0a, 0x50, 0x4b, 0xdf, 0x6e, 0x4e, 0xfc, 0x94, 0xd3, 0x08, 0x3d, 0x68, 0x81, 0xdc, 0x80, - 0x15, 0xf4, 0x38, 0x3a, 0x8c, 0x8f, 0x92, 0x58, 0x8b, 0x0b, 0xa9, 0x2b, 0x99, 0x6c, 0x74, 0x96, - 0x93, 0x17, 0x89, 0x01, 0x4d, 0xe5, 0xd6, 0xea, 0x1d, 0x95, 0xb1, 0x28, 0xfb, 0x80, 0x5e, 0xcd, - 0x63, 0x96, 0x49, 0x4b, 0xe4, 0x36, 0xdc, 0x98, 0x32, 0x9b, 0xa9, 0xca, 0xe4, 0x2e, 0xdc, 0x4e, - 0x09, 0xb3, 0xea, 0x4a, 0x77, 0x03, 0x9a, 0xf9, 0xb7, 0xaa, 0x69, 0x8b, 0xd2, 0x0f, 0x54, 0x97, - 0xbb, 0xbf, 0x80, 0x95, 0x99, 0x37, 0x38, 0x72, 0x06, 0x7b, 0x7d, 0x35, 0xf8, 0xc3, 0x5e, 0xdf, - 0x3a, 0xdc, 0xfa, 0xad, 0x51, 0x90, 0xdc, 0xed, 0x83, 0xa3, 0xa3, 0x43, 0x6b, 0xbf, 0x77, 0x70, - 0xb2, 0x67, 0x1a, 0xc5, 0x6e, 0xf7, 0x12, 0x17, 0x3d, 0x49, 0x7a, 0xc4, 0xd1, 0xce, 0xd6, 0x81, - 0xb1, 0x20, 0x17, 0xe0, 0x9b, 0x83, 0xa3, 0xed, 0xad, 0x03, 0xa3, 0xd0, 0xdd, 0x86, 0x95, 0x99, - 0xba, 0xb5, 0x74, 0xd9, 0xfd, 0x20, 0x72, 0xa8, 0x12, 0x29, 0x0f, 0xd8, 0x4a, 0xe2, 0xc0, 0x28, - 0xc8, 0xcd, 0x84, 0x2a, 0xb5, 0x5d, 0x19, 0x1f, 0x19, 0xc5, 0xee, 0x57, 0xb0, 0x7c, 0x29, 0xe5, - 0x90, 0x3e, 0xbe, 0x1f, 0x78, 0x5e, 0xf0, 0x46, 0x22, 0xd0, 0xe5, 0x8f, 0x23, 0xea, 0x50, 0x57, - 0x3e, 0x16, 0xe4, 0x1e, 0xda, 0xc1, 0xaa, 0xa6, 0xbc, 0x29, 0x1b, 0xc5, 0xee, 0x11, 0x18, 0x97, - 0x8f, 0x79, 0x52, 0x85, 0xc5, 0x1e, 0x8f, 0x8d, 0x05, 0xd9, 0xf1, 0x7d, 0x2f, 0xb0, 0x63, 0xe5, - 0xc0, 0xbb, 0xd4, 0x61, 0xbe, 0xed, 0x19, 0x45, 0xb9, 0x4d, 0x77, 0xed, 0x98, 0xca, 0x24, 0x52, - 0x85, 0x98, 0xdd, 0x44, 0x15, 0x5b, 0x8d, 0x92, 0x74, 0xee, 0x4b, 0x87, 0xbe, 0x1c, 0x82, 0xbc, - 0xfc, 0xa8, 0xe1, 0x63, 0x6b, 0xc2, 0x28, 0xe0, 0x54, 0xc8, 0xb3, 0x40, 0x18, 0xc5, 0xed, 0x3f, - 0xfa, 0xfd, 0x0f, 0xf7, 0x0a, 0xff, 0xfa, 0xc3, 0xbd, 0xc2, 0x7f, 0xfc, 0x70, 0xaf, 0xf0, 0x57, - 0xff, 0x79, 0x6f, 0x01, 0x6e, 0x38, 0x81, 0xff, 0x48, 0x9e, 0x13, 0x8e, 0x1d, 0x3e, 0x8a, 0x99, - 0x7b, 0x8a, 0x91, 0xf3, 0xb8, 0xf0, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xee, 0x08, 0xfe, 0x76, - 0x81, 0x2c, 0x00, 0x00, + 0x76, 0x27, 0x40, 0x80, 0x04, 0x1e, 0x40, 0x70, 0xd8, 0xa4, 0xa4, 0x11, 0x65, 0x49, 0x34, 0x56, + 0xb6, 0x19, 0xc6, 0x96, 0x65, 0x4a, 0xeb, 0x8f, 0xdd, 0xec, 0xda, 0xfc, 0xb4, 0x20, 0x91, 0x20, + 0x77, 0xc0, 0x95, 0xf7, 0x90, 0xca, 0xd4, 0x70, 0xa6, 0x01, 0xb6, 0x38, 0x5f, 0x9a, 0x9e, 0x91, + 0x40, 0x9f, 0xfc, 0x37, 0x64, 0x2b, 0xa9, 0xbd, 0xa5, 0x2a, 0xa7, 0x54, 0x25, 0x95, 0x7f, 0x21, + 0x39, 0xee, 0x31, 0xd7, 0xf8, 0x90, 0x4a, 0x39, 0xa7, 0xfc, 0x0b, 0x39, 0xa5, 0xfa, 0x75, 0xcf, + 0xa0, 0x41, 0x80, 0xb4, 0x5c, 0xc9, 0x61, 0x4f, 0xc0, 0xbc, 0xf7, 0xfb, 0xbd, 0xfe, 0x7a, 0xfd, + 0xfa, 0xf5, 0x9b, 0x81, 0x16, 0x1d, 0x52, 0x37, 0x4b, 0xa3, 0xe4, 0x61, 0x9c, 0x44, 0x69, 0x44, + 0x2a, 0x29, 0x8b, 0x4f, 0x57, 0x0d, 0x3a, 0x8c, 0x13, 0xca, 0x39, 0x8b, 0x42, 0x29, 0x5f, 0x6d, + 0x72, 0xf7, 0x8c, 0x06, 0x8e, 0x7a, 0x5a, 0x19, 0x44, 0x83, 0x08, 0xff, 0x7e, 0x2c, 0xfe, 0x49, + 0x69, 0xfb, 0x0f, 0x35, 0xa8, 0xed, 0x29, 0x73, 0xe4, 0x01, 0x94, 0xd3, 0xd8, 0x2c, 0xad, 0x95, + 0xd6, 0x5b, 0x9b, 0xad, 0x87, 0xc2, 0xea, 0x43, 0xa1, 0x3b, 0xb9, 0x88, 0xe9, 0x76, 0xe5, 0x8f, + 0xff, 0x71, 0x7f, 0xc6, 0x2a, 0xa7, 0x31, 0xd9, 0x80, 0x5a, 0x7a, 0xea, 0xdb, 0xdc, 0x75, 0x42, + 0xb3, 0xbc, 0x56, 0x5a, 0x6f, 0x6c, 0x2e, 0x4a, 0xec, 0x89, 0x73, 0xea, 0xd3, 0x9e, 0xeb, 0x84, + 0xd6, 0x7c, 0x7a, 0xea, 0x8b, 0x3f, 0x02, 0xcb, 0xbc, 0xa1, 0xc4, 0xce, 0xea, 0xd8, 0x4e, 0xe8, + 0xd1, 0xa1, 0xc4, 0x32, 0x0f, 0xff, 0x90, 0x8f, 0xa0, 0xce, 0xa9, 0x4f, 0xdd, 0x94, 0x45, 0xa1, + 0x59, 0xd1, 0xc1, 0xbd, 0x5c, 0x6c, 0x8d, 0x10, 0xe4, 0x31, 0x34, 0x9c, 0xc1, 0x20, 0xa1, 0x03, + 0x07, 0x09, 0x55, 0x24, 0x2c, 0x49, 0xc2, 0xd6, 0x48, 0x61, 0xe9, 0x28, 0x72, 0x0f, 0x2a, 0x69, + 0x14, 0x77, 0xcd, 0x39, 0x44, 0x83, 0xea, 0x77, 0x14, 0x77, 0x2d, 0x94, 0x93, 0x77, 0xa1, 0xea, + 0xb3, 0x80, 0xa5, 0xe6, 0x3c, 0x02, 0x1a, 0x12, 0x70, 0x20, 0x44, 0x96, 0xd4, 0x90, 0x1d, 0x58, + 0xa2, 0x43, 0xf7, 0xcc, 0x09, 0x07, 0xd4, 0x4e, 0xa8, 0x4b, 0xd9, 0x6b, 0x9a, 0x98, 0x35, 0x84, + 0xdf, 0xcc, 0xe7, 0x4c, 0xaa, 0x2d, 0xa5, 0xb5, 0x0c, 0x7a, 0x49, 0x22, 0xfa, 0xf1, 0x32, 0x62, + 0xa1, 0x59, 0xd7, 0xfb, 0xf1, 0x2c, 0x62, 0xa1, 0x85, 0x72, 0x72, 0x1f, 0x1a, 0xf9, 0x22, 0xdb, + 0xcc, 0x33, 0x61, 0xad, 0xb4, 0x5e, 0xb7, 0x20, 0x17, 0x75, 0x3c, 0x61, 0xe0, 0x9c, 0xf9, 0xbe, + 0xd9, 0xd0, 0x0d, 0x3c, 0x67, 0xbe, 0x6f, 0xa1, 0x9c, 0xfc, 0x0a, 0x16, 0x8b, 0x5e, 0x72, 0x1a, + 0x7a, 0x34, 0x31, 0x9b, 0x08, 0x5d, 0x19, 0xef, 0x63, 0x0f, 0x75, 0x56, 0x8b, 0x8e, 0x3d, 0x93, + 0x47, 0x00, 0xc7, 0x49, 0xf4, 0x52, 0x2d, 0xc6, 0x02, 0x32, 0x0d, 0xc9, 0x1c, 0xc9, 0x2d, 0x0d, + 0x43, 0x9e, 0xc1, 0x4a, 0xec, 0x24, 0x29, 0x13, 0x0f, 0x76, 0x2a, 0x3c, 0x41, 0xae, 0x7a, 0x0b, + 0xb9, 0xa6, 0xe2, 0xe6, 0x88, 0x91, 0xab, 0x90, 0x78, 0x42, 0x26, 0x06, 0xc7, 0xa3, 0x24, 0x35, + 0x17, 0xf5, 0xc1, 0xf5, 0xa2, 0x24, 0xb5, 0x50, 0x4e, 0x1e, 0xc0, 0xdc, 0x1b, 0x16, 0x7a, 0xd1, + 0x1b, 0xd3, 0x40, 0x44, 0x53, 0x22, 0xbe, 0x41, 0x99, 0xa5, 0x74, 0xa4, 0x0b, 0xef, 0xf6, 0x59, + 0x48, 0xed, 0x41, 0xe2, 0xb0, 0x90, 0x7a, 0x36, 0x3f, 0xcb, 0xfa, 0x7d, 0xd1, 0xad, 0x34, 0xa1, + 0x4e, 0x60, 0xbb, 0x51, 0x16, 0xa6, 0xe6, 0xd2, 0x5a, 0x69, 0xbd, 0xa2, 0x9c, 0xfb, 0xae, 0x80, + 0x7f, 0x2d, 0xd1, 0x3d, 0x09, 0xee, 0x21, 0x76, 0x47, 0x40, 0xc9, 0x33, 0xb8, 0x3f, 0xd5, 0xde, + 0xa9, 0x93, 0xba, 0x67, 0x36, 0x67, 0xdf, 0x52, 0x93, 0x68, 0xd6, 0xee, 0x4c, 0x5a, 0xdb, 0x16, + 0xc8, 0x1e, 0xfb, 0x96, 0x8a, 0x11, 0xd0, 0x61, 0xec, 0x84, 0x9e, 0xb9, 0xac, 0x8f, 0x60, 0x0f, + 0x65, 0x96, 0xd2, 0x91, 0x0f, 0x60, 0x5e, 0xfe, 0xdb, 0x34, 0x57, 0x10, 0xb6, 0xa0, 0xc3, 0x36, + 0xad, 0x5c, 0x4b, 0x9e, 0x40, 0x93, 0x89, 0x0d, 0x65, 0xfb, 0x51, 0x74, 0x9e, 0xc5, 0xa6, 0xa9, + 0x6f, 0x06, 0xdc, 0x6a, 0x07, 0x51, 0x74, 0xfe, 0xdb, 0xd8, 0x6a, 0xb0, 0xfc, 0x21, 0x8b, 0xc9, + 0x5d, 0x80, 0xd8, 0x49, 0x68, 0x98, 0xda, 0xcc, 0x1b, 0x9a, 0xb7, 0xd7, 0x4a, 0xeb, 0x0b, 0x56, + 0x5d, 0x4a, 0x3a, 0xde, 0xb0, 0xfd, 0x4f, 0xb3, 0xd0, 0x1a, 0x77, 0x13, 0xb2, 0xae, 0x05, 0x08, + 0x32, 0xee, 0x48, 0x13, 0x41, 0x62, 0x89, 0x86, 0x6e, 0xe4, 0x51, 0xcf, 0x4e, 0x1d, 0x7e, 0x6e, + 0x07, 0x34, 0x75, 0xcc, 0xf2, 0xda, 0xec, 0x7a, 0xd3, 0x5a, 0x54, 0x8a, 0x13, 0x87, 0x9f, 0x1f, + 0xd2, 0xd4, 0x21, 0x9f, 0x40, 0x6b, 0xe4, 0x3a, 0xe7, 0xf4, 0x82, 0x9b, 0xb3, 0x6b, 0xb3, 0xa3, + 0x85, 0xdf, 0x1b, 0xc6, 0x89, 0xb5, 0x50, 0x20, 0x9e, 0xd3, 0x0b, 0x4e, 0x1e, 0x40, 0xd5, 0x3d, + 0x63, 0xbe, 0xa7, 0xe2, 0x84, 0x16, 0xac, 0xc4, 0xfe, 0xb0, 0xa4, 0x92, 0xbc, 0x07, 0xd5, 0xf4, + 0x22, 0xa6, 0xdc, 0xac, 0xa2, 0x3d, 0x15, 0x4d, 0xf6, 0x19, 0xf5, 0x3d, 0xd1, 0x5d, 0x4b, 0x6a, + 0xc9, 0x67, 0xb0, 0xe8, 0xf8, 0xbe, 0xdd, 0x17, 0x72, 0x5b, 0x12, 0xe6, 0xa6, 0x13, 0x16, 0x1c, + 0xdf, 0x2f, 0x9e, 0x38, 0xf9, 0x15, 0x34, 0xdc, 0x28, 0xc8, 0xa3, 0x2e, 0xc6, 0x8c, 0xd6, 0xe6, + 0x0d, 0x49, 0xda, 0x19, 0x29, 0x0e, 0x23, 0x2f, 0x9f, 0x1a, 0x1d, 0x4f, 0x0e, 0xe0, 0x66, 0x16, + 0xe7, 0xde, 0x98, 0x52, 0x6d, 0xa2, 0x6a, 0xd8, 0xfc, 0x2d, 0x35, 0x2a, 0x39, 0x5d, 0xdb, 0x17, + 0x29, 0xe5, 0x3d, 0x9f, 0xb9, 0xd4, 0x5a, 0xce, 0x69, 0x3b, 0x29, 0xcd, 0x67, 0xb1, 0xfd, 0x57, + 0xd0, 0xd0, 0x56, 0x9a, 0x3c, 0x82, 0x15, 0xe9, 0x12, 0x67, 0x4e, 0xe8, 0xf9, 0xd4, 0x8e, 0xfa, + 0x7d, 0x4e, 0x53, 0x6e, 0x96, 0xd6, 0x66, 0xd7, 0x17, 0x2c, 0x82, 0xba, 0xa7, 0xa8, 0x3a, 0x92, + 0x1a, 0xe1, 0x0e, 0xe7, 0x94, 0xc6, 0x76, 0x94, 0x88, 0x68, 0x21, 0x22, 0x7b, 0xcd, 0xaa, 0x0b, + 0xc9, 0x91, 0x10, 0xb4, 0x3f, 0x87, 0xa5, 0x89, 0x9e, 0x90, 0x9f, 0xc1, 0x82, 0xbe, 0xcc, 0xd2, + 0x7c, 0xd3, 0x6a, 0x6a, 0x4b, 0xcc, 0xdb, 0xdf, 0x97, 0xc0, 0xb8, 0x1c, 0x13, 0xa7, 0x3b, 0x48, + 0x69, 0xba, 0x83, 0x3c, 0x82, 0x86, 0xbe, 0x38, 0xe5, 0xe9, 0x8b, 0x03, 0xfd, 0xd1, 0xca, 0xb4, + 0xd1, 0x51, 0x67, 0xaf, 0x72, 0x54, 0x74, 0xd1, 0x5d, 0xb8, 0x1f, 0x25, 0x6c, 0xc0, 0x42, 0xc7, + 0xc7, 0xe9, 0x8f, 0x13, 0x2f, 0x72, 0x33, 0x9a, 0x68, 0xfd, 0xa9, 0x60, 0x7f, 0xee, 0xe4, 0xb0, + 0x9d, 0x94, 0x1e, 0x2b, 0x50, 0x31, 0xed, 0xbf, 0x9f, 0x85, 0xe6, 0x56, 0xb7, 0xfb, 0x9b, 0x8c, + 0x26, 0x17, 0x9d, 0xb0, 0x1f, 0x91, 0xcf, 0x00, 0x5e, 0x89, 0x07, 0xec, 0xec, 0xf8, 0x5e, 0xc9, + 0x71, 0xda, 0x5e, 0xa9, 0xbf, 0xca, 0x05, 0xa4, 0x03, 0x8b, 0x1e, 0xe3, 0xa9, 0x13, 0xba, 0x54, + 0xb4, 0x9e, 0x30, 0x17, 0x17, 0xa1, 0xb5, 0xb9, 0x2a, 0xd9, 0x2f, 0xa8, 0x9b, 0x46, 0xc9, 0xae, + 0x82, 0x1c, 0x22, 0x42, 0x59, 0x69, 0x79, 0x63, 0x52, 0x72, 0x1b, 0xaa, 0x69, 0x14, 0xdb, 0xe7, + 0x38, 0x03, 0x0b, 0x0a, 0x24, 0x4e, 0xb8, 0xe7, 0xe4, 0x3d, 0xe1, 0xb3, 0x7e, 0x16, 0x84, 0x76, + 0xe8, 0x04, 0x14, 0xf7, 0x4f, 0x5d, 0x01, 0x40, 0x2a, 0xba, 0x4e, 0x40, 0xc9, 0xbb, 0x50, 0x57, + 0x30, 0xe6, 0xe1, 0xd9, 0x3a, 0xab, 0x40, 0x35, 0x29, 0xc6, 0x23, 0xa8, 0x91, 0xd0, 0xbe, 0xfd, + 0x9a, 0xba, 0x76, 0xff, 0xf1, 0x26, 0x1e, 0xa9, 0x4d, 0xab, 0x9e, 0xd0, 0xfe, 0x0b, 0xea, 0xee, + 0x3f, 0xde, 0x24, 0xf7, 0xa1, 0x26, 0x3d, 0x90, 0x79, 0x78, 0x3e, 0xe6, 0x16, 0xe6, 0x51, 0xda, + 0x11, 0xe1, 0xad, 0x19, 0x38, 0x43, 0x3b, 0xef, 0x3b, 0x9e, 0x72, 0xa5, 0x7c, 0xa3, 0x04, 0xce, + 0x30, 0x1f, 0x2a, 0xd9, 0x80, 0xd6, 0x59, 0xc8, 0xdf, 0xd8, 0xb4, 0x6f, 0x73, 0xea, 0x24, 0xee, + 0x19, 0x86, 0xc3, 0x7c, 0x5c, 0x4d, 0xa1, 0xdb, 0xeb, 0xf7, 0x50, 0xf3, 0xac, 0x52, 0x9b, 0x37, + 0x6a, 0xed, 0xef, 0xaa, 0x50, 0x1f, 0x9d, 0x27, 0xf7, 0xa1, 0x26, 0x4f, 0x24, 0xe6, 0xe1, 0x82, + 0x14, 0x3d, 0x41, 0x69, 0xc7, 0x23, 0x1b, 0x30, 0x2f, 0x87, 0x95, 0x3b, 0x97, 0x91, 0x6f, 0x62, + 0x1c, 0x6b, 0xd8, 0x8f, 0xac, 0x1c, 0x40, 0x4c, 0xa8, 0x78, 0x94, 0xbb, 0x38, 0xb5, 0xb5, 0x7c, + 0x6a, 0x85, 0x84, 0x7c, 0x08, 0x24, 0x4e, 0x58, 0xe0, 0x24, 0x17, 0x76, 0x31, 0x77, 0x1c, 0x7d, + 0x68, 0xd6, 0x32, 0x94, 0x46, 0x59, 0xf4, 0x38, 0xf9, 0x0a, 0x8c, 0x90, 0x0e, 0x53, 0x3b, 0xa1, + 0x8e, 0x67, 0xd3, 0x70, 0xc0, 0x42, 0x8a, 0x13, 0xdd, 0xca, 0x1b, 0xdf, 0x43, 0x99, 0xe6, 0x2b, + 0x2d, 0x81, 0xb7, 0xa8, 0xe3, 0x49, 0x0d, 0xf9, 0x10, 0xe6, 0x12, 0xe1, 0xd1, 0x79, 0xb8, 0x52, + 0x51, 0xf0, 0x39, 0xbd, 0xb0, 0x84, 0x58, 0xb1, 0x14, 0x86, 0x7c, 0x01, 0xb7, 0xf3, 0xde, 0xc5, + 0x09, 0xed, 0xb3, 0xa1, 0xde, 0xc9, 0x79, 0xec, 0xe4, 0x4d, 0x05, 0x38, 0x46, 0xfd, 0xa8, 0xab, + 0xe3, 0x91, 0xa1, 0x76, 0x29, 0x32, 0x90, 0x35, 0x68, 0x32, 0x6e, 0xf7, 0x1d, 0x9e, 0xca, 0x23, + 0xbf, 0x8e, 0x00, 0x60, 0x7c, 0xdf, 0xe1, 0x29, 0x2e, 0xc0, 0x21, 0xdc, 0x8d, 0x33, 0x7e, 0x46, + 0x3d, 0xdb, 0x8b, 0xde, 0x84, 0x76, 0x9f, 0xf9, 0x29, 0x4d, 0x6c, 0x37, 0x0a, 0x3d, 0x0c, 0xe9, + 0xdc, 0x84, 0x89, 0x80, 0xbf, 0x2a, 0x09, 0xbb, 0xd1, 0x9b, 0x70, 0x1f, 0xe1, 0x3b, 0x05, 0x9a, + 0xec, 0xc0, 0x72, 0x92, 0x85, 0x29, 0x0b, 0x68, 0x6e, 0xca, 0x67, 0x3c, 0x35, 0x1b, 0x68, 0x64, + 0x59, 0x1a, 0xb1, 0x24, 0x40, 0x72, 0xad, 0xa5, 0x44, 0x7f, 0x3c, 0x60, 0x3c, 0x25, 0x1f, 0x81, + 0x21, 0xbc, 0xef, 0x8d, 0xc3, 0x52, 0x1b, 0x4d, 0x05, 0x1c, 0x53, 0xa4, 0xaa, 0x9a, 0xb7, 0x85, + 0xc0, 0x19, 0x7e, 0xe3, 0xb0, 0xf4, 0x84, 0x05, 0xf4, 0x90, 0x93, 0x8f, 0xa1, 0xee, 0x84, 0xa1, + 0x8d, 0xdb, 0x55, 0x25, 0x44, 0x97, 0x76, 0x35, 0xba, 0x49, 0xcd, 0x09, 0x43, 0x7c, 0x6a, 0xff, + 0x5d, 0x05, 0xc8, 0x64, 0xbe, 0xf3, 0xa7, 0xe9, 0x8b, 0xd7, 0xfa, 0x46, 0xf5, 0x5a, 0xdf, 0xf8, + 0x19, 0x8c, 0x8e, 0x66, 0x84, 0xcf, 0x21, 0xbc, 0x59, 0x08, 0x05, 0xe8, 0xb2, 0x87, 0xcc, 0xff, + 0x74, 0x0f, 0xa9, 0xfd, 0x7f, 0x78, 0x48, 0xfd, 0xff, 0xec, 0x21, 0xf0, 0x96, 0x1e, 0xd2, 0x78, + 0x0b, 0x0f, 0xf9, 0x9f, 0x2a, 0x54, 0x44, 0xce, 0x4f, 0x3e, 0x81, 0xba, 0xc8, 0xfa, 0xf5, 0x13, + 0xa3, 0x35, 0xba, 0x12, 0x68, 0x11, 0xa0, 0xf6, 0x52, 0x3d, 0x93, 0x5f, 0x43, 0x0b, 0x29, 0xe2, + 0x4a, 0x20, 0x79, 0x65, 0xfd, 0xa4, 0x11, 0xbc, 0x4b, 0x57, 0xb7, 0xe6, 0x4b, 0x4d, 0x26, 0x2e, + 0x66, 0x98, 0x23, 0x25, 0x34, 0x54, 0xd9, 0xd6, 0xe5, 0x1c, 0xaa, 0xd0, 0x8b, 0xb3, 0x80, 0x85, + 0x21, 0x4d, 0x30, 0x4d, 0xac, 0xe8, 0x67, 0x01, 0x8a, 0x3b, 0xde, 0x90, 0x3c, 0x82, 0x96, 0x4f, + 0xfb, 0xa9, 0x8d, 0x7d, 0xc2, 0x14, 0xae, 0x3a, 0xb1, 0x5e, 0x4d, 0x81, 0x10, 0x1d, 0xc3, 0x0c, + 0x6e, 0x13, 0x16, 0x13, 0x36, 0x38, 0xd3, 0x29, 0x73, 0x93, 0x59, 0x1f, 0x42, 0x0a, 0xce, 0x23, + 0x68, 0xc4, 0x49, 0x74, 0x4a, 0x55, 0x1e, 0x30, 0x7f, 0x45, 0x1e, 0x80, 0x18, 0x99, 0x07, 0x3c, + 0x82, 0xc6, 0x69, 0xc6, 0x8a, 0xcc, 0xa1, 0x76, 0x05, 0x03, 0x31, 0x92, 0xf1, 0x18, 0x16, 0x71, + 0x24, 0x9a, 0xeb, 0xd5, 0x27, 0xfa, 0x85, 0x83, 0xd5, 0xdc, 0xed, 0xe7, 0x60, 0xc8, 0xc1, 0x5c, + 0x1b, 0xd2, 0xe4, 0x80, 0xc7, 0x69, 0x51, 0x7a, 0x36, 0xee, 0xe7, 0x8d, 0x49, 0x1a, 0x62, 0x34, + 0xda, 0x53, 0xb8, 0x23, 0x69, 0xf4, 0x95, 0xc6, 0xb4, 0xfb, 0x49, 0x14, 0xd8, 0x2c, 0x34, 0x9b, + 0x13, 0x16, 0x6e, 0x21, 0x7c, 0xef, 0xd5, 0xc8, 0xc6, 0x7e, 0x12, 0x05, 0x9d, 0x90, 0x3c, 0x81, + 0x5b, 0x8c, 0xdb, 0x61, 0xe6, 0xfb, 0xb6, 0xf3, 0xc6, 0x49, 0xc4, 0x55, 0x31, 0x60, 0xb8, 0x22, + 0x18, 0xe2, 0x6a, 0xd6, 0x32, 0xe3, 0xdd, 0xcc, 0xf7, 0xb7, 0x84, 0xb2, 0x47, 0x03, 0x86, 0xee, + 0x7a, 0xc5, 0xe6, 0x6a, 0xfd, 0x94, 0xcd, 0xd5, 0xfe, 0xef, 0x32, 0x2c, 0x8c, 0x81, 0xc8, 0x0a, + 0x94, 0x55, 0x4c, 0xcc, 0x37, 0x58, 0x99, 0x79, 0xe4, 0x09, 0x18, 0x3c, 0xca, 0x12, 0x97, 0xda, + 0x74, 0x18, 0xab, 0x96, 0xca, 0x93, 0x0b, 0x22, 0x31, 0xe2, 0x3f, 0x6e, 0xdd, 0x27, 0x60, 0xa4, + 0x4e, 0x32, 0xa0, 0xa9, 0xc6, 0x9a, 0xbc, 0x54, 0xb4, 0x24, 0xa6, 0x60, 0x6d, 0x02, 0x29, 0xda, + 0x1a, 0x5d, 0xbe, 0xf5, 0x14, 0xc9, 0xc8, 0xdb, 0x29, 0x2e, 0xe2, 0x9b, 0x40, 0x8a, 0x96, 0x46, + 0x9c, 0xaa, 0xce, 0xc9, 0x5b, 0x29, 0x38, 0x9f, 0xc2, 0x7c, 0xd2, 0x97, 0xbb, 0x76, 0x0e, 0x77, + 0xed, 0xad, 0x29, 0x93, 0xa6, 0x6d, 0xdd, 0xb9, 0xa4, 0x8f, 0x9b, 0x56, 0xf2, 0x82, 0xc8, 0xa3, + 0xea, 0xae, 0x31, 0x8d, 0xa7, 0xdd, 0x36, 0xe6, 0x92, 0xbe, 0x78, 0x6a, 0xff, 0x7b, 0x09, 0xea, + 0x45, 0xc1, 0xe5, 0xc7, 0x4f, 0x20, 0x3d, 0x71, 0x2b, 0x4f, 0x4b, 0xdc, 0xb4, 0x23, 0x6a, 0xf6, + 0x6d, 0x8f, 0xa8, 0xca, 0xc4, 0x11, 0x75, 0x13, 0xe6, 0xb2, 0x90, 0xbd, 0xca, 0x64, 0xda, 0x53, + 0xb3, 0xd4, 0xd3, 0x15, 0x47, 0xd7, 0xdc, 0xf4, 0xa3, 0xab, 0xfd, 0xfb, 0x12, 0xd4, 0x8b, 0xfa, + 0x10, 0xd9, 0x00, 0xd0, 0xf6, 0x52, 0x69, 0x62, 0xc5, 0x35, 0x2d, 0x79, 0x02, 0xad, 0x24, 0x0e, + 0xf5, 0xbd, 0x27, 0xfd, 0x4a, 0x5d, 0xb2, 0xad, 0x38, 0x54, 0x31, 0x28, 0x0e, 0xb5, 0xcd, 0x57, + 0xdc, 0x3c, 0x67, 0xaf, 0xb9, 0x79, 0xb6, 0xbf, 0x2b, 0xe9, 0x05, 0x14, 0xb2, 0x06, 0x55, 0xe1, + 0x87, 0xd3, 0x7a, 0x24, 0x15, 0x64, 0x03, 0xea, 0xa2, 0x33, 0x12, 0x35, 0xb5, 0x1f, 0xb5, 0x44, + 0xfe, 0x79, 0xdb, 0x2e, 0xfc, 0x6b, 0x19, 0x1a, 0x5a, 0x1d, 0x8c, 0xbc, 0x07, 0xb5, 0x41, 0x12, + 0x65, 0xb1, 0x7d, 0x7a, 0x31, 0xa5, 0x1b, 0xf3, 0xa8, 0xdb, 0xbe, 0x10, 0x30, 0x67, 0x30, 0xb0, + 0xfb, 0x59, 0xe8, 0x4e, 0xd9, 0x67, 0xf3, 0xce, 0x60, 0xb0, 0x9f, 0x85, 0x2e, 0x59, 0x83, 0x9a, + 0xbc, 0x82, 0x52, 0x6f, 0x2c, 0xfb, 0x28, 0xa4, 0xe4, 0x63, 0x68, 0x8a, 0x11, 0x15, 0x6d, 0x56, + 0xa6, 0x0d, 0x0a, 0x92, 0x38, 0xfc, 0x5a, 0xb5, 0xac, 0x08, 0x45, 0xeb, 0xd5, 0xab, 0x08, 0x5b, + 0xaa, 0x0f, 0xc5, 0x3c, 0xcc, 0x5d, 0x57, 0x04, 0xf8, 0x02, 0x9a, 0x71, 0x42, 0xd1, 0xec, 0xe4, + 0xce, 0x39, 0x61, 0xfb, 0xbe, 0xc3, 0xcf, 0x8e, 0x13, 0xba, 0x35, 0x18, 0x88, 0xbd, 0x22, 0x4e, + 0x8f, 0xfc, 0x7f, 0xfb, 0xef, 0x4b, 0x50, 0x39, 0x89, 0xe2, 0x2e, 0xf9, 0x00, 0x6a, 0x98, 0xfb, + 0x8e, 0xe6, 0x4e, 0x15, 0x6c, 0xb6, 0x2f, 0x3a, 0x29, 0x0d, 0xac, 0x79, 0xd4, 0x6e, 0x5f, 0x90, + 0xd5, 0xbc, 0x7e, 0x58, 0xd6, 0x2a, 0x41, 0xaa, 0x70, 0xf8, 0x56, 0xcb, 0x26, 0x66, 0x61, 0x94, + 0x4f, 0x15, 0xd3, 0x36, 0xde, 0x5c, 0xa3, 0x40, 0x6c, 0x5f, 0xb4, 0xbf, 0x85, 0x2a, 0xd6, 0x27, + 0x47, 0x6d, 0x97, 0xae, 0x69, 0xbb, 0xfc, 0x53, 0xda, 0x9e, 0xfd, 0xb1, 0xb6, 0xbf, 0x82, 0xca, + 0x73, 0xe6, 0xfb, 0xe4, 0x1d, 0x98, 0x73, 0xa3, 0x30, 0xec, 0xec, 0x8e, 0xb5, 0xad, 0x64, 0xa2, + 0x63, 0x32, 0x29, 0x2a, 0x6b, 0x8e, 0x22, 0x45, 0xed, 0x7f, 0x9c, 0x05, 0x33, 0xef, 0x86, 0xfc, + 0x65, 0x51, 0xd8, 0xcb, 0x02, 0xb1, 0xc9, 0xc9, 0x06, 0x2c, 0xe1, 0x29, 0x13, 0x27, 0x91, 0x4b, + 0x39, 0xa7, 0x9e, 0x8d, 0x9b, 0xba, 0xb4, 0x5e, 0xb1, 0x16, 0x85, 0xe2, 0x38, 0x97, 0x77, 0xc5, + 0x06, 0x5a, 0x0a, 0xb3, 0x40, 0x40, 0xbd, 0xcc, 0xa5, 0x9e, 0x9d, 0x44, 0x6f, 0xb8, 0x5c, 0x05, + 0x6b, 0x31, 0xcc, 0x82, 0x63, 0x25, 0xb7, 0xa2, 0x37, 0x9c, 0xbc, 0x07, 0x2d, 0x81, 0x65, 0x29, + 0x4d, 0x1c, 0xb9, 0xf3, 0x67, 0x11, 0xb8, 0x10, 0x66, 0x41, 0xa7, 0x10, 0x5e, 0x2e, 0xc2, 0x56, + 0x26, 0x8a, 0xb0, 0x6b, 0xe2, 0x2e, 0x1d, 0xba, 0x59, 0x92, 0xd0, 0xd0, 0xbd, 0xc0, 0x30, 0x56, + 0xb1, 0x74, 0x11, 0x39, 0x80, 0x95, 0x94, 0xf5, 0x85, 0x8b, 0x61, 0xe2, 0x2b, 0x82, 0x4d, 0x4a, + 0x87, 0xa9, 0xf2, 0x58, 0x73, 0xcc, 0x09, 0x45, 0x70, 0xde, 0x91, 0xfa, 0xa7, 0x33, 0x16, 0x51, + 0x3c, 0x4d, 0x2a, 0xfa, 0x9d, 0x64, 0xc2, 0x06, 0xcf, 0x82, 0x38, 0xcd, 0x4b, 0x4e, 0x4d, 0x6b, + 0x21, 0xc9, 0x76, 0x46, 0x42, 0xf2, 0x6c, 0xd4, 0x28, 0xe6, 0xae, 0x5c, 0x4e, 0xa7, 0x2a, 0x52, + 0x8f, 0x37, 0x2a, 0xf2, 0x57, 0x35, 0xdd, 0x45, 0x93, 0x9a, 0x6c, 0xbb, 0x09, 0xb0, 0x4b, 0x53, + 0x87, 0xf9, 0x22, 0xaa, 0xb7, 0x07, 0xb0, 0xa2, 0x78, 0xc5, 0x5a, 0x61, 0xcd, 0xe3, 0x08, 0x96, + 0x69, 0x2e, 0x50, 0xcd, 0x31, 0x9a, 0x47, 0xbb, 0x7b, 0xe3, 0xce, 0x76, 0x79, 0x95, 0x2d, 0x42, + 0xc7, 0x25, 0x8c, 0xf2, 0xf6, 0x5f, 0xc2, 0xaa, 0x6a, 0xc8, 0xa2, 0x03, 0x16, 0x85, 0xdd, 0x2c, + 0x38, 0xea, 0x77, 0x42, 0x55, 0x0f, 0xb8, 0x0f, 0x0d, 0xa6, 0xfe, 0xe7, 0x87, 0x58, 0xdd, 0x82, + 0x5c, 0xd4, 0xf1, 0xc4, 0x85, 0x35, 0x41, 0x9e, 0x1d, 0x66, 0x81, 0xf2, 0x82, 0x7a, 0x92, 0x5b, + 0x6a, 0xff, 0x0b, 0x01, 0x32, 0x39, 0xe9, 0xe4, 0x09, 0xac, 0x78, 0x41, 0x9f, 0xa9, 0xca, 0x75, + 0x48, 0x3d, 0x3b, 0x76, 0xdc, 0x73, 0xe5, 0x71, 0xdb, 0x65, 0xb3, 0x64, 0x11, 0xa9, 0xef, 0x49, + 0xf5, 0xb1, 0xd0, 0xea, 0xac, 0x73, 0x16, 0xc7, 0x05, 0xab, 0x3c, 0xc1, 0x92, 0x6a, 0xc9, 0xfa, + 0x0c, 0x4c, 0xc5, 0xf2, 0x9c, 0xd4, 0x29, 0x1a, 0x44, 0xaf, 0x95, 0xce, 0x78, 0x43, 0xea, 0x77, + 0x9d, 0xd4, 0x51, 0xed, 0xa1, 0xef, 0x5e, 0x26, 0xaa, 0x36, 0x91, 0x58, 0x99, 0x20, 0x4a, 0x2d, + 0x12, 0x3f, 0x87, 0x5b, 0x69, 0x94, 0x3a, 0xbe, 0xad, 0xe8, 0x09, 0xb7, 0xfd, 0xc8, 0xf1, 0xc4, + 0xa5, 0xa6, 0x5a, 0x74, 0x75, 0x19, 0x21, 0xbb, 0x88, 0xb0, 0xf8, 0x41, 0xe4, 0x78, 0x78, 0xb1, + 0x59, 0x19, 0x67, 0x52, 0x49, 0x9b, 0xc3, 0xe6, 0x96, 0x74, 0x0a, 0x45, 0xc2, 0xcf, 0xf3, 0xa6, + 0x64, 0xee, 0xcd, 0x43, 0x27, 0xe6, 0x67, 0x51, 0x2a, 0x38, 0xf3, 0xc8, 0x91, 0xf6, 0xb6, 0x85, + 0xb6, 0xa7, 0x94, 0x87, 0x78, 0x95, 0xf4, 0x23, 0xd7, 0xf1, 0x6d, 0xb9, 0x52, 0x1c, 0x1d, 0xb6, + 0x62, 0x35, 0x51, 0x28, 0xfd, 0x00, 0xf7, 0x6e, 0x42, 0x83, 0x28, 0xa5, 0x05, 0xaa, 0x2e, 0xf7, + 0xae, 0x94, 0xe6, 0xb0, 0xf7, 0x61, 0x31, 0xe3, 0x34, 0x91, 0x7d, 0x3d, 0xbd, 0x48, 0xa9, 0xbc, + 0xba, 0x55, 0xac, 0x05, 0x21, 0x16, 0xfd, 0xc4, 0x2a, 0x26, 0xf9, 0x04, 0x6e, 0xc8, 0xae, 0xfa, + 0xd4, 0x49, 0xc2, 0x9c, 0x10, 0x70, 0xbc, 0xc0, 0x55, 0x2c, 0x82, 0xca, 0x03, 0xa9, 0x53, 0xa3, + 0xfb, 0x0b, 0xb8, 0xe3, 0x31, 0x2e, 0xce, 0x13, 0xc4, 0xba, 0x8e, 0x7b, 0x46, 0xed, 0x33, 0x96, + 0xaa, 0x66, 0x9a, 0x48, 0xbc, 0x25, 0x21, 0x82, 0xb2, 0x23, 0x00, 0x4f, 0x59, 0x2a, 0x1b, 0xfc, + 0x35, 0xbc, 0x33, 0xc9, 0x0e, 0x18, 0xe7, 0x8a, 0xbe, 0x80, 0x74, 0xf3, 0x12, 0xfd, 0x90, 0x71, + 0x2e, 0xf9, 0x9f, 0x82, 0x79, 0x79, 0x19, 0xdd, 0x33, 0xea, 0x9e, 0x8b, 0x3e, 0xb7, 0xb4, 0xc9, + 0xcd, 0xd7, 0x70, 0x47, 0x28, 0x0f, 0xb9, 0xc8, 0xaa, 0x78, 0xea, 0xe4, 0xab, 0x97, 0xcf, 0xdd, + 0x22, 0x32, 0x0c, 0xd4, 0x88, 0xc6, 0xf2, 0xe9, 0x5b, 0x85, 0x1a, 0xa7, 0x83, 0x80, 0x86, 0x29, + 0xc7, 0x77, 0x2c, 0x15, 0xab, 0x78, 0x96, 0x9b, 0xcb, 0xc9, 0x0b, 0xbe, 0x4b, 0xf9, 0xe6, 0x72, + 0x64, 0xb5, 0x57, 0xa8, 0x3d, 0xea, 0xa7, 0x8e, 0x74, 0x49, 0x22, 0xd5, 0x28, 0x41, 0x37, 0xbc, + 0x0f, 0x0d, 0xa9, 0x96, 0xc3, 0x5d, 0x46, 0xbd, 0x64, 0xc8, 0x01, 0xbe, 0x0f, 0x8b, 0xc1, 0x6b, + 0xd7, 0xb5, 0x59, 0x18, 0x67, 0xa9, 0x34, 0xb2, 0x22, 0x57, 0x4e, 0x88, 0x3b, 0x42, 0x8a, 0x86, + 0xd6, 0xc1, 0xd0, 0x70, 0xd2, 0xda, 0x0d, 0x04, 0xb6, 0x0a, 0xa0, 0xb4, 0x98, 0x23, 0xa3, 0x2c, + 0x2d, 0x4c, 0xde, 0x1c, 0x21, 0x8f, 0x50, 0x8c, 0x36, 0xd7, 0xa0, 0xe9, 0x07, 0xb8, 0xa7, 0x24, + 0xea, 0x96, 0xec, 0x9d, 0x1f, 0x88, 0x8d, 0x84, 0x88, 0x5f, 0xc2, 0xaa, 0xee, 0xda, 0xd8, 0xb8, + 0x2a, 0xe1, 0x07, 0x1c, 0xdf, 0xbb, 0x54, 0xac, 0x5b, 0x23, 0xef, 0xee, 0x8c, 0xf4, 0x87, 0x9a, + 0xb3, 0x49, 0xf2, 0x29, 0x4b, 0x03, 0x27, 0x16, 0xbc, 0xdb, 0x9a, 0xb3, 0x21, 0x6f, 0x1b, 0x55, + 0x87, 0x9c, 0x7c, 0x04, 0xcb, 0x01, 0x0b, 0x6d, 0xb9, 0x2f, 0x46, 0x0d, 0xad, 0xca, 0x75, 0x0b, + 0x58, 0x78, 0x20, 0x34, 0xbd, 0xbc, 0x05, 0x01, 0x77, 0x86, 0x13, 0xf0, 0x3b, 0x0a, 0xee, 0x0c, + 0xc7, 0xe1, 0x1f, 0xc3, 0x8a, 0xb0, 0xae, 0x36, 0xd4, 0x08, 0xff, 0x8e, 0xdc, 0xd9, 0x01, 0x0b, + 0x2d, 0x54, 0x8d, 0x11, 0x9c, 0xe1, 0x24, 0xe1, 0xae, 0x22, 0x38, 0xc3, 0x4b, 0x84, 0x63, 0x58, + 0x56, 0xbe, 0x66, 0x47, 0x7d, 0x3b, 0x0f, 0xd1, 0xe6, 0x3d, 0x3c, 0x19, 0xd6, 0xc6, 0x8e, 0xa2, + 0x29, 0x91, 0xde, 0x5a, 0x52, 0x64, 0x2d, 0xf8, 0x8f, 0x02, 0x20, 0x2e, 0xea, 0x58, 0xe4, 0xbc, + 0xaf, 0x07, 0xc0, 0xc3, 0xd7, 0xae, 0x3b, 0x3d, 0x72, 0x4a, 0xa2, 0x1e, 0x39, 0xd7, 0x26, 0x88, + 0x5a, 0xe4, 0xfc, 0x0a, 0xee, 0x2a, 0xa2, 0x1f, 0xe4, 0x37, 0xde, 0xb1, 0x66, 0xdf, 0x45, 0xf6, + 0x6d, 0x09, 0x3a, 0x08, 0xe4, 0x3d, 0x4c, 0x6f, 0x7a, 0xaa, 0x05, 0xbd, 0xfd, 0xf6, 0x54, 0x0b, + 0x5a, 0x1f, 0xbe, 0x84, 0xbb, 0xd2, 0x75, 0x5e, 0xe3, 0x5b, 0x00, 0x9b, 0x79, 0x43, 0x19, 0xbe, + 0xf1, 0xd6, 0xcf, 0x1f, 0x9b, 0x9e, 0x8c, 0x1b, 0x08, 0x92, 0x6f, 0x0a, 0x3a, 0xde, 0x50, 0x04, + 0x70, 0x71, 0xd5, 0xef, 0x3d, 0x26, 0x3b, 0x70, 0xff, 0x1a, 0x03, 0x1e, 0xe3, 0xe7, 0x26, 0x45, + 0x13, 0xab, 0xd3, 0x4d, 0xec, 0x32, 0x7e, 0x4e, 0xf6, 0x60, 0xed, 0x1a, 0x23, 0x18, 0xcb, 0xcc, + 0x3e, 0x5a, 0xb9, 0x33, 0xdd, 0x0a, 0x06, 0xb3, 0xab, 0x07, 0x93, 0x57, 0xd9, 0x06, 0x57, 0x0d, + 0x46, 0x95, 0xda, 0xa6, 0x0d, 0x46, 0xbe, 0x19, 0x28, 0x4c, 0x9c, 0x4d, 0x1b, 0x8c, 0x7c, 0x47, + 0xa0, 0x8c, 0x1c, 0xc1, 0x7b, 0x57, 0x19, 0x79, 0xcd, 0x38, 0x4b, 0x45, 0xba, 0x19, 0x79, 0x94, + 0x9b, 0x0c, 0x4d, 0xad, 0x4d, 0x33, 0xf5, 0x42, 0x02, 0xbb, 0x02, 0x47, 0x7a, 0xf0, 0xc1, 0x55, + 0x06, 0x3d, 0xc6, 0x5d, 0x27, 0xf1, 0x0a, 0x93, 0x2f, 0xd1, 0x64, 0x7b, 0x9a, 0xc9, 0xdd, 0x1c, + 0x2a, 0x8d, 0xee, 0xc3, 0xbb, 0x13, 0x46, 0x31, 0xfc, 0xbe, 0xa6, 0x6e, 0x31, 0xd8, 0xf3, 0x69, + 0x73, 0x2e, 0xe2, 0xf9, 0x0b, 0xea, 0xaa, 0xd1, 0x1e, 0xc0, 0x83, 0xe9, 0x76, 0xb0, 0x36, 0xc4, + 0x0b, 0x53, 0x3e, 0x9a, 0xba, 0x37, 0x69, 0xea, 0x08, 0x71, 0xd2, 0x5a, 0xfb, 0x1f, 0x4a, 0x45, + 0x06, 0xa5, 0x65, 0x8b, 0xe4, 0x01, 0xb4, 0x02, 0x16, 0x9e, 0xf4, 0x8e, 0x64, 0xe2, 0x59, 0x64, + 0xeb, 0x4d, 0x29, 0x15, 0xd0, 0x2e, 0x27, 0x8f, 0xe1, 0x66, 0xcc, 0x62, 0xea, 0xb3, 0x90, 0xda, + 0xaf, 0x32, 0x9a, 0xd1, 0x02, 0x2d, 0x33, 0xb5, 0xe5, 0x5c, 0xfb, 0x1b, 0xa1, 0x54, 0xa4, 0xcf, + 0xc0, 0x2c, 0x48, 0xa7, 0x09, 0x75, 0xce, 0x69, 0x52, 0xd0, 0x54, 0xc2, 0x94, 0xeb, 0xb7, 0xa5, + 0x5a, 0x12, 0xdb, 0xdf, 0x42, 0xa5, 0x17, 0x25, 0x29, 0x79, 0x1f, 0xe6, 0x4f, 0xf1, 0x0a, 0xc3, + 0xa7, 0x5f, 0xe1, 0x94, 0x92, 0x3c, 0x80, 0x05, 0xc6, 0xb1, 0x70, 0xef, 0xf8, 0x82, 0xa8, 0xde, + 0x84, 0x8e, 0x0b, 0xdf, 0xf2, 0x0e, 0xfe, 0xd7, 0x65, 0x30, 0xe4, 0x57, 0x09, 0xfb, 0x89, 0x13, + 0xd0, 0xed, 0x28, 0x0b, 0xc5, 0x2d, 0xab, 0xa2, 0x15, 0x7a, 0x6f, 0xe8, 0xdf, 0x2e, 0x20, 0x40, + 0x2b, 0xfc, 0x20, 0x90, 0xb4, 0xa1, 0x9e, 0x85, 0xa7, 0x42, 0x45, 0xbd, 0xb1, 0x3b, 0xd4, 0x48, + 0x4c, 0x6e, 0xc2, 0x9c, 0x7c, 0xc3, 0xab, 0x26, 0x43, 0x3d, 0x91, 0x75, 0xa8, 0xbb, 0x8e, 0xef, + 0x8a, 0xfb, 0x32, 0x57, 0x77, 0x49, 0xfd, 0x3e, 0x3f, 0x52, 0x92, 0x3f, 0x87, 0x46, 0x5f, 0x74, + 0xd2, 0xc6, 0xf7, 0x45, 0xea, 0x7b, 0x9a, 0xb1, 0xda, 0x09, 0xaa, 0xf1, 0xd5, 0x12, 0xf9, 0x05, + 0x2c, 0xb8, 0x41, 0x2c, 0x53, 0x50, 0xad, 0x8e, 0xa5, 0x3e, 0x80, 0x41, 0xcc, 0x4e, 0x10, 0x8b, + 0x14, 0x14, 0x0b, 0xac, 0x0d, 0x77, 0xf4, 0xd0, 0xfe, 0xdb, 0x12, 0x34, 0xb4, 0x49, 0xb9, 0x6e, + 0x3e, 0x10, 0x30, 0x31, 0x1f, 0x1f, 0x42, 0x95, 0xa7, 0x8e, 0x5a, 0x99, 0xe2, 0xab, 0x9b, 0xcb, + 0xf3, 0x6c, 0x49, 0x10, 0x59, 0x87, 0x59, 0x1a, 0xe6, 0xeb, 0x74, 0x15, 0x56, 0x40, 0xda, 0xdf, + 0x97, 0x60, 0x4e, 0x6a, 0xc8, 0x07, 0x50, 0xef, 0x67, 0xa1, 0x6b, 0x63, 0xe9, 0x6a, 0xb2, 0x5a, + 0x52, 0x13, 0xca, 0x5d, 0xca, 0xdd, 0x89, 0x2b, 0x73, 0xf9, 0x47, 0xae, 0xcc, 0x63, 0xa5, 0x84, + 0xd9, 0xeb, 0x4a, 0x09, 0x1f, 0x40, 0x15, 0x27, 0x5c, 0x7d, 0xe2, 0xb0, 0x34, 0xd1, 0x73, 0x4b, + 0xea, 0x47, 0xae, 0x58, 0xbd, 0xce, 0x15, 0xbf, 0x84, 0x26, 0x16, 0x5a, 0x58, 0x38, 0x10, 0x43, + 0x20, 0x1f, 0xc3, 0xc2, 0x40, 0x3d, 0x63, 0xd5, 0x69, 0xca, 0x28, 0x9b, 0x03, 0x8d, 0xd0, 0x7e, + 0x0a, 0x8d, 0xdc, 0x40, 0x8f, 0xa6, 0xe4, 0x0b, 0x68, 0x8d, 0xf1, 0xf3, 0x5d, 0xa5, 0x5e, 0x40, + 0xe8, 0x6d, 0x59, 0x0b, 0xba, 0x21, 0xde, 0xfe, 0xae, 0x04, 0x73, 0xf2, 0x13, 0x16, 0xf2, 0xa9, + 0xd6, 0x8b, 0xe2, 0xf3, 0x84, 0x62, 0xb0, 0x5a, 0x7b, 0xa3, 0xce, 0xf4, 0x68, 0xca, 0xdf, 0xb2, + 0x9e, 0x61, 0xc2, 0xfc, 0x6b, 0x9a, 0xe0, 0xb7, 0x19, 0x72, 0x57, 0xe4, 0x8f, 0xed, 0x8f, 0xa0, + 0x2e, 0xfa, 0x22, 0x3f, 0x62, 0xf8, 0xd1, 0xea, 0x5c, 0xfb, 0x6f, 0x4a, 0x30, 0xaf, 0x3e, 0xba, + 0x21, 0x0f, 0x01, 0xe2, 0x24, 0x7a, 0x39, 0x36, 0xe8, 0xc5, 0x11, 0x45, 0x7e, 0xa1, 0x51, 0x17, + 0x10, 0x59, 0xad, 0x7b, 0x02, 0x37, 0x07, 0x34, 0xa4, 0x89, 0x23, 0x0e, 0x14, 0x95, 0x82, 0x86, + 0x4e, 0xa0, 0xbe, 0x63, 0xa8, 0x5b, 0x2b, 0x85, 0x56, 0x26, 0xa2, 0x5d, 0xa1, 0x7b, 0xbb, 0xf8, + 0xb2, 0xf1, 0x7d, 0x59, 0x7e, 0xbd, 0x87, 0xd5, 0xe1, 0x25, 0x58, 0x10, 0xbf, 0xc5, 0xab, 0x46, + 0x63, 0x26, 0x17, 0x15, 0xb5, 0x5f, 0xa3, 0x94, 0x8b, 0x8a, 0x92, 0xa9, 0x51, 0x26, 0xcb, 0xb0, + 0x28, 0x44, 0x5a, 0xb1, 0xd0, 0x98, 0x25, 0x4d, 0xa8, 0xa1, 0xb5, 0x28, 0xee, 0x1a, 0x15, 0xb2, + 0x00, 0x75, 0xf1, 0x84, 0x85, 0x26, 0xa3, 0x5a, 0x18, 0xc1, 0x2c, 0x6f, 0x6b, 0x30, 0x30, 0xe6, + 0x72, 0xfc, 0xb3, 0x88, 0x85, 0xc6, 0x7c, 0xfe, 0xf4, 0x9c, 0xf9, 0xbe, 0x51, 0x23, 0x37, 0x81, + 0x88, 0xa7, 0xf1, 0x8f, 0x89, 0x8c, 0x3a, 0x31, 0x61, 0x45, 0x97, 0xe7, 0xdf, 0x86, 0x18, 0x40, + 0x08, 0xb4, 0x84, 0x66, 0x54, 0x42, 0x35, 0x1a, 0x64, 0x15, 0x6e, 0xa2, 0x6c, 0xe2, 0x9d, 0xaa, + 0xd1, 0xcc, 0xdb, 0x13, 0xa1, 0xd9, 0x58, 0x20, 0x2d, 0x00, 0xf1, 0x24, 0xf7, 0x8a, 0xd1, 0xca, + 0x9f, 0xe5, 0x0a, 0x1a, 0x8b, 0x64, 0x11, 0x1a, 0xa3, 0xe7, 0x4d, 0xc3, 0xc8, 0x67, 0x40, 0xfb, + 0x7e, 0xc6, 0x58, 0xd9, 0xf8, 0x1c, 0x9a, 0xfa, 0x37, 0x23, 0x82, 0x75, 0xec, 0x70, 0x7e, 0x72, + 0x96, 0x44, 0xd9, 0xe0, 0xcc, 0x98, 0x11, 0x93, 0xb2, 0x9d, 0x44, 0x8e, 0xe7, 0x3a, 0x3c, 0x35, + 0x4a, 0xa4, 0x06, 0x95, 0xa7, 0x0e, 0x3f, 0x33, 0xca, 0x1b, 0xbf, 0x84, 0xc5, 0x4b, 0x9f, 0xff, + 0x08, 0x65, 0xf7, 0xa8, 0xbb, 0x67, 0xcc, 0x88, 0x7f, 0xfb, 0x5b, 0xbd, 0x13, 0xa3, 0x44, 0x56, + 0xc0, 0x78, 0xda, 0xf9, 0xfa, 0xa9, 0xbd, 0x73, 0x74, 0x78, 0x6c, 0xed, 0xf5, 0x7a, 0x9d, 0xa3, + 0xae, 0x51, 0xde, 0x78, 0x08, 0x30, 0x7a, 0xf3, 0x4f, 0xea, 0x50, 0xc5, 0x94, 0x5d, 0x12, 0x4f, + 0xd8, 0xf3, 0x17, 0x46, 0x89, 0x34, 0x60, 0x5e, 0x1d, 0xbe, 0x46, 0x79, 0xe3, 0x31, 0x2c, 0xaa, + 0x73, 0x5a, 0xf4, 0xfe, 0x39, 0x0b, 0xc5, 0x61, 0x40, 0x3a, 0xdd, 0x17, 0x5b, 0x07, 0x9d, 0x5d, + 0xbb, 0xd3, 0xdd, 0xdd, 0xfb, 0x9d, 0xfd, 0xbc, 0xd3, 0xdd, 0x95, 0x16, 0x9e, 0x76, 0x7b, 0xdf, + 0x18, 0xa5, 0x8d, 0x53, 0x58, 0x99, 0xf6, 0x39, 0x09, 0xb9, 0x03, 0xb7, 0x72, 0xe6, 0x6e, 0xa7, + 0x77, 0xb2, 0xd5, 0xdd, 0xd9, 0xb3, 0x0f, 0xf7, 0x4e, 0xac, 0xce, 0x8e, 0x31, 0x43, 0xe6, 0xa0, + 0x7c, 0xf0, 0x89, 0x51, 0xc2, 0xdf, 0x4d, 0xa3, 0x4c, 0x00, 0xe6, 0x76, 0x8e, 0x7a, 0x9d, 0xee, + 0x9e, 0x31, 0x2b, 0x3c, 0xa2, 0xd3, 0xed, 0xee, 0x59, 0xf6, 0xb1, 0x75, 0xb4, 0xfb, 0xdb, 0x9d, + 0x13, 0xa3, 0xb2, 0xf1, 0xc9, 0xe8, 0xc3, 0x18, 0x1c, 0xca, 0x0a, 0x18, 0x9d, 0xf0, 0xb5, 0xe3, + 0x33, 0xaf, 0x90, 0x19, 0x33, 0x62, 0x2c, 0x47, 0x32, 0xe2, 0x19, 0xa5, 0x8d, 0x7f, 0x2e, 0x41, + 0x2d, 0x7f, 0xe5, 0x39, 0x72, 0xde, 0x90, 0x26, 0xe8, 0x56, 0x33, 0xe4, 0x06, 0x2c, 0xa1, 0x1b, + 0xd2, 0x7e, 0x7a, 0x94, 0xa5, 0x4a, 0x5c, 0xca, 0xfd, 0xcb, 0x62, 0x83, 0x33, 0x4d, 0x5e, 0x26, + 0x06, 0x34, 0xa5, 0xaf, 0xcb, 0x17, 0x57, 0xc6, 0xac, 0xe8, 0x03, 0xba, 0x7a, 0x98, 0xb2, 0x42, + 0x5a, 0x21, 0xb7, 0xe1, 0xc6, 0x98, 0xd9, 0x42, 0x55, 0x25, 0x77, 0xe1, 0x76, 0x4e, 0x98, 0x54, + 0xcf, 0x6d, 0xac, 0x41, 0x53, 0x7f, 0xd5, 0x9a, 0xb7, 0x28, 0xfc, 0x40, 0x76, 0x79, 0xe3, 0x17, + 0xb0, 0x34, 0xf1, 0x5a, 0x47, 0xcc, 0x60, 0xa7, 0x2b, 0x07, 0x7f, 0xd8, 0xe9, 0xda, 0x87, 0x5b, + 0xbf, 0x33, 0x4a, 0x82, 0xbb, 0x7d, 0x70, 0x74, 0x74, 0x68, 0xef, 0x77, 0x0e, 0x4e, 0xf6, 0x2c, + 0xa3, 0xbc, 0xb1, 0x71, 0x89, 0x8b, 0x9e, 0x24, 0x3c, 0xe2, 0x68, 0x67, 0xeb, 0xc0, 0x98, 0x11, + 0x0b, 0xf0, 0xf5, 0xc1, 0xd1, 0xf6, 0xd6, 0x81, 0x51, 0xda, 0xd8, 0x86, 0xa5, 0x89, 0x62, 0xb6, + 0x70, 0xd9, 0xfd, 0x28, 0x71, 0xa9, 0x14, 0x49, 0x0f, 0xd8, 0xca, 0xd2, 0xc8, 0x28, 0x89, 0x1d, + 0x86, 0x2a, 0xb9, 0x87, 0x59, 0x38, 0x30, 0xca, 0x1b, 0x5f, 0xc2, 0xe2, 0xa5, 0x3c, 0x44, 0xf8, + 0xf8, 0x7e, 0xe4, 0xfb, 0xd1, 0x1b, 0x81, 0x40, 0x97, 0x3f, 0x4e, 0xa8, 0x4b, 0x3d, 0xf1, 0x58, + 0x12, 0x1b, 0x6b, 0x07, 0x4b, 0x9d, 0xe2, 0xfa, 0x6c, 0x94, 0x37, 0x8e, 0xc0, 0xb8, 0x7c, 0xf6, + 0x93, 0x79, 0x98, 0xed, 0x84, 0xa9, 0x31, 0x23, 0x3a, 0xbe, 0xef, 0x47, 0x4e, 0x2a, 0x1d, 0x78, + 0x97, 0xba, 0x2c, 0x70, 0x7c, 0xa3, 0x2c, 0xf6, 0xee, 0xae, 0x93, 0x52, 0x91, 0x59, 0xca, 0xb8, + 0xb3, 0x9b, 0xc9, 0x0a, 0xac, 0x51, 0x11, 0xce, 0x7d, 0x29, 0x13, 0x10, 0x43, 0x10, 0x37, 0x22, + 0x39, 0x7c, 0x6c, 0x8d, 0x1b, 0x25, 0x9c, 0x0a, 0x71, 0x40, 0x70, 0xa3, 0xbc, 0xfd, 0x67, 0x7f, + 0xfc, 0xe1, 0x5e, 0xe9, 0xdf, 0x7e, 0xb8, 0x57, 0xfa, 0xcf, 0x1f, 0xee, 0x95, 0xfe, 0xf0, 0x5f, + 0xf7, 0x66, 0xe0, 0x86, 0x1b, 0x05, 0x0f, 0xc5, 0xe1, 0xe1, 0x3a, 0xf1, 0xc3, 0x94, 0x79, 0xa7, + 0x18, 0x4e, 0x8f, 0x4b, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xf9, 0x7c, 0xee, 0x4b, 0x2d, + 0x00, 0x00, } diff --git a/go-tipb/select.pb.go b/go-tipb/select.pb.go index 006fad9f..0dece912 100644 --- a/go-tipb/select.pb.go +++ b/go-tipb/select.pb.go @@ -13,6 +13,8 @@ import ( github_com_pingcap_tipb_sharedbytes "github.com/pingcap/tipb/sharedbytes" io "io" + + github_com_golang_protobuf_proto "github.com/golang/protobuf/proto" ) // Reference imports to suppress errors if they are not otherwise used. @@ -143,6 +145,32 @@ func (m *Error) GetMsg() string { return "" } +// It is the data of a intermidiate output channel +type IntermediateOutput struct { + EncodeType EncodeType `protobuf:"varint,1,opt,name=encode_type,json=encodeType,enum=tipb.EncodeType" json:"encode_type"` + Chunks []Chunk `protobuf:"bytes,2,rep,name=chunks" json:"chunks"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *IntermediateOutput) Reset() { *m = IntermediateOutput{} } +func (m *IntermediateOutput) String() string { return proto.CompactTextString(m) } +func (*IntermediateOutput) ProtoMessage() {} +func (*IntermediateOutput) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{2} } + +func (m *IntermediateOutput) GetEncodeType() EncodeType { + if m != nil { + return m.EncodeType + } + return EncodeType_TypeDefault +} + +func (m *IntermediateOutput) GetChunks() []Chunk { + if m != nil { + return m.Chunks + } + return nil +} + // Response for SelectRequest. type SelectResponse struct { Error *Error `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` @@ -160,14 +188,16 @@ type SelectResponse struct { EncodeType EncodeType `protobuf:"varint,9,opt,name=encode_type,json=encodeType,enum=tipb.EncodeType" json:"encode_type"` // ndvs collects the number of distinct value information per range. It will be used to serve as execution feedback information. // Helping us improve the table's statistics information. - Ndvs []int64 `protobuf:"varint,10,rep,name=ndvs" json:"ndvs,omitempty"` - XXX_unrecognized []byte `json:"-"` + Ndvs []int64 `protobuf:"varint,10,rep,name=ndvs" json:"ndvs,omitempty"` + // It contains all the intermedidate outputs. + IntermediateOutputs []*IntermediateOutput `protobuf:"bytes,11,rep,name=intermediate_outputs,json=intermediateOutputs" json:"intermediate_outputs,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *SelectResponse) Reset() { *m = SelectResponse{} } func (m *SelectResponse) String() string { return proto.CompactTextString(m) } func (*SelectResponse) ProtoMessage() {} -func (*SelectResponse) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{2} } +func (*SelectResponse) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{3} } func (m *SelectResponse) GetError() *Error { if m != nil { @@ -232,6 +262,13 @@ func (m *SelectResponse) GetNdvs() []int64 { return nil } +func (m *SelectResponse) GetIntermediateOutputs() []*IntermediateOutput { + if m != nil { + return m.IntermediateOutputs + } + return nil +} + // Chunk contains multiple rows data and rows meta. type Chunk struct { // Data for all rows in the chunk. @@ -244,7 +281,7 @@ type Chunk struct { func (m *Chunk) Reset() { *m = Chunk{} } func (m *Chunk) String() string { return proto.CompactTextString(m) } func (*Chunk) ProtoMessage() {} -func (*Chunk) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{3} } +func (*Chunk) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{4} } func (m *Chunk) GetRowsMeta() []RowMeta { if m != nil { @@ -253,6 +290,38 @@ func (m *Chunk) GetRowsMeta() []RowMeta { return nil } +// IntermediateOutputChannel is the channel description for the intermediate ouput. +// The SelectResponse of a DAGRequest may output some intermediate data because not all rows can be processed in DAG. +// For example, the executor IndexLookUp scans the index records and look up the rows locally. +// If a related row of a index is not found locally, this index record should be ouput into the intermediate channel +// for the further processment in the TiDB side. +type IntermediateOutputChannel struct { + // executor_idx indicates which executor outputs this intermediate result. + ExecutorIdx uint32 `protobuf:"varint,1,req,name=executor_idx,json=executorIdx" json:"executor_idx"` + // It represents which columns we should output. + OutputOffsets []uint32 `protobuf:"varint,2,rep,name=output_offsets,json=outputOffsets" json:"output_offsets,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *IntermediateOutputChannel) Reset() { *m = IntermediateOutputChannel{} } +func (m *IntermediateOutputChannel) String() string { return proto.CompactTextString(m) } +func (*IntermediateOutputChannel) ProtoMessage() {} +func (*IntermediateOutputChannel) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{5} } + +func (m *IntermediateOutputChannel) GetExecutorIdx() uint32 { + if m != nil { + return m.ExecutorIdx + } + return 0 +} + +func (m *IntermediateOutputChannel) GetOutputOffsets() []uint32 { + if m != nil { + return m.OutputOffsets + } + return nil +} + // RowMeta contains row handle and length of a row. type RowMeta struct { Handle int64 `protobuf:"varint,1,opt,name=handle" json:"handle"` @@ -263,7 +332,7 @@ type RowMeta struct { func (m *RowMeta) Reset() { *m = RowMeta{} } func (m *RowMeta) String() string { return proto.CompactTextString(m) } func (*RowMeta) ProtoMessage() {} -func (*RowMeta) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{4} } +func (*RowMeta) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{6} } func (m *RowMeta) GetHandle() int64 { if m != nil { @@ -284,7 +353,23 @@ type DAGRequest struct { // Transaction start timestamp. // Deprecated. Start Ts has been moved to coprocessor.Request. StartTsFallback *uint64 `protobuf:"varint,1,opt,name=start_ts_fallback,json=startTsFallback" json:"start_ts_fallback,omitempty"` - // It represents push down Executors. + // It represents push down Executors and follows the order of depth-first search with post-order traversal. + // That is: left child first, then right child, then parent. + // For example, a DAG: + // A + // / + // B + // / \ + // C D + // / / \ + // E F G + // / + // H + // Its order should be: [H, E, C, F, G, D, B, A] + // In most cases, there is only one child for each parent, that makes executors simple array from the srouce + // to the out most executors, and the response only need to output the final rows. + // But when a executor has more than one children, for example, IndexLookUp, some intermedidate result is required to output. + // The field `intermediate_output_channels` describes it. Executors []*Executor `protobuf:"bytes,2,rep,name=executors" json:"executors,omitempty"` // time zone offset in seconds TimeZoneOffset int64 `protobuf:"varint,3,opt,name=time_zone_offset,json=timeZoneOffset" json:"time_zone_offset"` @@ -327,13 +412,15 @@ type DAGRequest struct { ForceEncodeType *bool `protobuf:"varint,18,opt,name=force_encode_type,json=forceEncodeType" json:"force_encode_type,omitempty"` // It indicates the number of digits by which to increase the scale of the result of division operations performed with the / operator. DivPrecisionIncrement *uint32 `protobuf:"varint,19,opt,name=div_precision_increment,json=divPrecisionIncrement" json:"div_precision_increment,omitempty"` - XXX_unrecognized []byte `json:"-"` + // It inidcates the intermdidate result channels. + IntermediateOutputChannels []*IntermediateOutputChannel `protobuf:"bytes,20,rep,name=intermediate_output_channels,json=intermediateOutputChannels" json:"intermediate_output_channels,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *DAGRequest) Reset() { *m = DAGRequest{} } func (m *DAGRequest) String() string { return proto.CompactTextString(m) } func (*DAGRequest) ProtoMessage() {} -func (*DAGRequest) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{5} } +func (*DAGRequest) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{7} } func (m *DAGRequest) GetStartTsFallback() uint64 { if m != nil && m.StartTsFallback != nil { @@ -461,6 +548,13 @@ func (m *DAGRequest) GetDivPrecisionIncrement() uint32 { return 0 } +func (m *DAGRequest) GetIntermediateOutputChannels() []*IntermediateOutputChannel { + if m != nil { + return m.IntermediateOutputChannels + } + return nil +} + type ChunkMemoryLayout struct { // Represents the endian. Endian Endian `protobuf:"varint,1,opt,name=endian,enum=tipb.Endian" json:"endian"` @@ -470,7 +564,7 @@ type ChunkMemoryLayout struct { func (m *ChunkMemoryLayout) Reset() { *m = ChunkMemoryLayout{} } func (m *ChunkMemoryLayout) String() string { return proto.CompactTextString(m) } func (*ChunkMemoryLayout) ProtoMessage() {} -func (*ChunkMemoryLayout) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{6} } +func (*ChunkMemoryLayout) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{8} } func (m *ChunkMemoryLayout) GetEndian() Endian { if m != nil { @@ -488,7 +582,7 @@ type UserIdentity struct { func (m *UserIdentity) Reset() { *m = UserIdentity{} } func (m *UserIdentity) String() string { return proto.CompactTextString(m) } func (*UserIdentity) ProtoMessage() {} -func (*UserIdentity) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{7} } +func (*UserIdentity) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{9} } func (m *UserIdentity) GetUserName() string { if m != nil { @@ -519,7 +613,7 @@ type StreamResponse struct { func (m *StreamResponse) Reset() { *m = StreamResponse{} } func (m *StreamResponse) String() string { return proto.CompactTextString(m) } func (*StreamResponse) ProtoMessage() {} -func (*StreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{8} } +func (*StreamResponse) Descriptor() ([]byte, []int) { return fileDescriptorSelect, []int{10} } func (m *StreamResponse) GetError() *Error { if m != nil { @@ -559,8 +653,10 @@ func (m *StreamResponse) GetNdvs() []int64 { func init() { proto.RegisterType((*Row)(nil), "tipb.Row") proto.RegisterType((*Error)(nil), "tipb.Error") + proto.RegisterType((*IntermediateOutput)(nil), "tipb.IntermediateOutput") proto.RegisterType((*SelectResponse)(nil), "tipb.SelectResponse") proto.RegisterType((*Chunk)(nil), "tipb.Chunk") + proto.RegisterType((*IntermediateOutputChannel)(nil), "tipb.IntermediateOutputChannel") proto.RegisterType((*RowMeta)(nil), "tipb.RowMeta") proto.RegisterType((*DAGRequest)(nil), "tipb.DAGRequest") proto.RegisterType((*ChunkMemoryLayout)(nil), "tipb.ChunkMemoryLayout") @@ -630,6 +726,42 @@ func (m *Error) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *IntermediateOutput) 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 *IntermediateOutput) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintSelect(dAtA, i, uint64(m.EncodeType)) + if len(m.Chunks) > 0 { + for _, msg := range m.Chunks { + dAtA[i] = 0x12 + i++ + i = encodeVarintSelect(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *SelectResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -725,6 +857,18 @@ func (m *SelectResponse) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintSelect(dAtA, i, uint64(num)) } } + if len(m.IntermediateOutputs) > 0 { + for _, msg := range m.IntermediateOutputs { + dAtA[i] = 0x5a + i++ + i = encodeVarintSelect(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -772,6 +916,37 @@ func (m *Chunk) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *IntermediateOutputChannel) 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 *IntermediateOutputChannel) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintSelect(dAtA, i, uint64(m.ExecutorIdx)) + if len(m.OutputOffsets) > 0 { + for _, num := range m.OutputOffsets { + dAtA[i] = 0x10 + i++ + i = encodeVarintSelect(dAtA, i, uint64(num)) + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func (m *RowMeta) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -949,6 +1124,20 @@ func (m *DAGRequest) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintSelect(dAtA, i, uint64(*m.DivPrecisionIncrement)) } + if len(m.IntermediateOutputChannels) > 0 { + for _, msg := range m.IntermediateOutputChannels { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintSelect(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -1116,6 +1305,22 @@ func (m *Error) Size() (n int) { return n } +func (m *IntermediateOutput) Size() (n int) { + var l int + _ = l + n += 1 + sovSelect(uint64(m.EncodeType)) + if len(m.Chunks) > 0 { + for _, e := range m.Chunks { + l = e.Size() + n += 1 + l + sovSelect(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *SelectResponse) Size() (n int) { var l int _ = l @@ -1161,6 +1366,12 @@ func (m *SelectResponse) Size() (n int) { n += 1 + sovSelect(uint64(e)) } } + if len(m.IntermediateOutputs) > 0 { + for _, e := range m.IntermediateOutputs { + l = e.Size() + n += 1 + l + sovSelect(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -1184,6 +1395,21 @@ func (m *Chunk) Size() (n int) { return n } +func (m *IntermediateOutputChannel) Size() (n int) { + var l int + _ = l + n += 1 + sovSelect(uint64(m.ExecutorIdx)) + if len(m.OutputOffsets) > 0 { + for _, e := range m.OutputOffsets { + n += 1 + sovSelect(uint64(e)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *RowMeta) Size() (n int) { var l int _ = l @@ -1253,6 +1479,12 @@ func (m *DAGRequest) Size() (n int) { if m.DivPrecisionIncrement != nil { n += 2 + sovSelect(uint64(*m.DivPrecisionIncrement)) } + if len(m.IntermediateOutputChannels) > 0 { + for _, e := range m.IntermediateOutputChannels { + l = e.Size() + n += 2 + l + sovSelect(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -1541,6 +1773,107 @@ func (m *Error) Unmarshal(dAtA []byte) error { } return nil } +func (m *IntermediateOutput) 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 ErrIntOverflowSelect + } + 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: IntermediateOutput: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IntermediateOutput: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EncodeType", wireType) + } + m.EncodeType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EncodeType |= (EncodeType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Chunks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSelect + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Chunks = append(m.Chunks, Chunk{}) + if err := m.Chunks[len(m.Chunks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSelect(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSelect + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SelectResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1890,6 +2223,37 @@ func (m *SelectResponse) Unmarshal(dAtA []byte) error { } else { return fmt.Errorf("proto: wrong wireType = %d for field Ndvs", wireType) } + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntermediateOutputs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSelect + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IntermediateOutputs = append(m.IntermediateOutputs, &IntermediateOutput{}) + if err := m.IntermediateOutputs[len(m.IntermediateOutputs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSelect(dAtA[iNdEx:]) @@ -2024,6 +2388,143 @@ func (m *Chunk) Unmarshal(dAtA []byte) error { } return nil } +func (m *IntermediateOutputChannel) Unmarshal(dAtA []byte) error { + var hasFields [1]uint64 + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + 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: IntermediateOutputChannel: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IntermediateOutputChannel: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExecutorIdx", wireType) + } + m.ExecutorIdx = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExecutorIdx |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + hasFields[0] |= uint64(0x00000001) + case 2: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.OutputOffsets = append(m.OutputOffsets, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthSelect + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.OutputOffsets = append(m.OutputOffsets, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field OutputOffsets", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipSelect(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSelect + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + if hasFields[0]&uint64(0x00000001) == 0 { + return new(github_com_golang_protobuf_proto.RequiredNotSetError) + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RowMeta) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2604,6 +3105,37 @@ func (m *DAGRequest) Unmarshal(dAtA []byte) error { } } m.DivPrecisionIncrement = &v + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntermediateOutputChannels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSelect + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSelect + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IntermediateOutputChannels = append(m.IntermediateOutputChannels, &IntermediateOutputChannel{}) + if err := m.IntermediateOutputChannels[len(m.IntermediateOutputChannels)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSelect(dAtA[iNdEx:]) @@ -3202,72 +3734,78 @@ var ( func init() { proto.RegisterFile("select.proto", fileDescriptorSelect) } var fileDescriptorSelect = []byte{ - // 1057 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xc6, 0x3f, 0x62, 0x3f, 0xff, 0x88, 0x33, 0xe9, 0x8f, 0x6d, 0x28, 0xae, 0x6b, 0x04, - 0x38, 0x56, 0xe5, 0x94, 0x20, 0x51, 0x71, 0x00, 0x54, 0x27, 0xa1, 0xad, 0x68, 0x68, 0xb4, 0x09, - 0x42, 0xe2, 0xb2, 0x9a, 0xac, 0xc7, 0xf6, 0x2a, 0xbb, 0x3b, 0x9b, 0x99, 0xd9, 0xc4, 0xe6, 0x1f, - 0xe0, 0x06, 0x57, 0xfe, 0xa4, 0xde, 0xe0, 0xcc, 0xa1, 0x42, 0xe1, 0x1f, 0x41, 0xf3, 0x66, 0x36, - 0x71, 0x52, 0x0e, 0x20, 0x0e, 0x3d, 0xed, 0xcc, 0xf7, 0x7d, 0xf3, 0x66, 0xe6, 0xbd, 0x6f, 0xde, - 0x42, 0x5d, 0xb2, 0x88, 0x05, 0x6a, 0x90, 0x0a, 0xae, 0x38, 0x29, 0xaa, 0x30, 0x3d, 0xde, 0x68, - 0xb2, 0x19, 0x0b, 0x32, 0xc5, 0x85, 0x41, 0x37, 0x6e, 0x4d, 0xf8, 0x84, 0xe3, 0x70, 0x4b, 0x8f, - 0x0c, 0xda, 0xfd, 0x04, 0x0a, 0x1e, 0x3f, 0x27, 0x77, 0xa0, 0x3c, 0xa5, 0xc9, 0x28, 0x62, 0xae, - 0xd3, 0x71, 0x7a, 0x75, 0xcf, 0xce, 0x08, 0x81, 0xe2, 0x88, 0x2a, 0xea, 0x2e, 0x23, 0x8a, 0xe3, - 0xee, 0xe7, 0x50, 0xda, 0x13, 0x82, 0x0b, 0xe2, 0x42, 0x31, 0xe0, 0x23, 0xb3, 0xa4, 0x34, 0x2c, - 0xbe, 0x7e, 0xf3, 0x60, 0xc9, 0x43, 0x84, 0xdc, 0x81, 0x42, 0x2c, 0x27, 0xb8, 0xaa, 0x6a, 0x09, - 0x0d, 0x74, 0x7f, 0x2e, 0x40, 0xf3, 0x10, 0x8f, 0xea, 0x31, 0x99, 0xf2, 0x44, 0x32, 0xf2, 0x10, - 0x4a, 0x4c, 0x47, 0xc3, 0x28, 0xb5, 0xed, 0xda, 0x40, 0x1f, 0x7e, 0x80, 0x1b, 0x78, 0x86, 0x21, - 0xef, 0x43, 0x51, 0xf0, 0x73, 0xe9, 0x2e, 0x77, 0x0a, 0xbd, 0xda, 0x76, 0xd5, 0x28, 0x3c, 0x7e, - 0xee, 0x21, 0x4c, 0x36, 0xa1, 0x1c, 0x4c, 0xb3, 0xe4, 0x44, 0xba, 0x05, 0x14, 0xd8, 0x10, 0x3b, - 0x1a, 0xb3, 0x9b, 0x5b, 0x01, 0xf9, 0x18, 0x2a, 0xe7, 0x54, 0x24, 0x61, 0x32, 0x91, 0x6e, 0x71, - 0x51, 0x6c, 0xf6, 0xbb, 0x24, 0xc9, 0x07, 0xd0, 0xe0, 0x99, 0x4a, 0x33, 0xe5, 0x07, 0x3c, 0x4b, - 0x94, 0x74, 0x4b, 0x9d, 0x42, 0xaf, 0xe0, 0xd5, 0x0d, 0xb8, 0x83, 0x98, 0x16, 0xd9, 0x05, 0x46, - 0xe5, 0x96, 0x3b, 0x8e, 0x16, 0x59, 0x10, 0x55, 0xe4, 0x15, 0xac, 0x9b, 0x42, 0x84, 0x3c, 0xf1, - 0x65, 0x16, 0xc7, 0x54, 0x84, 0x4c, 0xba, 0x15, 0xdc, 0xbd, 0x6d, 0x77, 0xb7, 0x95, 0xda, 0xcb, - 0x85, 0x87, 0xa8, 0x9b, 0x7b, 0x84, 0x5d, 0x47, 0x42, 0x26, 0xc9, 0x13, 0xa8, 0xb1, 0x44, 0x67, - 0xd9, 0x57, 0xf3, 0x94, 0xb9, 0xd5, 0x8e, 0xd3, 0x6b, 0x6e, 0xb7, 0x6c, 0x20, 0x24, 0x8e, 0xe6, - 0x29, 0xb3, 0x17, 0x07, 0x76, 0x89, 0xe8, 0x5a, 0x26, 0xa3, 0x33, 0xe9, 0x02, 0x5e, 0x05, 0xc7, - 0xdd, 0x5f, 0x1c, 0x28, 0x61, 0xa2, 0xc8, 0x11, 0x54, 0x75, 0x36, 0x7d, 0x2c, 0x77, 0x41, 0x97, - 0x7b, 0xf8, 0x44, 0x87, 0xf8, 0xe3, 0xcd, 0x83, 0xad, 0x49, 0xa8, 0xa6, 0xd9, 0xf1, 0x20, 0xe0, - 0xf1, 0x56, 0x1a, 0x26, 0x93, 0x80, 0xa6, 0x5b, 0x7a, 0xbb, 0x2d, 0x39, 0xa5, 0x82, 0x8d, 0x8e, - 0xe7, 0x8a, 0xc9, 0xc1, 0x21, 0x8e, 0x87, 0x7a, 0xec, 0x55, 0x74, 0xa4, 0x5d, 0xaa, 0x28, 0x79, - 0x6c, 0xa3, 0xc6, 0x4c, 0x51, 0x9b, 0xf1, 0xc6, 0x65, 0xfd, 0xf6, 0x99, 0xa2, 0xf6, 0x9c, 0xb8, - 0x42, 0xcf, 0xbb, 0x7b, 0xb0, 0x62, 0x29, 0x72, 0xff, 0x9a, 0x29, 0x0b, 0x79, 0x2d, 0xad, 0x35, - 0xef, 0x43, 0x39, 0x62, 0xc9, 0x44, 0x4d, 0xd1, 0x66, 0x97, 0xac, 0xc1, 0xba, 0xbf, 0x95, 0x01, - 0x76, 0x9f, 0x3e, 0xf3, 0xd8, 0x69, 0xc6, 0xa4, 0x22, 0x7d, 0x58, 0x93, 0x8a, 0x0a, 0xe5, 0x2b, - 0xe9, 0x8f, 0x69, 0x14, 0x1d, 0xd3, 0xe0, 0x04, 0xa3, 0x16, 0xbd, 0x55, 0x24, 0x8e, 0xe4, 0xd7, - 0x16, 0x26, 0x8f, 0xa0, 0x9a, 0x3f, 0x9d, 0xdc, 0x73, 0xcd, 0xeb, 0x75, 0xf2, 0xae, 0x04, 0x64, - 0x00, 0x2d, 0x15, 0xc6, 0xcc, 0xff, 0x91, 0x27, 0xcc, 0xe7, 0xe3, 0xb1, 0x64, 0x0a, 0xd3, 0x97, - 0x1f, 0xa8, 0xa9, 0xd9, 0x1f, 0x78, 0xc2, 0x5e, 0x21, 0x47, 0x36, 0xa0, 0x34, 0x8e, 0x28, 0xfa, - 0xcf, 0xe9, 0x15, 0xad, 0xc8, 0x40, 0xe4, 0x43, 0x68, 0x5a, 0xd7, 0x99, 0x40, 0xc6, 0x76, 0x0d, - 0xcf, 0x7a, 0xd1, 0x44, 0x90, 0xe4, 0x31, 0xdc, 0x0a, 0x78, 0xa4, 0x5f, 0x91, 0x2f, 0x68, 0x32, - 0x61, 0xb9, 0x47, 0xb5, 0xfd, 0x2a, 0x1e, 0xb1, 0x9c, 0xa7, 0x29, 0xeb, 0xd4, 0x3e, 0xac, 0xc5, - 0x74, 0xe6, 0x5f, 0x77, 0xeb, 0x8a, 0xb9, 0x7e, 0x4c, 0x67, 0xdf, 0x2f, 0x1a, 0xf6, 0x86, 0xbf, - 0x2a, 0xff, 0xda, 0x5f, 0xf7, 0xa0, 0x22, 0x4f, 0x23, 0x3f, 0xd6, 0x2d, 0xa1, 0x8a, 0xb1, 0x57, - 0xe4, 0x69, 0xb4, 0xaf, 0xfb, 0x41, 0x1f, 0x9a, 0x57, 0x49, 0x4a, 0x68, 0xcc, 0xdc, 0xda, 0x42, - 0x6b, 0xa8, 0xe7, 0x29, 0xfa, 0x96, 0xc6, 0x8c, 0x7c, 0x09, 0xef, 0xe5, 0xb7, 0xfb, 0xa7, 0x87, - 0x53, 0xc7, 0x4b, 0xde, 0xb3, 0x92, 0xbd, 0xb7, 0xdf, 0xc7, 0x23, 0x20, 0xfa, 0xae, 0x34, 0x8a, - 0xf8, 0x39, 0x1b, 0xf9, 0x29, 0x0d, 0x4e, 0x98, 0x72, 0x1b, 0x78, 0xa0, 0x56, 0x4c, 0x67, 0x4f, - 0x0d, 0x71, 0x80, 0x38, 0x79, 0x06, 0xeb, 0xd8, 0x1b, 0xfc, 0x98, 0xc5, 0x5c, 0xcc, 0xfd, 0x88, - 0xce, 0x79, 0xa6, 0xdc, 0x26, 0x36, 0xa3, 0xbb, 0x0b, 0x9d, 0x64, 0x1f, 0xf9, 0x97, 0x48, 0x7b, - 0x6b, 0xc1, 0x4d, 0x88, 0xb4, 0xa1, 0x16, 0x4a, 0x5f, 0xa4, 0x89, 0xcf, 0x66, 0xa9, 0x70, 0x57, - 0xf1, 0x98, 0xd5, 0x50, 0x7a, 0x69, 0xb2, 0x37, 0x4b, 0x05, 0xf9, 0x08, 0x8a, 0x99, 0x64, 0xc2, - 0x6d, 0x61, 0x64, 0x62, 0x22, 0x7f, 0x27, 0x99, 0x78, 0x31, 0x62, 0x89, 0x0a, 0xd5, 0xdc, 0x43, - 0x9e, 0x7c, 0x0a, 0x0d, 0xc1, 0x79, 0x7e, 0x77, 0x2e, 0xdc, 0x35, 0x5c, 0x70, 0xd3, 0x81, 0x75, - 0x2d, 0xca, 0x67, 0xba, 0xbe, 0x63, 0x2e, 0x02, 0xe6, 0x2f, 0x56, 0x8e, 0xe0, 0x11, 0x56, 0x91, - 0xb8, 0x2a, 0x1c, 0xf9, 0x0c, 0xee, 0x8e, 0xc2, 0x33, 0x3f, 0x15, 0x2c, 0x08, 0xa5, 0xce, 0x6d, - 0x98, 0x04, 0x82, 0xc5, 0x2c, 0x51, 0xee, 0x7a, 0xc7, 0xe9, 0x35, 0xbc, 0xdb, 0xa3, 0xf0, 0xec, - 0x20, 0x67, 0x5f, 0xe4, 0x64, 0xf7, 0x2b, 0x58, 0x7b, 0x2b, 0x11, 0xa4, 0x0f, 0x65, 0x96, 0x8c, - 0x42, 0x9a, 0xe0, 0x63, 0x6a, 0x6e, 0xd7, 0x73, 0x9f, 0x68, 0x2c, 0x7f, 0x92, 0x46, 0xd1, 0x3d, - 0x82, 0xfa, 0xe2, 0x7d, 0xc9, 0x43, 0xa8, 0xea, 0x1b, 0x1b, 0x3f, 0x38, 0x0b, 0x7e, 0xa8, 0x68, - 0x18, 0xbd, 0x90, 0x4b, 0xa6, 0x5c, 0xaa, 0x6b, 0x7f, 0x13, 0x94, 0x3c, 0xe7, 0x52, 0x75, 0x7f, - 0x5a, 0x86, 0xe6, 0xa1, 0x12, 0x8c, 0xc6, 0xff, 0xe5, 0x97, 0xf2, 0x8d, 0xfd, 0xaf, 0xfd, 0xcf, - 0x46, 0x87, 0x41, 0xde, 0xc5, 0x5f, 0x25, 0xef, 0xe5, 0x2b, 0x57, 0xbd, 0xbc, 0xff, 0x05, 0xc0, - 0x42, 0x99, 0x57, 0xa1, 0xa6, 0xbf, 0xbb, 0x6c, 0x4c, 0xb3, 0x48, 0xb5, 0x96, 0x48, 0x03, 0xaa, - 0x1a, 0xc0, 0x1a, 0xb6, 0x9c, 0x9c, 0xdf, 0x79, 0x3e, 0x8c, 0x78, 0x70, 0xd2, 0x5a, 0xee, 0x6f, - 0x42, 0xd9, 0x94, 0x8d, 0xb4, 0xa0, 0xfe, 0x32, 0x54, 0x2a, 0x62, 0x66, 0x6e, 0xd6, 0x0e, 0xc3, - 0x89, 0x9d, 0x3a, 0xc3, 0xcd, 0xd7, 0x17, 0x6d, 0xe7, 0xf7, 0x8b, 0xb6, 0xf3, 0xe7, 0x45, 0xdb, - 0xf9, 0xf5, 0xaf, 0xf6, 0x12, 0xdc, 0x0e, 0x78, 0x3c, 0xb0, 0x29, 0x1b, 0xa8, 0x70, 0x74, 0x8c, - 0x09, 0x38, 0x70, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xac, 0x6a, 0x1b, 0x9a, 0x08, 0x00, - 0x00, + // 1167 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x5b, 0x6f, 0x1b, 0x45, + 0x14, 0xee, 0xc6, 0x97, 0xd8, 0xc7, 0x97, 0x38, 0x93, 0xb4, 0xdd, 0x86, 0xe2, 0xba, 0x46, 0x50, + 0xd7, 0xaa, 0x9c, 0x52, 0x24, 0x2a, 0x1e, 0x00, 0xd5, 0xa9, 0x69, 0xa3, 0xb6, 0xb4, 0xda, 0x04, + 0x21, 0xf1, 0xb2, 0x9a, 0xec, 0x8e, 0xed, 0x51, 0x76, 0x67, 0xb6, 0x33, 0xe3, 0xc6, 0xe6, 0x0f, + 0xf0, 0xc8, 0x2b, 0xbf, 0x83, 0x5f, 0xd1, 0x47, 0x9e, 0x41, 0xaa, 0x50, 0xf9, 0x23, 0x68, 0x2e, + 0x9b, 0x38, 0x97, 0x8a, 0x22, 0x1e, 0x78, 0xf2, 0xec, 0xf7, 0x9d, 0x39, 0x33, 0xe7, 0xf2, 0x9d, + 0x31, 0xd4, 0x25, 0x49, 0x48, 0xa4, 0x06, 0x99, 0xe0, 0x8a, 0xa3, 0xa2, 0xa2, 0xd9, 0xc1, 0x56, + 0x93, 0xcc, 0x49, 0x34, 0x53, 0x5c, 0x58, 0x74, 0x6b, 0x73, 0xc2, 0x27, 0xdc, 0x2c, 0xb7, 0xf5, + 0xca, 0xa2, 0xdd, 0x4f, 0xa1, 0x10, 0xf0, 0x23, 0x74, 0x05, 0xca, 0x53, 0xcc, 0xe2, 0x84, 0xf8, + 0x5e, 0xc7, 0xeb, 0xd5, 0x03, 0xf7, 0x85, 0x10, 0x14, 0x63, 0xac, 0xb0, 0xbf, 0x62, 0x50, 0xb3, + 0xee, 0x7e, 0x01, 0xa5, 0x91, 0x10, 0x5c, 0x20, 0x1f, 0x8a, 0x11, 0x8f, 0xed, 0x96, 0xd2, 0xb0, + 0xf8, 0xfa, 0xcd, 0x8d, 0x4b, 0x81, 0x41, 0xd0, 0x15, 0x28, 0xa4, 0x72, 0x62, 0x76, 0x55, 0x1d, + 0xa1, 0x81, 0xee, 0x1c, 0xd0, 0x2e, 0x53, 0x44, 0xa4, 0x24, 0xa6, 0x58, 0x91, 0xe7, 0x33, 0x95, + 0xcd, 0x14, 0xba, 0x0f, 0x35, 0xc2, 0xf4, 0xbe, 0x50, 0x2d, 0x32, 0xeb, 0xae, 0x79, 0xaf, 0x35, + 0xd0, 0x51, 0x0c, 0x46, 0x86, 0xd8, 0x5f, 0x64, 0xc4, 0xf9, 0x01, 0x72, 0x8c, 0xa0, 0xdb, 0x50, + 0x8e, 0xa6, 0x33, 0x76, 0x28, 0xfd, 0x95, 0x4e, 0xa1, 0x57, 0xbb, 0x57, 0xb3, 0x7b, 0x76, 0x34, + 0xe6, 0xcc, 0x9d, 0x41, 0xf7, 0x8f, 0x02, 0x34, 0xf7, 0x4c, 0x92, 0x02, 0x22, 0x33, 0xce, 0x24, + 0x41, 0x37, 0xa1, 0x44, 0x74, 0x1c, 0xe6, 0xc0, 0xe3, 0xcd, 0x26, 0xb4, 0xc0, 0x32, 0xe8, 0x43, + 0x28, 0x0a, 0x7e, 0x94, 0xbb, 0xaf, 0x5a, 0x8b, 0x80, 0x1f, 0x05, 0x06, 0x5e, 0x3a, 0xbf, 0xf0, + 0x0f, 0xe7, 0xa3, 0x5b, 0x50, 0x39, 0xc2, 0x82, 0x51, 0x36, 0x91, 0x7e, 0x71, 0xd9, 0xd8, 0x9e, + 0x77, 0x4c, 0xa2, 0x8f, 0xa0, 0xc1, 0x4d, 0x5a, 0xc2, 0x88, 0xcf, 0x98, 0x92, 0x7e, 0xa9, 0x53, + 0xe8, 0x15, 0x82, 0xba, 0x05, 0x77, 0x0c, 0xa6, 0x8d, 0xdc, 0x06, 0x6b, 0xe5, 0x97, 0x3b, 0x9e, + 0x36, 0x72, 0xa0, 0xb1, 0x42, 0xcf, 0x61, 0xc3, 0xb6, 0x00, 0xe5, 0x2c, 0x94, 0xb3, 0x34, 0xc5, + 0x82, 0x12, 0xe9, 0x57, 0xcc, 0xe9, 0x6d, 0x77, 0xba, 0xeb, 0x91, 0x51, 0x6e, 0xb8, 0x67, 0xec, + 0x16, 0x01, 0x22, 0xa7, 0x11, 0x4a, 0xe4, 0xd9, 0x3a, 0x55, 0xdf, 0xbb, 0x4e, 0x08, 0x8a, 0x2c, + 0x7e, 0x25, 0x7d, 0x30, 0xa1, 0x98, 0x35, 0x7a, 0x02, 0x9b, 0x74, 0xa9, 0x15, 0x42, 0x1b, 0x9f, + 0xf4, 0x6b, 0xe6, 0x7a, 0xbe, 0xf5, 0x7a, 0xbe, 0x59, 0x82, 0x0d, 0x7a, 0x0e, 0x93, 0xdd, 0x9f, + 0x3d, 0x28, 0x99, 0xac, 0xa3, 0x7d, 0xa8, 0xea, 0xd2, 0x84, 0xa6, 0x6b, 0x0b, 0xba, 0x6b, 0x87, + 0xf7, 0xf5, 0x7d, 0x7e, 0x7f, 0x73, 0x63, 0x7b, 0x42, 0xd5, 0x74, 0x76, 0x30, 0x88, 0x78, 0xba, + 0x9d, 0x51, 0x36, 0x89, 0x70, 0xb6, 0xad, 0x4f, 0xd9, 0x96, 0x53, 0x2c, 0x48, 0x7c, 0xb0, 0x50, + 0x44, 0x0e, 0xf6, 0xcc, 0x7a, 0xa8, 0xd7, 0x41, 0x45, 0x7b, 0x7a, 0x88, 0x15, 0x46, 0x77, 0x9d, + 0xd7, 0x94, 0x28, 0xec, 0xca, 0xd7, 0x38, 0x6e, 0x86, 0x67, 0x44, 0x61, 0x17, 0xb4, 0xd9, 0xa1, + 0xbf, 0xbb, 0x87, 0x70, 0xed, 0xfc, 0xe5, 0x77, 0xa6, 0x98, 0x31, 0x92, 0xa0, 0x5b, 0x50, 0xcf, + 0xc5, 0x19, 0xd2, 0x78, 0xee, 0x7b, 0x9d, 0x95, 0x5e, 0xc3, 0xb9, 0xa8, 0xe5, 0xcc, 0x6e, 0x3c, + 0x47, 0x1f, 0x43, 0xd3, 0x35, 0x03, 0x1f, 0x8f, 0x25, 0x51, 0xb6, 0x13, 0x1b, 0x81, 0x6b, 0x91, + 0xe7, 0x16, 0xec, 0x8e, 0x60, 0xd5, 0xdd, 0x03, 0x5d, 0x3f, 0x25, 0xe4, 0x42, 0xde, 0x85, 0x4e, + 0xce, 0xd7, 0xa1, 0x9c, 0x10, 0x36, 0x51, 0x53, 0x23, 0xcd, 0x63, 0xd6, 0x62, 0xdd, 0x5f, 0x57, + 0x01, 0x1e, 0x3e, 0x78, 0x14, 0x90, 0x97, 0x33, 0x22, 0x15, 0xea, 0xc3, 0xba, 0x54, 0x58, 0xa8, + 0x50, 0xc9, 0x70, 0x8c, 0x93, 0xe4, 0x00, 0x47, 0x87, 0xc6, 0x6b, 0x31, 0x58, 0x33, 0xc4, 0xbe, + 0xfc, 0xc6, 0xc1, 0xe8, 0x0e, 0x54, 0xf3, 0x7b, 0xe7, 0x6a, 0x69, 0x9e, 0xee, 0xb0, 0xe0, 0xc4, + 0x00, 0x0d, 0xa0, 0xa5, 0x68, 0x4a, 0xc2, 0x1f, 0x39, 0x23, 0x2e, 0x32, 0x53, 0xab, 0xfc, 0x42, + 0x4d, 0xcd, 0xfe, 0xc0, 0x19, 0xb1, 0x01, 0xa2, 0x2d, 0x28, 0x8d, 0x13, 0x6c, 0x94, 0xe3, 0xf5, + 0x8a, 0xce, 0xc8, 0x42, 0x17, 0xa4, 0xa8, 0x74, 0x41, 0x8a, 0xd0, 0x5d, 0xd8, 0x8c, 0x78, 0xa2, + 0xf5, 0x1f, 0x0a, 0xcc, 0x26, 0x24, 0x57, 0x97, 0x16, 0x4e, 0x25, 0x40, 0x8e, 0x0b, 0x34, 0xe5, + 0x34, 0xd6, 0x87, 0xf5, 0x14, 0xcf, 0xc3, 0xd3, 0x3a, 0x5b, 0xb5, 0xe1, 0xa7, 0x78, 0xfe, 0xfd, + 0xb2, 0xd4, 0xce, 0x28, 0xa3, 0xf2, 0xde, 0xca, 0xb8, 0x06, 0x15, 0xf9, 0x32, 0x09, 0x53, 0x3d, + 0x46, 0xab, 0xc6, 0xf7, 0xaa, 0x7c, 0x99, 0x3c, 0xd3, 0x33, 0xb4, 0x0f, 0xcd, 0x93, 0x24, 0x31, + 0x9c, 0x12, 0xbf, 0xb6, 0x34, 0x4e, 0xeb, 0x79, 0x8a, 0xbe, 0xc5, 0x29, 0x41, 0x5f, 0xc1, 0x07, + 0x79, 0x74, 0x17, 0x49, 0xbe, 0x6e, 0x82, 0xbc, 0xe6, 0x4c, 0x46, 0xe7, 0x95, 0x7d, 0x07, 0x90, + 0x8e, 0x15, 0x27, 0x09, 0x3f, 0x22, 0x71, 0x98, 0xe1, 0xe8, 0x90, 0x28, 0xbf, 0x61, 0x2e, 0xd4, + 0x4a, 0xf1, 0xfc, 0x81, 0x25, 0x5e, 0x18, 0x1c, 0x3d, 0x82, 0x0d, 0x33, 0xd5, 0xc2, 0x94, 0xa4, + 0x5c, 0x2c, 0xc2, 0x04, 0x2f, 0xf8, 0x4c, 0xf9, 0x4d, 0x33, 0x46, 0xaf, 0x2e, 0xcd, 0xc0, 0x67, + 0x86, 0x7f, 0x6a, 0xe8, 0x60, 0x3d, 0x3a, 0x0b, 0xa1, 0x36, 0xd4, 0xa8, 0x0c, 0x45, 0xc6, 0x42, + 0x32, 0xcf, 0x84, 0xbf, 0x66, 0xae, 0x59, 0xa5, 0x32, 0xc8, 0xd8, 0x68, 0x9e, 0x09, 0xf4, 0x09, + 0x14, 0x67, 0x92, 0x08, 0xbf, 0x65, 0x3c, 0x23, 0xeb, 0xf9, 0x3b, 0x49, 0xc4, 0x6e, 0x4c, 0x98, + 0xa2, 0x6a, 0x11, 0x18, 0x1e, 0x7d, 0x06, 0x0d, 0xc1, 0x79, 0x1e, 0x3b, 0x17, 0xfe, 0xba, 0xd9, + 0x70, 0xb6, 0x03, 0xeb, 0xda, 0x28, 0xff, 0xd2, 0xf5, 0x1d, 0x73, 0x11, 0x91, 0x70, 0xb9, 0x72, + 0xc8, 0x5c, 0x61, 0xcd, 0x10, 0x27, 0x85, 0x43, 0x9f, 0xc3, 0xd5, 0x98, 0xbe, 0x0a, 0x33, 0x41, + 0x22, 0x2a, 0x75, 0x6e, 0x29, 0x8b, 0x04, 0x49, 0x09, 0x53, 0xfe, 0x46, 0xc7, 0xeb, 0x35, 0x82, + 0xcb, 0x31, 0x7d, 0xf5, 0x22, 0x67, 0x77, 0x73, 0x12, 0x61, 0xb8, 0x7e, 0xc1, 0x90, 0x0b, 0x23, + 0x3b, 0x07, 0xa4, 0xbf, 0x69, 0x94, 0x72, 0xe3, 0x5d, 0xc3, 0xce, 0xcd, 0x8b, 0x60, 0x8b, 0xbe, + 0x8b, 0x92, 0xdd, 0xaf, 0x61, 0xfd, 0x5c, 0xae, 0x51, 0x1f, 0xca, 0x84, 0xc5, 0x14, 0x33, 0xf7, + 0x98, 0xd6, 0xf3, 0x56, 0xd4, 0x58, 0xae, 0x7a, 0x6b, 0xd1, 0xdd, 0x87, 0xfa, 0x72, 0x4a, 0xd1, + 0x4d, 0xa8, 0xea, 0xa4, 0xda, 0x96, 0xf3, 0x96, 0x5a, 0xae, 0xa2, 0x61, 0xd3, 0x6e, 0xb9, 0xc9, + 0x94, 0x4b, 0x75, 0xea, 0x91, 0x37, 0x26, 0x8f, 0xb9, 0x54, 0xdd, 0x9f, 0x56, 0xa0, 0xb9, 0xa7, + 0x04, 0xc1, 0xe9, 0xbf, 0x79, 0x6f, 0x9f, 0xb8, 0xbf, 0x1b, 0xff, 0x71, 0x70, 0x1b, 0x27, 0xff, + 0xc7, 0x93, 0x9b, 0x3f, 0x74, 0xab, 0x27, 0x0f, 0x5d, 0xff, 0x4b, 0x80, 0xa5, 0x4e, 0x5a, 0x83, + 0x9a, 0xfe, 0x7d, 0x48, 0xc6, 0x78, 0x96, 0xa8, 0xd6, 0x25, 0xd4, 0x80, 0xaa, 0x06, 0x4c, 0x0d, + 0x5b, 0x5e, 0xce, 0xef, 0x3c, 0x1e, 0x26, 0x3c, 0x3a, 0x6c, 0xad, 0xf4, 0x6f, 0x43, 0xd9, 0x96, + 0x0d, 0xb5, 0xa0, 0xfe, 0x94, 0x2a, 0x95, 0x10, 0xfb, 0x6d, 0xf7, 0x0e, 0xe9, 0xc4, 0x7d, 0x7a, + 0xc3, 0xdb, 0xaf, 0xdf, 0xb6, 0xbd, 0xdf, 0xde, 0xb6, 0xbd, 0x3f, 0xdf, 0xb6, 0xbd, 0x5f, 0xfe, + 0x6a, 0x5f, 0x82, 0xcb, 0x11, 0x4f, 0x07, 0x2e, 0x65, 0x03, 0x45, 0xe3, 0x03, 0x93, 0x80, 0x17, + 0xde, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdd, 0x7c, 0xb9, 0xb0, 0x31, 0x0a, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index bb4c287d..eb790664 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -31,6 +31,7 @@ enum ExecType { TypeWindow = 14; TypeExpand = 15; // Expand executor is used to expand underlying data sources to feed different grouping sets. TypeExpand2 = 16; // Expand2 executor is used to expand underlying data sources to feed different grouping sets. + TypeIndexLookUp = 20; } // It represents a Executor. @@ -55,6 +56,10 @@ message Executor { optional uint64 fine_grained_shuffle_batch_size = 18 [(gogoproto.nullable) = false]; optional Expand expand = 19; optional Expand2 expand2= 20; + optional IndexLookUp index_lookup = 24; + // It indicates the parent index of current executor. + // Not set indicates its parent is the next executor in `DAGRequest.executors`. + optional uint32 parent_idx = 25; } enum ExchangeType { @@ -82,6 +87,12 @@ message ExchangeSender { repeated EncodedBytesSlice upstream_cte_task_meta = 8; } +message IndexLookUp { + // It represents the index columns we should use to build the row handle. + repeated uint32 index_handle_offsets = 1; + optional bool keep_order = 2; +} + message EncodedBytesSlice { repeated bytes encoded_tasks = 1; } diff --git a/proto/select.proto b/proto/select.proto index 46ef6cc3..7194424e 100644 --- a/proto/select.proto +++ b/proto/select.proto @@ -23,6 +23,12 @@ message Error { optional string msg = 2 [(gogoproto.nullable) = false]; } +// It is the data of a intermidiate output channel +message IntermediateOutput { + optional EncodeType encode_type = 1 [(gogoproto.nullable) = false]; + repeated Chunk chunks = 2 [(gogoproto.nullable) = false]; +} + // Response for SelectRequest. message SelectResponse { optional Error error = 1; @@ -47,6 +53,8 @@ message SelectResponse { // ndvs collects the number of distinct value information per range. It will be used to serve as execution feedback information. // Helping us improve the table's statistics information. repeated int64 ndvs = 10; + // It contains all the intermedidate outputs. + repeated IntermediateOutput intermediate_outputs = 11; } // Chunk contains multiple rows data and rows meta. @@ -58,6 +66,18 @@ message Chunk { repeated RowMeta rows_meta = 4 [(gogoproto.nullable) = false]; } +// IntermediateOutputChannel is the channel description for the intermediate ouput. +// The SelectResponse of a DAGRequest may output some intermediate data because not all rows can be processed in DAG. +// For example, the executor IndexLookUp scans the index records and look up the rows locally. +// If a related row of a index is not found locally, this index record should be ouput into the intermediate channel +// for the further processment in the TiDB side. +message IntermediateOutputChannel { + // executor_idx indicates which executor outputs this intermediate result. + required uint32 executor_idx = 1 [(gogoproto.nullable) = false]; + // It represents which columns we should output. + repeated uint32 output_offsets = 2; +} + // RowMeta contains row handle and length of a row. message RowMeta { optional int64 handle = 1 [(gogoproto.nullable) = false]; @@ -70,7 +90,23 @@ message DAGRequest { // Deprecated. Start Ts has been moved to coprocessor.Request. optional uint64 start_ts_fallback = 1; - // It represents push down Executors. + // It represents push down Executors and follows the order of depth-first search with post-order traversal. + // That is: left child first, then right child, then parent. + // For example, a DAG: + // A + // / + // B + // / \ + // C D + // / / \ + // E F G + // / + // H + // Its order should be: [H, E, C, F, G, D, B, A] + // In most cases, there is only one child for each parent, that makes executors simple array from the srouce + // to the out most executors, and the response only need to output the final rows. + // But when a executor has more than one children, for example, IndexLookUp, some intermedidate result is required to output. + // The field `intermediate_output_channels` describes it. repeated Executor executors = 2; // time zone offset in seconds @@ -133,6 +169,9 @@ message DAGRequest { // It indicates the number of digits by which to increase the scale of the result of division operations performed with the / operator. optional uint32 div_precision_increment = 19; + + // It inidcates the intermdidate result channels. + repeated IntermediateOutputChannel intermediate_output_channels = 20; } enum EncodeType { diff --git a/scripts/proto.lock b/scripts/proto.lock new file mode 100644 index 00000000..bb4b8c8a --- /dev/null +++ b/scripts/proto.lock @@ -0,0 +1,8671 @@ +{ + "definitions": [ + { + "protopath": "analyze.proto", + "def": { + "enums": [ + { + "name": "AnalyzeType", + "enum_fields": [ + { + "name": "TypeIndex" + }, + { + "name": "TypeColumn", + "integer": 1 + }, + { + "name": "TypeCommonHandle", + "integer": 2 + }, + { + "name": "TypeSampleIndex", + "integer": 3 + }, + { + "name": "TypeMixed", + "integer": 4 + }, + { + "name": "TypeFullSampling", + "integer": 5 + } + ] + } + ], + "messages": [ + { + "name": "AnalyzeReq", + "fields": [ + { + "id": 1, + "name": "tp", + "type": "AnalyzeType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "start_ts_fallback", + "type": "uint64", + "optional": true + }, + { + "id": 3, + "name": "flags", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "time_zone_offset", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "idx_req", + "type": "AnalyzeIndexReq", + "optional": true + }, + { + "id": 6, + "name": "col_req", + "type": "AnalyzeColumnsReq", + "optional": true + } + ] + }, + { + "name": "AnalyzeIndexReq", + "fields": [ + { + "id": 1, + "name": "bucket_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "num_columns", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "cmsketch_depth", + "type": "int32", + "optional": true + }, + { + "id": 4, + "name": "cmsketch_width", + "type": "int32", + "optional": true + }, + { + "id": 5, + "name": "sample_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "sketch_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 7, + "name": "top_n_size", + "type": "int32", + "optional": true + }, + { + "id": 8, + "name": "version", + "type": "int32", + "optional": true + } + ] + }, + { + "name": "AnalyzeColumnsReq", + "fields": [ + { + "id": 1, + "name": "bucket_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "sample_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "sketch_size", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "columns_info", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 5, + "name": "cmsketch_depth", + "type": "int32", + "optional": true + }, + { + "id": 6, + "name": "cmsketch_width", + "type": "int32", + "optional": true + }, + { + "id": 7, + "name": "primary_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 8, + "name": "version", + "type": "int32", + "optional": true + }, + { + "id": 9, + "name": "primary_prefix_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 10, + "name": "column_groups", + "type": "AnalyzeColumnGroup", + "is_repeated": true + }, + { + "id": 11, + "name": "sample_rate", + "type": "double", + "optional": true + } + ] + }, + { + "name": "AnalyzeMixedResp", + "fields": [ + { + "id": 1, + "name": "columns_resp", + "type": "AnalyzeColumnsResp", + "optional": true + }, + { + "id": 2, + "name": "index_resp", + "type": "AnalyzeIndexResp", + "optional": true + } + ] + }, + { + "name": "AnalyzeColumnGroup", + "fields": [ + { + "id": 1, + "name": "column_offsets", + "type": "int64", + "is_repeated": true + }, + { + "id": 2, + "name": "prefix_lengths", + "type": "int64", + "is_repeated": true + } + ] + }, + { + "name": "AnalyzeColumnsResp", + "fields": [ + { + "id": 1, + "name": "collectors", + "type": "SampleCollector", + "is_repeated": true + }, + { + "id": 2, + "name": "pk_hist", + "type": "Histogram", + "optional": true + }, + { + "id": 3, + "name": "row_collector", + "type": "RowSampleCollector", + "optional": true + } + ] + }, + { + "name": "AnalyzeIndexResp", + "fields": [ + { + "id": 1, + "name": "hist", + "type": "Histogram", + "optional": true + }, + { + "id": 2, + "name": "cms", + "type": "CMSketch", + "optional": true + }, + { + "id": 3, + "name": "collector", + "type": "SampleCollector", + "optional": true + } + ] + }, + { + "name": "Bucket", + "fields": [ + { + "id": 1, + "name": "count", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "lower_bound", + "type": "bytes", + "optional": true + }, + { + "id": 3, + "name": "upper_bound", + "type": "bytes", + "optional": true + }, + { + "id": 4, + "name": "repeats", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "ndv", + "type": "int64", + "optional": true + } + ] + }, + { + "name": "Histogram", + "fields": [ + { + "id": 1, + "name": "ndv", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "buckets", + "type": "Bucket", + "is_repeated": true + } + ] + }, + { + "name": "FMSketch", + "fields": [ + { + "id": 1, + "name": "mask", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "hashset", + "type": "uint64", + "is_repeated": true + } + ] + }, + { + "name": "SampleCollector", + "fields": [ + { + "id": 1, + "name": "samples", + "type": "bytes", + "is_repeated": true + }, + { + "id": 2, + "name": "null_count", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "count", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "fm_sketch", + "type": "FMSketch", + "optional": true + }, + { + "id": 5, + "name": "cm_sketch", + "type": "CMSketch", + "optional": true + }, + { + "id": 6, + "name": "total_size", + "type": "int64", + "optional": true + } + ] + }, + { + "name": "RowSampleCollector", + "fields": [ + { + "id": 1, + "name": "samples", + "type": "RowSample", + "is_repeated": true + }, + { + "id": 2, + "name": "null_counts", + "type": "int64", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "count", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "fm_sketch", + "type": "FMSketch", + "is_repeated": true + }, + { + "id": 5, + "name": "total_size", + "type": "int64", + "is_repeated": true + } + ] + }, + { + "name": "RowSample", + "fields": [ + { + "id": 1, + "name": "row", + "type": "bytes", + "is_repeated": true + }, + { + "id": 2, + "name": "weight", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "CMSketchRow", + "fields": [ + { + "id": 1, + "name": "counters", + "type": "uint32", + "is_repeated": true + } + ] + }, + { + "name": "CMSketchTopN", + "fields": [ + { + "id": 1, + "name": "data", + "type": "bytes", + "optional": true + }, + { + "id": 2, + "name": "count", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "CMSketch", + "fields": [ + { + "id": 1, + "name": "rows", + "type": "CMSketchRow", + "is_repeated": true + }, + { + "id": 2, + "name": "top_n", + "type": "CMSketchTopN", + "is_repeated": true + }, + { + "id": 3, + "name": "default_value", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + } + ], + "imports": [ + { + "path": "schema.proto" + }, + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "checksum.proto", + "def": { + "enums": [ + { + "name": "ChecksumScanOn", + "enum_fields": [ + { + "name": "Table" + }, + { + "name": "Index", + "integer": 1 + } + ] + }, + { + "name": "ChecksumAlgorithm", + "enum_fields": [ + { + "name": "Crc64_Xor" + } + ] + } + ], + "messages": [ + { + "name": "ChecksumRewriteRule", + "fields": [ + { + "id": 1, + "name": "old_prefix", + "type": "bytes", + "optional": true + }, + { + "id": 2, + "name": "new_prefix", + "type": "bytes", + "optional": true + } + ] + }, + { + "name": "ChecksumRequest", + "fields": [ + { + "id": 1, + "name": "start_ts_fallback", + "type": "uint64", + "optional": true + }, + { + "id": 2, + "name": "scan_on", + "type": "ChecksumScanOn", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "algorithm", + "type": "ChecksumAlgorithm", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "rule", + "type": "ChecksumRewriteRule", + "optional": true + } + ] + }, + { + "name": "ChecksumResponse", + "fields": [ + { + "id": 1, + "name": "checksum", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "total_kvs", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "total_bytes", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "executor.proto", + "def": { + "enums": [ + { + "name": "ExecType", + "enum_fields": [ + { + "name": "TypeTableScan" + }, + { + "name": "TypeIndexScan", + "integer": 1 + }, + { + "name": "TypeSelection", + "integer": 2 + }, + { + "name": "TypeAggregation", + "integer": 3 + }, + { + "name": "TypeTopN", + "integer": 4 + }, + { + "name": "TypeLimit", + "integer": 5 + }, + { + "name": "TypeStreamAgg", + "integer": 6 + }, + { + "name": "TypeJoin", + "integer": 7 + }, + { + "name": "TypeKill", + "integer": 8 + }, + { + "name": "TypeExchangeSender", + "integer": 9 + }, + { + "name": "TypeExchangeReceiver", + "integer": 10 + }, + { + "name": "TypeProjection", + "integer": 11 + }, + { + "name": "TypePartitionTableScan", + "integer": 12 + }, + { + "name": "TypeSort", + "integer": 13 + }, + { + "name": "TypeWindow", + "integer": 14 + }, + { + "name": "TypeExpand", + "integer": 15 + }, + { + "name": "TypeExpand2", + "integer": 16 + }, + { + "name": "TypeBroadcastQuery", + "integer": 17 + }, + { + "name": "TypeCTESink", + "integer": 18 + }, + { + "name": "TypeCTESource", + "integer": 19 + }, + { + "name": "TypeIndexLookUp", + "integer": 20 + } + ] + }, + { + "name": "ExchangeType", + "enum_fields": [ + { + "name": "PassThrough" + }, + { + "name": "Broadcast", + "integer": 1 + }, + { + "name": "Hash", + "integer": 2 + } + ] + }, + { + "name": "CompressionMode", + "enum_fields": [ + { + "name": "NONE" + }, + { + "name": "FAST", + "integer": 1 + }, + { + "name": "HIGH_COMPRESSION", + "integer": 2 + } + ] + }, + { + "name": "EngineType", + "enum_fields": [ + { + "name": "Local" + }, + { + "name": "TiKV", + "integer": 1 + }, + { + "name": "TiFlash", + "integer": 2 + } + ] + }, + { + "name": "VectorIndexKind", + "enum_fields": [ + { + "name": "INVALID_INDEX_KIND" + }, + { + "name": "HNSW", + "integer": 1 + } + ] + }, + { + "name": "VectorDistanceMetric", + "enum_fields": [ + { + "name": "INVALID_DISTANCE_METRIC" + }, + { + "name": "L1", + "integer": 1 + }, + { + "name": "L2", + "integer": 2 + }, + { + "name": "COSINE", + "integer": 3 + }, + { + "name": "INNER_PRODUCT", + "integer": 4 + } + ] + }, + { + "name": "ANNQueryType", + "enum_fields": [ + { + "name": "InvalidQueryType" + }, + { + "name": "OrderBy", + "integer": 1 + } + ] + }, + { + "name": "FTSQueryType", + "enum_fields": [ + { + "name": "FTSQueryTypeInvalid" + }, + { + "name": "FTSQueryTypeNoScore", + "integer": 1 + }, + { + "name": "FTSQueryTypeWithScore", + "integer": 2 + } + ] + }, + { + "name": "ColumnarIndexType", + "enum_fields": [ + { + "name": "TypeInvalid" + }, + { + "name": "TypeVector", + "integer": 1 + }, + { + "name": "TypeInverted", + "integer": 2 + }, + { + "name": "TypeFulltext", + "integer": 3 + } + ] + }, + { + "name": "JoinType", + "enum_fields": [ + { + "name": "TypeInnerJoin" + }, + { + "name": "TypeLeftOuterJoin", + "integer": 1 + }, + { + "name": "TypeRightOuterJoin", + "integer": 2 + }, + { + "name": "TypeSemiJoin", + "integer": 3 + }, + { + "name": "TypeAntiSemiJoin", + "integer": 4 + }, + { + "name": "TypeLeftOuterSemiJoin", + "integer": 5 + }, + { + "name": "TypeAntiLeftOuterSemiJoin", + "integer": 6 + } + ] + }, + { + "name": "JoinExecType", + "enum_fields": [ + { + "name": "TypeHashJoin" + } + ] + }, + { + "name": "RuntimeFilterType", + "enum_fields": [ + { + "name": "IN" + }, + { + "name": "MIN_MAX", + "integer": 1 + }, + { + "name": "BLOOM_FILTER", + "integer": 2 + } + ] + }, + { + "name": "RuntimeFilterMode", + "enum_fields": [ + { + "name": "LOCAL" + }, + { + "name": "GLOBAL", + "integer": 1 + } + ] + }, + { + "name": "TiFlashPreAggMode", + "enum_fields": [ + { + "name": "ForcePreAgg" + }, + { + "name": "Auto", + "integer": 1 + }, + { + "name": "ForceStreaming", + "integer": 2 + } + ] + }, + { + "name": "WindowBoundType", + "enum_fields": [ + { + "name": "Following" + }, + { + "name": "Preceding", + "integer": 1 + }, + { + "name": "CurrentRow", + "integer": 2 + } + ] + }, + { + "name": "RangeCmpDataType", + "enum_fields": [ + { + "name": "Int" + }, + { + "name": "Float", + "integer": 1 + }, + { + "name": "Decimal", + "integer": 2 + }, + { + "name": "DateTime", + "integer": 3 + }, + { + "name": "Duration", + "integer": 4 + } + ] + }, + { + "name": "WindowFrameType", + "enum_fields": [ + { + "name": "Rows" + }, + { + "name": "Ranges", + "integer": 1 + }, + { + "name": "Groups", + "integer": 2 + } + ] + } + ], + "messages": [ + { + "name": "Executor", + "fields": [ + { + "id": 1, + "name": "tp", + "type": "ExecType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "tbl_scan", + "type": "TableScan", + "optional": true + }, + { + "id": 3, + "name": "idx_scan", + "type": "IndexScan", + "optional": true + }, + { + "id": 4, + "name": "selection", + "type": "Selection", + "optional": true + }, + { + "id": 5, + "name": "aggregation", + "type": "Aggregation", + "optional": true + }, + { + "id": 6, + "name": "topN", + "type": "TopN", + "optional": true + }, + { + "id": 7, + "name": "limit", + "type": "Limit", + "optional": true + }, + { + "id": 8, + "name": "exchange_receiver", + "type": "ExchangeReceiver", + "optional": true + }, + { + "id": 9, + "name": "join", + "type": "Join", + "optional": true + }, + { + "id": 10, + "name": "executor_id", + "type": "string", + "optional": true + }, + { + "id": 11, + "name": "kill", + "type": "Kill", + "optional": true + }, + { + "id": 12, + "name": "exchange_sender", + "type": "ExchangeSender", + "optional": true + }, + { + "id": 13, + "name": "Projection", + "type": "Projection", + "optional": true + }, + { + "id": 14, + "name": "partition_table_scan", + "type": "PartitionTableScan", + "optional": true + }, + { + "id": 15, + "name": "sort", + "type": "Sort", + "optional": true + }, + { + "id": 16, + "name": "window", + "type": "Window", + "optional": true + }, + { + "id": 17, + "name": "fine_grained_shuffle_stream_count", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 18, + "name": "fine_grained_shuffle_batch_size", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 19, + "name": "expand", + "type": "Expand", + "optional": true + }, + { + "id": 20, + "name": "expand2", + "type": "Expand2", + "optional": true + }, + { + "id": 21, + "name": "broadcast_query", + "type": "BroadcastQuery", + "optional": true + }, + { + "id": 22, + "name": "cte_sink", + "type": "CTESink", + "optional": true + }, + { + "id": 23, + "name": "cte_source", + "type": "CTESource", + "optional": true + }, + { + "id": 24, + "name": "index_lookup", + "type": "IndexLookUp", + "optional": true + }, + { + "id": 25, + "name": "parent_idx", + "type": "uint32", + "optional": true + } + ] + }, + { + "name": "ExchangeSender", + "fields": [ + { + "id": 1, + "name": "tp", + "type": "ExchangeType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "encoded_task_meta", + "type": "bytes", + "is_repeated": true + }, + { + "id": 3, + "name": "partition_keys", + "type": "Expr", + "is_repeated": true + }, + { + "id": 4, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 5, + "name": "types", + "type": "FieldType", + "is_repeated": true + }, + { + "id": 6, + "name": "all_field_types", + "type": "FieldType", + "is_repeated": true + }, + { + "id": 7, + "name": "compression", + "type": "CompressionMode", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 8, + "name": "upstream_cte_task_meta", + "type": "EncodedBytesSlice", + "is_repeated": true + }, + { + "id": 9, + "name": "same_zone_flag", + "type": "bool", + "is_repeated": true + } + ] + }, + { + "name": "CTESink", + "fields": [ + { + "id": 1, + "name": "cte_id", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "cte_source_num", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "cte_sink_num", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 5, + "name": "field_types", + "type": "FieldType", + "is_repeated": true + } + ] + }, + { + "name": "CTESource", + "fields": [ + { + "id": 1, + "name": "cte_id", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "cte_source_num", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "cte_sink_num", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "field_types", + "type": "FieldType", + "is_repeated": true + } + ] + }, + { + "name": "IndexLookUp", + "fields": [ + { + "id": 1, + "name": "index_handle_offsets", + "type": "uint32", + "is_repeated": true + }, + { + "id": 2, + "name": "keep_order", + "type": "bool", + "optional": true + } + ] + }, + { + "name": "EncodedBytesSlice", + "fields": [ + { + "id": 1, + "name": "encoded_tasks", + "type": "bytes", + "is_repeated": true + } + ] + }, + { + "name": "ExchangeReceiver", + "fields": [ + { + "id": 1, + "name": "encoded_task_meta", + "type": "bytes", + "is_repeated": true + }, + { + "id": 2, + "name": "field_types", + "type": "FieldType", + "is_repeated": true + }, + { + "id": 3, + "name": "tp", + "type": "ExchangeType", + "optional": true + }, + { + "id": 4, + "name": "original_cte_prdocuer_task_meta", + "type": "bytes", + "is_repeated": true + }, + { + "id": 5, + "name": "same_zone_flag", + "type": "bool", + "is_repeated": true + } + ] + }, + { + "name": "ANNQueryInfo", + "fields": [ + { + "id": 1, + "name": "query_type", + "type": "ANNQueryType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "distance_metric", + "type": "VectorDistanceMetric", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "top_k", + "type": "uint32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "column_name", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "deprecated_column_id", + "type": "int64", + "optional": true + }, + { + "id": 6, + "name": "ref_vec_f32", + "type": "bytes", + "optional": true + }, + { + "id": 8, + "name": "index_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 10, + "name": "max_distance", + "type": "double", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 20, + "name": "hnsw_ef_search", + "type": "uint32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 21, + "name": "column", + "type": "ColumnInfo", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 22, + "name": "enable_distance_proj", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ], + "reserved_ids": [ + 7 + ] + }, + { + "name": "InvertedQueryInfo", + "fields": [ + { + "id": 1, + "name": "index_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "column_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "FTSQueryInfo", + "fields": [ + { + "id": 1, + "name": "query_type", + "type": "FTSQueryType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "index_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 4, + "name": "column_names", + "type": "string", + "is_repeated": true + }, + { + "id": 5, + "name": "query_text", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "query_tokenizer", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 10, + "name": "top_k", + "type": "uint32", + "optional": true + }, + { + "id": 20, + "name": "query_func", + "type": "ScalarFuncSig", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 21, + "name": "match_expr", + "type": "Expr", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "ColumnarIndexInfo", + "fields": [ + { + "id": 1, + "name": "index_type", + "type": "ColumnarIndexType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "ann_query_info", + "type": "ANNQueryInfo", + "oneof_parent": "index" + }, + { + "id": 3, + "name": "inverted_query_info", + "type": "InvertedQueryInfo", + "oneof_parent": "index" + }, + { + "id": 4, + "name": "fts_query_info", + "type": "FTSQueryInfo", + "oneof_parent": "index" + } + ] + }, + { + "name": "TableScan", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 3, + "name": "desc", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "primary_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 5, + "name": "next_read_engine", + "type": "EngineType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "ranges", + "type": "KeyRange", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 7, + "name": "primary_prefix_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 8, + "name": "keep_order", + "type": "bool", + "optional": true + }, + { + "id": 9, + "name": "is_fast_scan", + "type": "bool", + "optional": true + }, + { + "id": 10, + "name": "pushed_down_filter_conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 11, + "name": "runtime_filter_list", + "type": "RuntimeFilter", + "is_repeated": true + }, + { + "id": 12, + "name": "max_wait_time_ms", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 13, + "name": "deprecated_ann_query", + "type": "ANNQueryInfo", + "optional": true + }, + { + "id": 14, + "name": "used_columnar_indexes", + "type": "ColumnarIndexInfo", + "is_repeated": true + } + ] + }, + { + "name": "PartitionTableScan", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 3, + "name": "desc", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "primary_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 5, + "name": "primary_prefix_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 6, + "name": "partition_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 7, + "name": "is_fast_scan", + "type": "bool", + "optional": true + }, + { + "id": 8, + "name": "pushed_down_filter_conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 9, + "name": "runtime_filter_list", + "type": "RuntimeFilter", + "is_repeated": true + }, + { + "id": 10, + "name": "max_wait_time_ms", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 11, + "name": "deprecated_ann_query", + "type": "ANNQueryInfo", + "optional": true + }, + { + "id": 12, + "name": "used_columnar_indexes", + "type": "ColumnarIndexInfo", + "is_repeated": true + } + ] + }, + { + "name": "Join", + "fields": [ + { + "id": 1, + "name": "join_type", + "type": "JoinType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "join_exec_type", + "type": "JoinExecType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "children", + "type": "Executor", + "is_repeated": true + }, + { + "id": 4, + "name": "inner_idx", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "left_join_keys", + "type": "Expr", + "is_repeated": true + }, + { + "id": 6, + "name": "right_join_keys", + "type": "Expr", + "is_repeated": true + }, + { + "id": 7, + "name": "probe_types", + "type": "FieldType", + "is_repeated": true + }, + { + "id": 8, + "name": "build_types", + "type": "FieldType", + "is_repeated": true + }, + { + "id": 9, + "name": "left_conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 10, + "name": "right_conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 11, + "name": "other_conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 12, + "name": "other_eq_conditions_from_in", + "type": "Expr", + "is_repeated": true + }, + { + "id": 13, + "name": "is_null_aware_semi_join", + "type": "bool", + "optional": true + }, + { + "id": 14, + "name": "runtime_filter_list", + "type": "RuntimeFilter", + "is_repeated": true + } + ] + }, + { + "name": "RuntimeFilter", + "fields": [ + { + "id": 1, + "name": "id", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "source_expr_list", + "type": "Expr", + "is_repeated": true + }, + { + "id": 3, + "name": "target_expr_list", + "type": "Expr", + "is_repeated": true + }, + { + "id": 4, + "name": "source_executor_id", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "target_executor_id", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "rf_type", + "type": "RuntimeFilterType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 7, + "name": "rf_mode", + "type": "RuntimeFilterMode", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "IndexScan", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "index_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 4, + "name": "desc", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "unique", + "type": "bool", + "optional": true + }, + { + "id": 6, + "name": "primary_column_ids", + "type": "int64", + "is_repeated": true + }, + { + "id": 7, + "name": "fts_query_info", + "type": "FTSQueryInfo", + "optional": true + } + ] + }, + { + "name": "Selection", + "fields": [ + { + "id": 1, + "name": "conditions", + "type": "Expr", + "is_repeated": true + }, + { + "id": 2, + "name": "rpn_conditions", + "type": "RpnExpr", + "is_repeated": true + }, + { + "id": 3, + "name": "child", + "type": "Executor", + "optional": true + } + ] + }, + { + "name": "Projection", + "fields": [ + { + "id": 1, + "name": "exprs", + "type": "Expr", + "is_repeated": true + }, + { + "id": 2, + "name": "rpn_exprs", + "type": "RpnExpr", + "is_repeated": true + }, + { + "id": 3, + "name": "child", + "type": "Executor", + "optional": true + } + ] + }, + { + "name": "Aggregation", + "fields": [ + { + "id": 1, + "name": "group_by", + "type": "Expr", + "is_repeated": true + }, + { + "id": 4, + "name": "rpn_group_by", + "type": "RpnExpr", + "is_repeated": true + }, + { + "id": 2, + "name": "agg_func", + "type": "Expr", + "is_repeated": true + }, + { + "id": 5, + "name": "rpn_agg_func", + "type": "RpnExpr", + "is_repeated": true + }, + { + "id": 3, + "name": "streamed", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 7, + "name": "pre_agg_mode", + "type": "TiFlashPreAggMode", + "optional": true + } + ] + }, + { + "name": "TopN", + "fields": [ + { + "id": 1, + "name": "order_by", + "type": "ByItem", + "is_repeated": true + }, + { + "id": 2, + "name": "limit", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 4, + "name": "partition_by", + "type": "ByItem", + "is_repeated": true + } + ] + }, + { + "name": "Limit", + "fields": [ + { + "id": 1, + "name": "limit", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 3, + "name": "partition_by", + "type": "ByItem", + "is_repeated": true + } + ] + }, + { + "name": "Kill", + "fields": [ + { + "id": 1, + "name": "connID", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "query", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "ExecutorExecutionSummary", + "fields": [ + { + "id": 1, + "name": "time_processed_ns", + "type": "uint64", + "optional": true + }, + { + "id": 2, + "name": "num_produced_rows", + "type": "uint64", + "optional": true + }, + { + "id": 3, + "name": "num_iterations", + "type": "uint64", + "optional": true + }, + { + "id": 4, + "name": "executor_id", + "type": "string", + "optional": true + }, + { + "id": 5, + "name": "concurrency", + "type": "uint64", + "optional": true + }, + { + "id": 6, + "name": "tiflash_scan_context", + "type": "TiFlashScanContext", + "oneof_parent": "DetailInfo" + }, + { + "id": 7, + "name": "ru_consumption", + "type": "bytes", + "optional": true + }, + { + "id": 8, + "name": "tiflash_wait_summary", + "type": "TiFlashWaitSummary", + "optional": true + }, + { + "id": 9, + "name": "tiflash_network_summary", + "type": "TiFlashNetWorkSummary", + "optional": true + } + ] + }, + { + "name": "TiFlashExecutionInfo", + "fields": [ + { + "id": 1, + "name": "execution_summaries", + "type": "ExecutorExecutionSummary", + "is_repeated": true + } + ] + }, + { + "name": "TiFlashRegionNumOfInstance", + "fields": [ + { + "id": 1, + "name": "instance_id", + "type": "string", + "optional": true + }, + { + "id": 2, + "name": "region_num", + "type": "uint64", + "optional": true + } + ] + }, + { + "name": "TiFlashScanContext", + "fields": [ + { + "id": 1, + "name": "dmfile_scanned_packs", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "deprecated", + "value": "true" + } + ] + }, + { + "id": 2, + "name": "dmfile_skipped_packs", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "deprecated", + "value": "true" + } + ] + }, + { + "id": 3, + "name": "dmfile_data_scanned_rows", + "type": "uint64", + "optional": true + }, + { + "id": 4, + "name": "dmfile_data_skipped_rows", + "type": "uint64", + "optional": true + }, + { + "id": 5, + "name": "total_dmfile_rs_load_ms", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "deprecated", + "value": "true" + } + ] + }, + { + "id": 6, + "name": "total_dmfile_read_ms", + "type": "uint64", + "optional": true + }, + { + "id": 7, + "name": "total_build_snapshot_ms", + "type": "uint64", + "optional": true + }, + { + "id": 8, + "name": "local_regions", + "type": "uint64", + "optional": true + }, + { + "id": 9, + "name": "remote_regions", + "type": "uint64", + "optional": true + }, + { + "id": 10, + "name": "user_read_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 11, + "name": "total_learner_read_ms", + "type": "uint64", + "optional": true + }, + { + "id": 12, + "name": "disagg_read_cache_hit_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 13, + "name": "disagg_read_cache_miss_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 14, + "name": "total_dmfile_rs_check_ms", + "type": "uint64", + "optional": true + }, + { + "id": 15, + "name": "stale_read_regions", + "type": "uint64", + "optional": true + }, + { + "id": 16, + "name": "segments", + "type": "uint64", + "optional": true + }, + { + "id": 17, + "name": "read_tasks", + "type": "uint64", + "optional": true + }, + { + "id": 18, + "name": "delta_rows", + "type": "uint64", + "optional": true + }, + { + "id": 19, + "name": "delta_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 20, + "name": "mvcc_input_rows", + "type": "uint64", + "optional": true + }, + { + "id": 21, + "name": "mvcc_input_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 22, + "name": "mvcc_output_rows", + "type": "uint64", + "optional": true + }, + { + "id": 23, + "name": "lm_skip_rows", + "type": "uint64", + "optional": true + }, + { + "id": 24, + "name": "total_build_inputstream_ms", + "type": "uint64", + "optional": true + }, + { + "id": 25, + "name": "total_build_bitmap_ms", + "type": "uint64", + "optional": true + }, + { + "id": 26, + "name": "min_local_stream_ms", + "type": "uint64", + "optional": true + }, + { + "id": 27, + "name": "max_local_stream_ms", + "type": "uint64", + "optional": true + }, + { + "id": 28, + "name": "min_remote_stream_ms", + "type": "uint64", + "optional": true + }, + { + "id": 29, + "name": "max_remote_stream_ms", + "type": "uint64", + "optional": true + }, + { + "id": 30, + "name": "regions_of_instance", + "type": "TiFlashRegionNumOfInstance", + "is_repeated": true + }, + { + "id": 31, + "name": "dmfile_mvcc_scanned_rows", + "type": "uint64", + "optional": true + }, + { + "id": 32, + "name": "dmfile_mvcc_skipped_rows", + "type": "uint64", + "optional": true + }, + { + "id": 33, + "name": "dmfile_lm_filter_scanned_rows", + "type": "uint64", + "optional": true + }, + { + "id": 34, + "name": "dmfile_lm_filter_skipped_rows", + "type": "uint64", + "optional": true + }, + { + "id": 100, + "name": "vector_idx_load_from_s3", + "type": "uint64", + "optional": true + }, + { + "id": 101, + "name": "vector_idx_load_from_disk", + "type": "uint64", + "optional": true + }, + { + "id": 102, + "name": "vector_idx_load_from_cache", + "type": "uint64", + "optional": true + }, + { + "id": 103, + "name": "vector_idx_load_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 104, + "name": "vector_idx_search_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 105, + "name": "vector_idx_search_visited_nodes", + "type": "uint64", + "optional": true + }, + { + "id": 106, + "name": "vector_idx_search_discarded_nodes", + "type": "uint64", + "optional": true + }, + { + "id": 107, + "name": "vector_idx_read_vec_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 108, + "name": "vector_idx_read_others_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 120, + "name": "inverted_idx_load_from_s3", + "type": "uint32", + "optional": true + }, + { + "id": 121, + "name": "inverted_idx_load_from_disk", + "type": "uint32", + "optional": true + }, + { + "id": 122, + "name": "inverted_idx_load_from_cache", + "type": "uint32", + "optional": true + }, + { + "id": 123, + "name": "inverted_idx_load_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 124, + "name": "inverted_idx_search_time_ms", + "type": "uint64", + "optional": true + }, + { + "id": 125, + "name": "inverted_idx_search_skipped_packs", + "type": "uint32", + "optional": true + }, + { + "id": 126, + "name": "inverted_idx_indexed_rows", + "type": "uint64", + "optional": true + }, + { + "id": 127, + "name": "inverted_idx_search_selected_rows", + "type": "uint64", + "optional": true + }, + { + "id": 150, + "name": "fts_n_from_inmemory_noindex", + "type": "uint32", + "optional": true + }, + { + "id": 151, + "name": "fts_n_from_tiny_index", + "type": "uint32", + "optional": true + }, + { + "id": 152, + "name": "fts_n_from_tiny_noindex", + "type": "uint32", + "optional": true + }, + { + "id": 153, + "name": "fts_n_from_dmf_index", + "type": "uint32", + "optional": true + }, + { + "id": 154, + "name": "fts_n_from_dmf_noindex", + "type": "uint32", + "optional": true + }, + { + "id": 155, + "name": "fts_rows_from_inmemory_noindex", + "type": "uint64", + "optional": true + }, + { + "id": 156, + "name": "fts_rows_from_tiny_index", + "type": "uint64", + "optional": true + }, + { + "id": 157, + "name": "fts_rows_from_tiny_noindex", + "type": "uint64", + "optional": true + }, + { + "id": 158, + "name": "fts_rows_from_dmf_index", + "type": "uint64", + "optional": true + }, + { + "id": 159, + "name": "fts_rows_from_dmf_noindex", + "type": "uint64", + "optional": true + }, + { + "id": 160, + "name": "fts_idx_load_total_ms", + "type": "uint64", + "optional": true + }, + { + "id": 161, + "name": "fts_idx_load_from_cache", + "type": "uint32", + "optional": true + }, + { + "id": 162, + "name": "fts_idx_load_from_column_file", + "type": "uint32", + "optional": true + }, + { + "id": 163, + "name": "fts_idx_load_from_stable_s3", + "type": "uint32", + "optional": true + }, + { + "id": 164, + "name": "fts_idx_load_from_stable_disk", + "type": "uint32", + "optional": true + }, + { + "id": 165, + "name": "fts_idx_search_n", + "type": "uint32", + "optional": true + }, + { + "id": 166, + "name": "fts_idx_search_total_ms", + "type": "uint64", + "optional": true + }, + { + "id": 167, + "name": "fts_idx_dm_search_rows", + "type": "uint64", + "optional": true + }, + { + "id": 168, + "name": "fts_idx_dm_total_read_fts_ms", + "type": "uint64", + "optional": true + }, + { + "id": 169, + "name": "fts_idx_dm_total_read_others_ms", + "type": "uint64", + "optional": true + }, + { + "id": 170, + "name": "fts_idx_tiny_search_rows", + "type": "uint64", + "optional": true + }, + { + "id": 171, + "name": "fts_idx_tiny_total_read_fts_ms", + "type": "uint64", + "optional": true + }, + { + "id": 172, + "name": "fts_idx_tiny_total_read_others_ms", + "type": "uint64", + "optional": true + }, + { + "id": 173, + "name": "fts_brute_total_read_ms", + "type": "uint64", + "optional": true + }, + { + "id": 174, + "name": "fts_brute_total_search_ms", + "type": "uint64", + "optional": true + } + ] + }, + { + "name": "TiFlashWaitSummary", + "fields": [ + { + "id": 1, + "name": "minTSO_wait_ns", + "type": "uint64", + "optional": true + }, + { + "id": 2, + "name": "pipeline_queue_wait_ns", + "type": "uint64", + "optional": true + }, + { + "id": 3, + "name": "pipeline_breaker_wait_ns", + "type": "uint64", + "optional": true + } + ] + }, + { + "name": "TiFlashNetWorkSummary", + "fields": [ + { + "id": 1, + "name": "inner_zone_send_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 2, + "name": "inner_zone_receive_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 3, + "name": "inter_zone_send_bytes", + "type": "uint64", + "optional": true + }, + { + "id": 4, + "name": "inter_zone_receive_bytes", + "type": "uint64", + "optional": true + } + ] + }, + { + "name": "Sort", + "fields": [ + { + "id": 1, + "name": "byItems", + "type": "ByItem", + "is_repeated": true + }, + { + "id": 2, + "name": "isPartialSort", + "type": "bool", + "optional": true + }, + { + "id": 3, + "name": "child", + "type": "Executor", + "optional": true + } + ] + }, + { + "name": "WindowFrameBound", + "fields": [ + { + "id": 1, + "name": "type", + "type": "WindowBoundType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "unbounded", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "offset", + "type": "uint64", + "optional": true + }, + { + "id": 4, + "name": "calcFuncs", + "type": "Expr", + "is_repeated": true + }, + { + "id": 5, + "name": "frame_range", + "type": "Expr", + "optional": true + }, + { + "id": 6, + "name": "cmp_data_type", + "type": "RangeCmpDataType", + "optional": true + } + ] + }, + { + "name": "WindowFrame", + "fields": [ + { + "id": 1, + "name": "type", + "type": "WindowFrameType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "start", + "type": "WindowFrameBound", + "optional": true + }, + { + "id": 3, + "name": "end", + "type": "WindowFrameBound", + "optional": true + } + ] + }, + { + "name": "Window", + "fields": [ + { + "id": 1, + "name": "func_desc", + "type": "Expr", + "is_repeated": true + }, + { + "id": 2, + "name": "partition_by", + "type": "ByItem", + "is_repeated": true + }, + { + "id": 3, + "name": "order_by", + "type": "ByItem", + "is_repeated": true + }, + { + "id": 4, + "name": "frame", + "type": "WindowFrame", + "optional": true + }, + { + "id": 5, + "name": "child", + "type": "Executor", + "optional": true + } + ] + }, + { + "name": "GroupingExpr", + "fields": [ + { + "id": 1, + "name": "grouping_expr", + "type": "Expr", + "is_repeated": true + } + ] + }, + { + "name": "GroupingSet", + "fields": [ + { + "id": 1, + "name": "grouping_exprs", + "type": "GroupingExpr", + "is_repeated": true + } + ] + }, + { + "name": "Expand", + "fields": [ + { + "id": 1, + "name": "grouping_sets", + "type": "GroupingSet", + "is_repeated": true + }, + { + "id": 2, + "name": "child", + "type": "Executor", + "optional": true + }, + { + "id": 3, + "name": "version", + "type": "uint64", + "optional": true + } + ] + }, + { + "name": "ExprSlice", + "fields": [ + { + "id": 1, + "name": "exprs", + "type": "Expr", + "is_repeated": true + } + ] + }, + { + "name": "Expand2", + "fields": [ + { + "id": 1, + "name": "proj_exprs", + "type": "ExprSlice", + "is_repeated": true + }, + { + "id": 2, + "name": "generated_output_names", + "type": "string", + "is_repeated": true + }, + { + "id": 3, + "name": "child", + "type": "Executor", + "optional": true + } + ] + }, + { + "name": "BroadcastQuery", + "fields": [ + { + "id": 1, + "name": "query", + "type": "string", + "optional": true + } + ] + } + ], + "imports": [ + { + "path": "expression.proto" + }, + { + "path": "schema.proto" + }, + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "explain.proto", + "def": { + "enums": [ + { + "name": "TaskType", + "enum_fields": [ + { + "name": "unknown" + }, + { + "name": "root", + "integer": 1 + }, + { + "name": "cop", + "integer": 2 + }, + { + "name": "batchCop", + "integer": 3 + }, + { + "name": "mpp", + "integer": 4 + } + ] + }, + { + "name": "StoreType", + "enum_fields": [ + { + "name": "unspecified" + }, + { + "name": "tidb", + "integer": 1 + }, + { + "name": "tikv", + "integer": 2 + }, + { + "name": "tiflash", + "integer": 3 + } + ] + }, + { + "name": "OperatorLabel", + "enum_fields": [ + { + "name": "empty" + }, + { + "name": "buildSide", + "integer": 1 + }, + { + "name": "probeSide", + "integer": 2 + }, + { + "name": "seedPart", + "integer": 3 + }, + { + "name": "recursivePart", + "integer": 4 + } + ] + } + ], + "messages": [ + { + "name": "ExplainData", + "fields": [ + { + "id": 1, + "name": "main", + "type": "ExplainOperator" + }, + { + "id": 2, + "name": "ctes", + "type": "ExplainOperator", + "is_repeated": true + }, + { + "id": 3, + "name": "with_runtime_stats", + "type": "bool" + }, + { + "id": 4, + "name": "discarded_due_to_too_long", + "type": "bool" + }, + { + "id": 5, + "name": "subqueries", + "type": "ExplainOperator", + "is_repeated": true + } + ] + }, + { + "name": "ExplainOperator", + "fields": [ + { + "id": 1, + "name": "name", + "type": "string" + }, + { + "id": 2, + "name": "children", + "type": "ExplainOperator", + "is_repeated": true + }, + { + "id": 3, + "name": "labels", + "type": "OperatorLabel", + "is_repeated": true + }, + { + "id": 4, + "name": "cost", + "type": "double" + }, + { + "id": 5, + "name": "est_rows", + "type": "double" + }, + { + "id": 6, + "name": "act_rows", + "type": "uint64" + }, + { + "id": 7, + "name": "task_type", + "type": "TaskType" + }, + { + "id": 8, + "name": "store_type", + "type": "StoreType" + }, + { + "id": 9, + "name": "access_objects", + "type": "AccessObject", + "is_repeated": true + }, + { + "id": 10, + "name": "operator_info", + "type": "string" + }, + { + "id": 11, + "name": "root_basic_exec_info", + "type": "string" + }, + { + "id": 12, + "name": "root_group_exec_info", + "type": "string", + "is_repeated": true + }, + { + "id": 13, + "name": "cop_exec_info", + "type": "string" + }, + { + "id": 14, + "name": "memory_bytes", + "type": "int64" + }, + { + "id": 15, + "name": "disk_bytes", + "type": "int64" + }, + { + "id": 16, + "name": "brief_name", + "type": "string" + }, + { + "id": 17, + "name": "brief_operator_info", + "type": "string" + } + ] + }, + { + "name": "AccessObject", + "fields": [ + { + "id": 1, + "name": "scan_object", + "type": "ScanAccessObject", + "oneof_parent": "access_object" + }, + { + "id": 2, + "name": "dynamic_partition_objects", + "type": "DynamicPartitionAccessObjects", + "oneof_parent": "access_object" + }, + { + "id": 3, + "name": "other_object", + "type": "string", + "oneof_parent": "access_object" + } + ] + }, + { + "name": "DynamicPartitionAccessObjects", + "fields": [ + { + "id": 1, + "name": "objects", + "type": "DynamicPartitionAccessObject", + "is_repeated": true + } + ] + }, + { + "name": "DynamicPartitionAccessObject", + "fields": [ + { + "id": 1, + "name": "database", + "type": "string" + }, + { + "id": 2, + "name": "table", + "type": "string" + }, + { + "id": 3, + "name": "all_partitions", + "type": "bool" + }, + { + "id": 4, + "name": "partitions", + "type": "string", + "is_repeated": true + } + ] + }, + { + "name": "ScanAccessObject", + "fields": [ + { + "id": 1, + "name": "database", + "type": "string" + }, + { + "id": 2, + "name": "table", + "type": "string" + }, + { + "id": 3, + "name": "indexes", + "type": "IndexAccess", + "is_repeated": true + }, + { + "id": 4, + "name": "partitions", + "type": "string", + "is_repeated": true + } + ] + }, + { + "name": "IndexAccess", + "fields": [ + { + "id": 1, + "name": "name", + "type": "string" + }, + { + "id": 2, + "name": "cols", + "type": "string", + "is_repeated": true + }, + { + "id": 3, + "name": "is_clustered_index", + "type": "bool" + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "expression.proto", + "def": { + "enums": [ + { + "name": "ExprType", + "enum_fields": [ + { + "name": "Null" + }, + { + "name": "Int64", + "integer": 1 + }, + { + "name": "Uint64", + "integer": 2 + }, + { + "name": "Float32", + "integer": 3 + }, + { + "name": "Float64", + "integer": 4 + }, + { + "name": "String", + "integer": 5 + }, + { + "name": "Bytes", + "integer": 6 + }, + { + "name": "MysqlBit", + "integer": 101 + }, + { + "name": "MysqlDecimal", + "integer": 102 + }, + { + "name": "MysqlDuration", + "integer": 103 + }, + { + "name": "MysqlEnum", + "integer": 104 + }, + { + "name": "MysqlHex", + "integer": 105 + }, + { + "name": "MysqlSet", + "integer": 106 + }, + { + "name": "MysqlTime", + "integer": 107 + }, + { + "name": "MysqlJson", + "integer": 108 + }, + { + "name": "TiDBVectorFloat32", + "integer": 121 + }, + { + "name": "ValueList", + "integer": 151 + }, + { + "name": "ColumnRef", + "integer": 201 + }, + { + "name": "Count", + "integer": 3001 + }, + { + "name": "Sum", + "integer": 3002 + }, + { + "name": "Avg", + "integer": 3003 + }, + { + "name": "Min", + "integer": 3004 + }, + { + "name": "Max", + "integer": 3005 + }, + { + "name": "First", + "integer": 3006 + }, + { + "name": "GroupConcat", + "integer": 3007 + }, + { + "name": "Agg_BitAnd", + "integer": 3008 + }, + { + "name": "Agg_BitOr", + "integer": 3009 + }, + { + "name": "Agg_BitXor", + "integer": 3010 + }, + { + "name": "Std", + "integer": 3011 + }, + { + "name": "Stddev", + "integer": 3012 + }, + { + "name": "StddevPop", + "integer": 3013 + }, + { + "name": "StddevSamp", + "integer": 3014 + }, + { + "name": "VarPop", + "integer": 3015 + }, + { + "name": "VarSamp", + "integer": 3016 + }, + { + "name": "Variance", + "integer": 3017 + }, + { + "name": "JsonArrayAgg", + "integer": 3018 + }, + { + "name": "JsonObjectAgg", + "integer": 3019 + }, + { + "name": "ApproxCountDistinct", + "integer": 3020 + }, + { + "name": "RowNumber", + "integer": 4001 + }, + { + "name": "Rank", + "integer": 4002 + }, + { + "name": "DenseRank", + "integer": 4003 + }, + { + "name": "CumeDist", + "integer": 4004 + }, + { + "name": "PercentRank", + "integer": 4005 + }, + { + "name": "Ntile", + "integer": 4006 + }, + { + "name": "Lead", + "integer": 4007 + }, + { + "name": "Lag", + "integer": 4008 + }, + { + "name": "FirstValue", + "integer": 4009 + }, + { + "name": "LastValue", + "integer": 4010 + }, + { + "name": "NthValue", + "integer": 4011 + }, + { + "name": "ScalarFunc", + "integer": 10000 + } + ] + }, + { + "name": "ScalarFuncSig", + "enum_fields": [ + { + "name": "Unspecified" + }, + { + "name": "CastIntAsInt", + "integer": 1 + }, + { + "name": "CastIntAsReal", + "integer": 2 + }, + { + "name": "CastIntAsString", + "integer": 3 + }, + { + "name": "CastIntAsDecimal", + "integer": 4 + }, + { + "name": "CastIntAsTime", + "integer": 5 + }, + { + "name": "CastIntAsDuration", + "integer": 6 + }, + { + "name": "CastIntAsJson", + "integer": 7 + }, + { + "name": "CastRealAsInt", + "integer": 10 + }, + { + "name": "CastRealAsReal", + "integer": 11 + }, + { + "name": "CastRealAsString", + "integer": 12 + }, + { + "name": "CastRealAsDecimal", + "integer": 13 + }, + { + "name": "CastRealAsTime", + "integer": 14 + }, + { + "name": "CastRealAsDuration", + "integer": 15 + }, + { + "name": "CastRealAsJson", + "integer": 16 + }, + { + "name": "CastDecimalAsInt", + "integer": 20 + }, + { + "name": "CastDecimalAsReal", + "integer": 21 + }, + { + "name": "CastDecimalAsString", + "integer": 22 + }, + { + "name": "CastDecimalAsDecimal", + "integer": 23 + }, + { + "name": "CastDecimalAsTime", + "integer": 24 + }, + { + "name": "CastDecimalAsDuration", + "integer": 25 + }, + { + "name": "CastDecimalAsJson", + "integer": 26 + }, + { + "name": "CastStringAsInt", + "integer": 30 + }, + { + "name": "CastStringAsReal", + "integer": 31 + }, + { + "name": "CastStringAsString", + "integer": 32 + }, + { + "name": "CastStringAsDecimal", + "integer": 33 + }, + { + "name": "CastStringAsTime", + "integer": 34 + }, + { + "name": "CastStringAsDuration", + "integer": 35 + }, + { + "name": "CastStringAsJson", + "integer": 36 + }, + { + "name": "CastTimeAsInt", + "integer": 40 + }, + { + "name": "CastTimeAsReal", + "integer": 41 + }, + { + "name": "CastTimeAsString", + "integer": 42 + }, + { + "name": "CastTimeAsDecimal", + "integer": 43 + }, + { + "name": "CastTimeAsTime", + "integer": 44 + }, + { + "name": "CastTimeAsDuration", + "integer": 45 + }, + { + "name": "CastTimeAsJson", + "integer": 46 + }, + { + "name": "CastDurationAsInt", + "integer": 50 + }, + { + "name": "CastDurationAsReal", + "integer": 51 + }, + { + "name": "CastDurationAsString", + "integer": 52 + }, + { + "name": "CastDurationAsDecimal", + "integer": 53 + }, + { + "name": "CastDurationAsTime", + "integer": 54 + }, + { + "name": "CastDurationAsDuration", + "integer": 55 + }, + { + "name": "CastDurationAsJson", + "integer": 56 + }, + { + "name": "CastJsonAsInt", + "integer": 60 + }, + { + "name": "CastJsonAsReal", + "integer": 61 + }, + { + "name": "CastJsonAsString", + "integer": 62 + }, + { + "name": "CastJsonAsDecimal", + "integer": 63 + }, + { + "name": "CastJsonAsTime", + "integer": 64 + }, + { + "name": "CastJsonAsDuration", + "integer": 65 + }, + { + "name": "CastJsonAsJson", + "integer": 66 + }, + { + "name": "CoalesceInt", + "integer": 4201 + }, + { + "name": "CoalesceReal", + "integer": 4202 + }, + { + "name": "CoalesceDecimal", + "integer": 4203 + }, + { + "name": "CoalesceString", + "integer": 4204 + }, + { + "name": "CoalesceTime", + "integer": 4205 + }, + { + "name": "CoalesceDuration", + "integer": 4206 + }, + { + "name": "CoalesceJson", + "integer": 4207 + }, + { + "name": "LTInt", + "integer": 100 + }, + { + "name": "LTReal", + "integer": 101 + }, + { + "name": "LTDecimal", + "integer": 102 + }, + { + "name": "LTString", + "integer": 103 + }, + { + "name": "LTTime", + "integer": 104 + }, + { + "name": "LTDuration", + "integer": 105 + }, + { + "name": "LTJson", + "integer": 106 + }, + { + "name": "LEInt", + "integer": 110 + }, + { + "name": "LEReal", + "integer": 111 + }, + { + "name": "LEDecimal", + "integer": 112 + }, + { + "name": "LEString", + "integer": 113 + }, + { + "name": "LETime", + "integer": 114 + }, + { + "name": "LEDuration", + "integer": 115 + }, + { + "name": "LEJson", + "integer": 116 + }, + { + "name": "GTInt", + "integer": 120 + }, + { + "name": "GTReal", + "integer": 121 + }, + { + "name": "GTDecimal", + "integer": 122 + }, + { + "name": "GTString", + "integer": 123 + }, + { + "name": "GTTime", + "integer": 124 + }, + { + "name": "GTDuration", + "integer": 125 + }, + { + "name": "GTJson", + "integer": 126 + }, + { + "name": "GreatestInt", + "integer": 4215 + }, + { + "name": "GreatestReal", + "integer": 4216 + }, + { + "name": "GreatestDecimal", + "integer": 4217 + }, + { + "name": "GreatestString", + "integer": 4218 + }, + { + "name": "GreatestTime", + "integer": 4219 + }, + { + "name": "LeastInt", + "integer": 4220 + }, + { + "name": "LeastReal", + "integer": 4221 + }, + { + "name": "LeastDecimal", + "integer": 4222 + }, + { + "name": "LeastString", + "integer": 4223 + }, + { + "name": "LeastTime", + "integer": 4224 + }, + { + "name": "IntervalInt", + "integer": 4225 + }, + { + "name": "IntervalReal", + "integer": 4226 + }, + { + "name": "GEInt", + "integer": 130 + }, + { + "name": "GEReal", + "integer": 131 + }, + { + "name": "GEDecimal", + "integer": 132 + }, + { + "name": "GEString", + "integer": 133 + }, + { + "name": "GETime", + "integer": 134 + }, + { + "name": "GEDuration", + "integer": 135 + }, + { + "name": "GEJson", + "integer": 136 + }, + { + "name": "EQInt", + "integer": 140 + }, + { + "name": "EQReal", + "integer": 141 + }, + { + "name": "EQDecimal", + "integer": 142 + }, + { + "name": "EQString", + "integer": 143 + }, + { + "name": "EQTime", + "integer": 144 + }, + { + "name": "EQDuration", + "integer": 145 + }, + { + "name": "EQJson", + "integer": 146 + }, + { + "name": "NEInt", + "integer": 150 + }, + { + "name": "NEReal", + "integer": 151 + }, + { + "name": "NEDecimal", + "integer": 152 + }, + { + "name": "NEString", + "integer": 153 + }, + { + "name": "NETime", + "integer": 154 + }, + { + "name": "NEDuration", + "integer": 155 + }, + { + "name": "NEJson", + "integer": 156 + }, + { + "name": "NullEQInt", + "integer": 160 + }, + { + "name": "NullEQReal", + "integer": 161 + }, + { + "name": "NullEQDecimal", + "integer": 162 + }, + { + "name": "NullEQString", + "integer": 163 + }, + { + "name": "NullEQTime", + "integer": 164 + }, + { + "name": "NullEQDuration", + "integer": 165 + }, + { + "name": "NullEQJson", + "integer": 166 + }, + { + "name": "PlusReal", + "integer": 200 + }, + { + "name": "PlusDecimal", + "integer": 201 + }, + { + "name": "PlusInt", + "integer": 203 + }, + { + "name": "MinusReal", + "integer": 204 + }, + { + "name": "MinusDecimal", + "integer": 205 + }, + { + "name": "MinusInt", + "integer": 207 + }, + { + "name": "MultiplyReal", + "integer": 208 + }, + { + "name": "MultiplyDecimal", + "integer": 209 + }, + { + "name": "MultiplyInt", + "integer": 210 + }, + { + "name": "DivideReal", + "integer": 211 + }, + { + "name": "DivideDecimal", + "integer": 212 + }, + { + "name": "IntDivideInt", + "integer": 213 + }, + { + "name": "IntDivideDecimal", + "integer": 214 + }, + { + "name": "ModReal", + "integer": 215 + }, + { + "name": "ModDecimal", + "integer": 216 + }, + { + "name": "ModInt", + "integer": 217 + }, + { + "name": "MultiplyIntUnsigned", + "integer": 218 + }, + { + "name": "PlusIntUnsignedUnsigned", + "integer": 219 + }, + { + "name": "PlusIntUnsignedSigned", + "integer": 220 + }, + { + "name": "PlusIntSignedUnsigned", + "integer": 221 + }, + { + "name": "PlusIntSignedSigned", + "integer": 222 + }, + { + "name": "ModIntUnsignedUnsigned", + "integer": 223 + }, + { + "name": "ModIntUnsignedSigned", + "integer": 224 + }, + { + "name": "ModIntSignedUnsigned", + "integer": 225 + }, + { + "name": "ModIntSignedSigned", + "integer": 226 + }, + { + "name": "MinusIntUnsignedUnsigned", + "integer": 227 + }, + { + "name": "MinusIntUnsignedSigned", + "integer": 228 + }, + { + "name": "MinusIntSignedUnsigned", + "integer": 229 + }, + { + "name": "MinusIntSignedSigned", + "integer": 230 + }, + { + "name": "MinusIntForcedUnsignedUnsigned", + "integer": 231 + }, + { + "name": "MinusIntForcedUnsignedSigned", + "integer": 232 + }, + { + "name": "MinusIntForcedSignedUnsigned", + "integer": 233 + }, + { + "name": "IntDivideIntUnsignedUnsigned", + "integer": 234 + }, + { + "name": "IntDivideIntUnsignedSigned", + "integer": 235 + }, + { + "name": "IntDivideIntSignedSigned", + "integer": 236 + }, + { + "name": "IntDivideIntSignedUnsigned", + "integer": 237 + }, + { + "name": "AbsInt", + "integer": 2101 + }, + { + "name": "AbsUInt", + "integer": 2102 + }, + { + "name": "AbsReal", + "integer": 2103 + }, + { + "name": "AbsDecimal", + "integer": 2104 + }, + { + "name": "CeilIntToDec", + "integer": 2105 + }, + { + "name": "CeilIntToInt", + "integer": 2106 + }, + { + "name": "CeilDecToInt", + "integer": 2107 + }, + { + "name": "CeilDecToDec", + "integer": 2108 + }, + { + "name": "CeilReal", + "integer": 2109 + }, + { + "name": "FloorIntToDec", + "integer": 2110 + }, + { + "name": "FloorIntToInt", + "integer": 2111 + }, + { + "name": "FloorDecToInt", + "integer": 2112 + }, + { + "name": "FloorDecToDec", + "integer": 2113 + }, + { + "name": "FloorReal", + "integer": 2114 + }, + { + "name": "RoundReal", + "integer": 2121 + }, + { + "name": "RoundInt", + "integer": 2122 + }, + { + "name": "RoundDec", + "integer": 2123 + }, + { + "name": "RoundWithFracReal", + "integer": 2124 + }, + { + "name": "RoundWithFracInt", + "integer": 2125 + }, + { + "name": "RoundWithFracDec", + "integer": 2126 + }, + { + "name": "Log1Arg", + "integer": 2131 + }, + { + "name": "Log2Args", + "integer": 2132 + }, + { + "name": "Log2", + "integer": 2133 + }, + { + "name": "Log10", + "integer": 2134 + }, + { + "name": "Rand", + "integer": 2135 + }, + { + "name": "RandWithSeedFirstGen", + "integer": 2136 + }, + { + "name": "Pow", + "integer": 2137 + }, + { + "name": "Conv", + "integer": 2138 + }, + { + "name": "CRC32", + "integer": 2139 + }, + { + "name": "Sign", + "integer": 2140 + }, + { + "name": "Sqrt", + "integer": 2141 + }, + { + "name": "Acos", + "integer": 2142 + }, + { + "name": "Asin", + "integer": 2143 + }, + { + "name": "Atan1Arg", + "integer": 2144 + }, + { + "name": "Atan2Args", + "integer": 2145 + }, + { + "name": "Cos", + "integer": 2146 + }, + { + "name": "Cot", + "integer": 2147 + }, + { + "name": "Degrees", + "integer": 2148 + }, + { + "name": "Exp", + "integer": 2149 + }, + { + "name": "PI", + "integer": 2150 + }, + { + "name": "Radians", + "integer": 2151 + }, + { + "name": "Sin", + "integer": 2152 + }, + { + "name": "Tan", + "integer": 2153 + }, + { + "name": "TruncateInt", + "integer": 2154 + }, + { + "name": "TruncateReal", + "integer": 2155 + }, + { + "name": "TruncateDecimal", + "integer": 2156 + }, + { + "name": "TruncateUint", + "integer": 2157 + }, + { + "name": "LogicalAnd", + "integer": 3101 + }, + { + "name": "LogicalOr", + "integer": 3102 + }, + { + "name": "LogicalXor", + "integer": 3103 + }, + { + "name": "UnaryNotInt", + "integer": 3104 + }, + { + "name": "UnaryNotDecimal", + "integer": 3105 + }, + { + "name": "UnaryNotReal", + "integer": 3106 + }, + { + "name": "UnaryNotJSON", + "integer": 3107 + }, + { + "name": "UnaryMinusInt", + "integer": 3108 + }, + { + "name": "UnaryMinusReal", + "integer": 3109 + }, + { + "name": "UnaryMinusDecimal", + "integer": 3110 + }, + { + "name": "DecimalIsNull", + "integer": 3111 + }, + { + "name": "DurationIsNull", + "integer": 3112 + }, + { + "name": "RealIsNull", + "integer": 3113 + }, + { + "name": "StringIsNull", + "integer": 3114 + }, + { + "name": "TimeIsNull", + "integer": 3115 + }, + { + "name": "IntIsNull", + "integer": 3116 + }, + { + "name": "JsonIsNull", + "integer": 3117 + }, + { + "name": "BitAndSig", + "integer": 3118 + }, + { + "name": "BitOrSig", + "integer": 3119 + }, + { + "name": "BitXorSig", + "integer": 3120 + }, + { + "name": "BitNegSig", + "integer": 3121 + }, + { + "name": "IntIsTrue", + "integer": 3122 + }, + { + "name": "RealIsTrue", + "integer": 3123 + }, + { + "name": "DecimalIsTrue", + "integer": 3124 + }, + { + "name": "IntIsFalse", + "integer": 3125 + }, + { + "name": "RealIsFalse", + "integer": 3126 + }, + { + "name": "DecimalIsFalse", + "integer": 3127 + }, + { + "name": "LeftShift", + "integer": 3129 + }, + { + "name": "RightShift", + "integer": 3130 + }, + { + "name": "IntIsTrueWithNull", + "integer": 3142 + }, + { + "name": "RealIsTrueWithNull", + "integer": 3143 + }, + { + "name": "DecimalIsTrueWithNull", + "integer": 3144 + }, + { + "name": "IntIsFalseWithNull", + "integer": 3145 + }, + { + "name": "RealIsFalseWithNull", + "integer": 3146 + }, + { + "name": "DecimalIsFalseWithNull", + "integer": 3147 + }, + { + "name": "BitCount", + "integer": 3128 + }, + { + "name": "GetParamString", + "integer": 3131 + }, + { + "name": "GetVar", + "integer": 3132 + }, + { + "name": "RowSig", + "integer": 3133 + }, + { + "name": "SetVar", + "integer": 3134 + }, + { + "name": "ValuesDecimal", + "integer": 3135 + }, + { + "name": "ValuesDuration", + "integer": 3136 + }, + { + "name": "ValuesInt", + "integer": 3137 + }, + { + "name": "ValuesJSON", + "integer": 3138 + }, + { + "name": "ValuesReal", + "integer": 3139 + }, + { + "name": "ValuesString", + "integer": 3140 + }, + { + "name": "ValuesTime", + "integer": 3141 + }, + { + "name": "InInt", + "integer": 4001 + }, + { + "name": "InReal", + "integer": 4002 + }, + { + "name": "InDecimal", + "integer": 4003 + }, + { + "name": "InString", + "integer": 4004 + }, + { + "name": "InTime", + "integer": 4005 + }, + { + "name": "InDuration", + "integer": 4006 + }, + { + "name": "InJson", + "integer": 4007 + }, + { + "name": "IfNullInt", + "integer": 4101 + }, + { + "name": "IfNullReal", + "integer": 4102 + }, + { + "name": "IfNullDecimal", + "integer": 4103 + }, + { + "name": "IfNullString", + "integer": 4104 + }, + { + "name": "IfNullTime", + "integer": 4105 + }, + { + "name": "IfNullDuration", + "integer": 4106 + }, + { + "name": "IfInt", + "integer": 4107 + }, + { + "name": "IfReal", + "integer": 4108 + }, + { + "name": "IfDecimal", + "integer": 4109 + }, + { + "name": "IfString", + "integer": 4110 + }, + { + "name": "IfTime", + "integer": 4111 + }, + { + "name": "IfDuration", + "integer": 4112 + }, + { + "name": "IfNullJson", + "integer": 4113 + }, + { + "name": "IfJson", + "integer": 4114 + }, + { + "name": "CaseWhenInt", + "integer": 4208 + }, + { + "name": "CaseWhenReal", + "integer": 4209 + }, + { + "name": "CaseWhenDecimal", + "integer": 4210 + }, + { + "name": "CaseWhenString", + "integer": 4211 + }, + { + "name": "CaseWhenTime", + "integer": 4212 + }, + { + "name": "CaseWhenDuration", + "integer": 4213 + }, + { + "name": "CaseWhenJson", + "integer": 4214 + }, + { + "name": "AesDecrypt", + "integer": 4501 + }, + { + "name": "AesEncrypt", + "integer": 4502 + }, + { + "name": "Compress", + "integer": 4503 + }, + { + "name": "MD5", + "integer": 4504 + }, + { + "name": "Password", + "integer": 4505 + }, + { + "name": "RandomBytes", + "integer": 4506 + }, + { + "name": "SHA1", + "integer": 4507 + }, + { + "name": "SHA2", + "integer": 4508 + }, + { + "name": "Uncompress", + "integer": 4509 + }, + { + "name": "UncompressedLength", + "integer": 4510 + }, + { + "name": "AesDecryptIV", + "integer": 4511 + }, + { + "name": "AesEncryptIV", + "integer": 4512 + }, + { + "name": "Encode", + "integer": 4513 + }, + { + "name": "Decode", + "integer": 4514 + }, + { + "name": "SM3", + "integer": 4515 + }, + { + "name": "Database", + "integer": 4521 + }, + { + "name": "FoundRows", + "integer": 4522 + }, + { + "name": "CurrentUser", + "integer": 4523 + }, + { + "name": "User", + "integer": 4524 + }, + { + "name": "ConnectionID", + "integer": 4525 + }, + { + "name": "LastInsertID", + "integer": 4526 + }, + { + "name": "LastInsertIDWithID", + "integer": 4527 + }, + { + "name": "Version", + "integer": 4528 + }, + { + "name": "TiDBVersion", + "integer": 4529 + }, + { + "name": "RowCount", + "integer": 4530 + }, + { + "name": "Sleep", + "integer": 4551 + }, + { + "name": "Lock", + "integer": 4552 + }, + { + "name": "ReleaseLock", + "integer": 4553 + }, + { + "name": "DecimalAnyValue", + "integer": 4554 + }, + { + "name": "DurationAnyValue", + "integer": 4555 + }, + { + "name": "IntAnyValue", + "integer": 4556 + }, + { + "name": "JSONAnyValue", + "integer": 4557 + }, + { + "name": "RealAnyValue", + "integer": 4558 + }, + { + "name": "StringAnyValue", + "integer": 4559 + }, + { + "name": "TimeAnyValue", + "integer": 4560 + }, + { + "name": "InetAton", + "integer": 4561 + }, + { + "name": "InetNtoa", + "integer": 4562 + }, + { + "name": "Inet6Aton", + "integer": 4563 + }, + { + "name": "Inet6Ntoa", + "integer": 4564 + }, + { + "name": "IsIPv4", + "integer": 4565 + }, + { + "name": "IsIPv4Compat", + "integer": 4566 + }, + { + "name": "IsIPv4Mapped", + "integer": 4567 + }, + { + "name": "IsIPv6", + "integer": 4568 + }, + { + "name": "UUID", + "integer": 4569 + }, + { + "name": "VitessHash", + "integer": 4570 + }, + { + "name": "IsUUID", + "integer": 4571 + }, + { + "name": "TiDBShard", + "integer": 4572 + }, + { + "name": "GroupingSig", + "integer": 4573 + }, + { + "name": "IlikeSig", + "integer": 4309 + }, + { + "name": "LikeSig", + "integer": 4310 + }, + { + "name": "RegexpSig", + "integer": 4311 + }, + { + "name": "RegexpUTF8Sig", + "integer": 4312 + }, + { + "name": "RegexpLikeSig", + "integer": 4313 + }, + { + "name": "RegexpLikeUTF8Sig", + "integer": 4314 + }, + { + "name": "RegexpInStrSig", + "integer": 4315 + }, + { + "name": "RegexpInStrUTF8Sig", + "integer": 4316 + }, + { + "name": "RegexpReplaceSig", + "integer": 4317 + }, + { + "name": "RegexpReplaceUTF8Sig", + "integer": 4318 + }, + { + "name": "RegexpSubstrSig", + "integer": 4319 + }, + { + "name": "RegexpSubstrUTF8Sig", + "integer": 4320 + }, + { + "name": "JsonExtractSig", + "integer": 5001 + }, + { + "name": "JsonUnquoteSig", + "integer": 5002 + }, + { + "name": "JsonTypeSig", + "integer": 5003 + }, + { + "name": "JsonSetSig", + "integer": 5004 + }, + { + "name": "JsonInsertSig", + "integer": 5005 + }, + { + "name": "JsonReplaceSig", + "integer": 5006 + }, + { + "name": "JsonRemoveSig", + "integer": 5007 + }, + { + "name": "JsonMergeSig", + "integer": 5008 + }, + { + "name": "JsonObjectSig", + "integer": 5009 + }, + { + "name": "JsonArraySig", + "integer": 5010 + }, + { + "name": "JsonValidJsonSig", + "integer": 5011 + }, + { + "name": "JsonContainsSig", + "integer": 5012 + }, + { + "name": "JsonArrayAppendSig", + "integer": 5013 + }, + { + "name": "JsonArrayInsertSig", + "integer": 5014 + }, + { + "name": "JsonMergePatchSig", + "integer": 5015 + }, + { + "name": "JsonMergePreserveSig", + "integer": 5016 + }, + { + "name": "JsonContainsPathSig", + "integer": 5017 + }, + { + "name": "JsonPrettySig", + "integer": 5018 + }, + { + "name": "JsonQuoteSig", + "integer": 5019 + }, + { + "name": "JsonSearchSig", + "integer": 5020 + }, + { + "name": "JsonStorageSizeSig", + "integer": 5021 + }, + { + "name": "JsonDepthSig", + "integer": 5022 + }, + { + "name": "JsonKeysSig", + "integer": 5023 + }, + { + "name": "JsonLengthSig", + "integer": 5024 + }, + { + "name": "JsonKeys2ArgsSig", + "integer": 5025 + }, + { + "name": "JsonValidStringSig", + "integer": 5026 + }, + { + "name": "JsonValidOthersSig", + "integer": 5027 + }, + { + "name": "JsonStorageFreeSig", + "integer": 5028 + }, + { + "name": "JsonMemberOfSig", + "integer": 5029 + }, + { + "name": "VecAsTextSig", + "integer": 5110 + }, + { + "name": "VecFromTextSig", + "integer": 5111 + }, + { + "name": "VecDimsSig", + "integer": 5112 + }, + { + "name": "VecL1DistanceSig", + "integer": 5113 + }, + { + "name": "VecL2DistanceSig", + "integer": 5114 + }, + { + "name": "VecNegativeInnerProductSig", + "integer": 5115 + }, + { + "name": "VecCosineDistanceSig", + "integer": 5116 + }, + { + "name": "VecL2NormSig", + "integer": 5117 + }, + { + "name": "CastStringAsVectorFloat32", + "integer": 5180 + }, + { + "name": "CastVectorFloat32AsInt", + "integer": 5181 + }, + { + "name": "CastVectorFloat32AsReal", + "integer": 5182 + }, + { + "name": "CastVectorFloat32AsString", + "integer": 5183 + }, + { + "name": "CastVectorFloat32AsDecimal", + "integer": 5184 + }, + { + "name": "CastVectorFloat32AsTime", + "integer": 5185 + }, + { + "name": "CastVectorFloat32AsDuration", + "integer": 5186 + }, + { + "name": "CastVectorFloat32AsJson", + "integer": 5187 + }, + { + "name": "CastVectorFloat32AsVectorFloat32", + "integer": 5188 + }, + { + "name": "PlusVectorFloat32", + "integer": 5141 + }, + { + "name": "MinusVectorFloat32", + "integer": 5142 + }, + { + "name": "MultiplyVectorFloat32", + "integer": 5143 + }, + { + "name": "VectorFloat32AnyValue", + "integer": 5144 + }, + { + "name": "CoalesceVectorFloat32", + "integer": 5145 + }, + { + "name": "LTVectorFloat32", + "integer": 5146 + }, + { + "name": "LEVectorFloat32", + "integer": 5147 + }, + { + "name": "GTVectorFloat32", + "integer": 5148 + }, + { + "name": "GreatestVectorFloat32", + "integer": 5149 + }, + { + "name": "LeastVectorFloat32", + "integer": 5150 + }, + { + "name": "GEVectorFloat32", + "integer": 5151 + }, + { + "name": "EQVectorFloat32", + "integer": 5152 + }, + { + "name": "NEVectorFloat32", + "integer": 5153 + }, + { + "name": "NullEQVectorFloat32", + "integer": 5154 + }, + { + "name": "VectorFloat32IsNull", + "integer": 5155 + }, + { + "name": "VectorFloat32IsTrue", + "integer": 5156 + }, + { + "name": "VectorFloat32IsFalse", + "integer": 5157 + }, + { + "name": "VectorFloat32IsTrueWithNull", + "integer": 5158 + }, + { + "name": "VectorFloat32IsFalseWithNull", + "integer": 5159 + }, + { + "name": "IfNullVectorFloat32", + "integer": 5160 + }, + { + "name": "IfVectorFloat32", + "integer": 5161 + }, + { + "name": "CaseWhenVectorFloat32", + "integer": 5162 + }, + { + "name": "FTSMatchWord", + "integer": 5201 + }, + { + "name": "FTSMatchExpression", + "integer": 5202 + }, + { + "name": "FTSMatchPrefix", + "integer": 5203 + }, + { + "name": "FTSMatchRegexp", + "integer": 5204 + }, + { + "name": "DateFormatSig", + "integer": 6001 + }, + { + "name": "DateLiteral", + "integer": 6002 + }, + { + "name": "DateDiff", + "integer": 6003 + }, + { + "name": "NullTimeDiff", + "integer": 6004 + }, + { + "name": "TimeStringTimeDiff", + "integer": 6005 + }, + { + "name": "DurationStringTimeDiff", + "integer": 6006 + }, + { + "name": "DurationDurationTimeDiff", + "integer": 6007 + }, + { + "name": "StringTimeTimeDiff", + "integer": 6008 + }, + { + "name": "StringDurationTimeDiff", + "integer": 6009 + }, + { + "name": "StringStringTimeDiff", + "integer": 6010 + }, + { + "name": "TimeTimeTimeDiff", + "integer": 6011 + }, + { + "name": "Date", + "integer": 6012 + }, + { + "name": "Hour", + "integer": 6013 + }, + { + "name": "Minute", + "integer": 6014 + }, + { + "name": "Second", + "integer": 6015 + }, + { + "name": "MicroSecond", + "integer": 6016 + }, + { + "name": "Month", + "integer": 6017 + }, + { + "name": "MonthName", + "integer": 6018 + }, + { + "name": "NowWithArg", + "integer": 6019 + }, + { + "name": "NowWithoutArg", + "integer": 6020 + }, + { + "name": "DayName", + "integer": 6021 + }, + { + "name": "DayOfMonth", + "integer": 6022 + }, + { + "name": "DayOfWeek", + "integer": 6023 + }, + { + "name": "DayOfYear", + "integer": 6024 + }, + { + "name": "WeekWithMode", + "integer": 6025 + }, + { + "name": "WeekWithoutMode", + "integer": 6026 + }, + { + "name": "WeekDay", + "integer": 6027 + }, + { + "name": "WeekOfYear", + "integer": 6028 + }, + { + "name": "Year", + "integer": 6029 + }, + { + "name": "YearWeekWithMode", + "integer": 6030 + }, + { + "name": "YearWeekWithoutMode", + "integer": 6031 + }, + { + "name": "GetFormat", + "integer": 6032 + }, + { + "name": "SysDateWithFsp", + "integer": 6033 + }, + { + "name": "SysDateWithoutFsp", + "integer": 6034 + }, + { + "name": "CurrentDate", + "integer": 6035 + }, + { + "name": "CurrentTime0Arg", + "integer": 6036 + }, + { + "name": "CurrentTime1Arg", + "integer": 6037 + }, + { + "name": "Time", + "integer": 6038 + }, + { + "name": "TimeLiteral", + "integer": 6039 + }, + { + "name": "UTCDate", + "integer": 6040 + }, + { + "name": "UTCTimestampWithArg", + "integer": 6041 + }, + { + "name": "UTCTimestampWithoutArg", + "integer": 6042 + }, + { + "name": "AddDatetimeAndDuration", + "integer": 6043 + }, + { + "name": "AddDatetimeAndString", + "integer": 6044 + }, + { + "name": "AddTimeDateTimeNull", + "integer": 6045 + }, + { + "name": "AddStringAndDuration", + "integer": 6046 + }, + { + "name": "AddStringAndString", + "integer": 6047 + }, + { + "name": "AddTimeStringNull", + "integer": 6048 + }, + { + "name": "AddDurationAndDuration", + "integer": 6049 + }, + { + "name": "AddDurationAndString", + "integer": 6050 + }, + { + "name": "AddTimeDurationNull", + "integer": 6051 + }, + { + "name": "AddDateAndDuration", + "integer": 6052 + }, + { + "name": "AddDateAndString", + "integer": 6053 + }, + { + "name": "SubDatetimeAndDuration", + "integer": 6054 + }, + { + "name": "SubDatetimeAndString", + "integer": 6055 + }, + { + "name": "SubTimeDateTimeNull", + "integer": 6056 + }, + { + "name": "SubStringAndDuration", + "integer": 6057 + }, + { + "name": "SubStringAndString", + "integer": 6058 + }, + { + "name": "SubTimeStringNull", + "integer": 6059 + }, + { + "name": "SubDurationAndDuration", + "integer": 6060 + }, + { + "name": "SubDurationAndString", + "integer": 6061 + }, + { + "name": "SubTimeDurationNull", + "integer": 6062 + }, + { + "name": "SubDateAndDuration", + "integer": 6063 + }, + { + "name": "SubDateAndString", + "integer": 6064 + }, + { + "name": "UnixTimestampCurrent", + "integer": 6065 + }, + { + "name": "UnixTimestampInt", + "integer": 6066 + }, + { + "name": "UnixTimestampDec", + "integer": 6067 + }, + { + "name": "ConvertTz", + "integer": 6068 + }, + { + "name": "MakeDate", + "integer": 6069 + }, + { + "name": "MakeTime", + "integer": 6070 + }, + { + "name": "PeriodAdd", + "integer": 6071 + }, + { + "name": "PeriodDiff", + "integer": 6072 + }, + { + "name": "Quarter", + "integer": 6073 + }, + { + "name": "SecToTime", + "integer": 6074 + }, + { + "name": "TimeToSec", + "integer": 6075 + }, + { + "name": "TimestampAdd", + "integer": 6076 + }, + { + "name": "ToDays", + "integer": 6077 + }, + { + "name": "ToSeconds", + "integer": 6078 + }, + { + "name": "UTCTimeWithArg", + "integer": 6079 + }, + { + "name": "UTCTimeWithoutArg", + "integer": 6080 + }, + { + "name": "Timestamp1Arg", + "integer": 6081 + }, + { + "name": "Timestamp2Args", + "integer": 6082 + }, + { + "name": "TimestampLiteral", + "integer": 6083 + }, + { + "name": "LastDay", + "integer": 6084 + }, + { + "name": "StrToDateDate", + "integer": 6085 + }, + { + "name": "StrToDateDatetime", + "integer": 6086 + }, + { + "name": "StrToDateDuration", + "integer": 6087 + }, + { + "name": "FromUnixTime1Arg", + "integer": 6088 + }, + { + "name": "FromUnixTime2Arg", + "integer": 6089 + }, + { + "name": "ExtractDatetime", + "integer": 6090 + }, + { + "name": "ExtractDuration", + "integer": 6091 + }, + { + "name": "AddDateStringString", + "integer": 6092 + }, + { + "name": "AddDateStringInt", + "integer": 6093 + }, + { + "name": "AddDateStringDecimal", + "integer": 6094 + }, + { + "name": "AddDateIntString", + "integer": 6095 + }, + { + "name": "AddDateIntInt", + "integer": 6096 + }, + { + "name": "AddDateDatetimeString", + "integer": 6097 + }, + { + "name": "AddDateDatetimeInt", + "integer": 6098 + }, + { + "name": "SubDateStringString", + "integer": 6099 + }, + { + "name": "SubDateStringInt", + "integer": 6100 + }, + { + "name": "SubDateStringDecimal", + "integer": 6101 + }, + { + "name": "SubDateIntString", + "integer": 6102 + }, + { + "name": "SubDateIntInt", + "integer": 6103 + }, + { + "name": "SubDateDatetimeString", + "integer": 6104 + }, + { + "name": "SubDateDatetimeInt", + "integer": 6105 + }, + { + "name": "FromDays", + "integer": 6106 + }, + { + "name": "TimeFormat", + "integer": 6107 + }, + { + "name": "TimestampDiff", + "integer": 6108 + }, + { + "name": "SubDateStringReal", + "integer": 6109 + }, + { + "name": "SubDateIntReal", + "integer": 6110 + }, + { + "name": "SubDateIntDecimal", + "integer": 6111 + }, + { + "name": "SubDateDatetimeReal", + "integer": 6112 + }, + { + "name": "SubDateDatetimeDecimal", + "integer": 6113 + }, + { + "name": "SubDateDurationString", + "integer": 6114 + }, + { + "name": "SubDateDurationInt", + "integer": 6115 + }, + { + "name": "SubDateDurationReal", + "integer": 6116 + }, + { + "name": "SubDateDurationDecimal", + "integer": 6117 + }, + { + "name": "AddDateStringReal", + "integer": 6118 + }, + { + "name": "AddDateIntReal", + "integer": 6119 + }, + { + "name": "AddDateIntDecimal", + "integer": 6120 + }, + { + "name": "AddDateDatetimeReal", + "integer": 6121 + }, + { + "name": "AddDateDatetimeDecimal", + "integer": 6122 + }, + { + "name": "AddDateDurationString", + "integer": 6123 + }, + { + "name": "AddDateDurationInt", + "integer": 6124 + }, + { + "name": "AddDateDurationReal", + "integer": 6125 + }, + { + "name": "AddDateDurationDecimal", + "integer": 6126 + }, + { + "name": "ExtractDatetimeFromString", + "integer": 6127 + }, + { + "name": "AddDateRealString", + "integer": 6128 + }, + { + "name": "AddDateRealInt", + "integer": 6129 + }, + { + "name": "AddDateRealReal", + "integer": 6130 + }, + { + "name": "AddDateRealDecimal", + "integer": 6131 + }, + { + "name": "AddDateDecimalString", + "integer": 6132 + }, + { + "name": "AddDateDecimalInt", + "integer": 6133 + }, + { + "name": "AddDateDecimalReal", + "integer": 6134 + }, + { + "name": "AddDateDecimalDecimal", + "integer": 6135 + }, + { + "name": "SubDateRealString", + "integer": 6136 + }, + { + "name": "SubDateRealInt", + "integer": 6137 + }, + { + "name": "SubDateRealReal", + "integer": 6138 + }, + { + "name": "SubDateRealDecimal", + "integer": 6139 + }, + { + "name": "SubDateDecimalString", + "integer": 6140 + }, + { + "name": "SubDateDecimalInt", + "integer": 6141 + }, + { + "name": "SubDateDecimalReal", + "integer": 6142 + }, + { + "name": "SubDateDecimalDecimal", + "integer": 6143 + }, + { + "name": "AddDateDurationStringDatetime", + "integer": 6144 + }, + { + "name": "AddDateDurationIntDatetime", + "integer": 6145 + }, + { + "name": "AddDateDurationRealDatetime", + "integer": 6146 + }, + { + "name": "AddDateDurationDecimalDatetime", + "integer": 6147 + }, + { + "name": "SubDateDurationStringDatetime", + "integer": 6148 + }, + { + "name": "SubDateDurationIntDatetime", + "integer": 6149 + }, + { + "name": "SubDateDurationRealDatetime", + "integer": 6150 + }, + { + "name": "SubDateDurationDecimalDatetime", + "integer": 6151 + }, + { + "name": "BitLength", + "integer": 7001 + }, + { + "name": "Bin", + "integer": 7002 + }, + { + "name": "ASCII", + "integer": 7003 + }, + { + "name": "Char", + "integer": 7004 + }, + { + "name": "CharLengthUTF8", + "integer": 7005 + }, + { + "name": "Concat", + "integer": 7006 + }, + { + "name": "ConcatWS", + "integer": 7007 + }, + { + "name": "Convert", + "integer": 7008 + }, + { + "name": "Elt", + "integer": 7009 + }, + { + "name": "ExportSet3Arg", + "integer": 7010 + }, + { + "name": "ExportSet4Arg", + "integer": 7011 + }, + { + "name": "ExportSet5Arg", + "integer": 7012 + }, + { + "name": "FieldInt", + "integer": 7013 + }, + { + "name": "FieldReal", + "integer": 7014 + }, + { + "name": "FieldString", + "integer": 7015 + }, + { + "name": "FindInSet", + "integer": 7016 + }, + { + "name": "Format", + "integer": 7017 + }, + { + "name": "FormatWithLocale", + "integer": 7018 + }, + { + "name": "FromBase64", + "integer": 7019 + }, + { + "name": "HexIntArg", + "integer": 7020 + }, + { + "name": "HexStrArg", + "integer": 7021 + }, + { + "name": "InsertUTF8", + "integer": 7022 + }, + { + "name": "Insert", + "integer": 7023 + }, + { + "name": "InstrUTF8", + "integer": 7024 + }, + { + "name": "Instr", + "integer": 7025 + }, + { + "name": "LTrim", + "integer": 7026 + }, + { + "name": "LeftUTF8", + "integer": 7027 + }, + { + "name": "Left", + "integer": 7028 + }, + { + "name": "Length", + "integer": 7029 + }, + { + "name": "Locate2ArgsUTF8", + "integer": 7030 + }, + { + "name": "Locate3ArgsUTF8", + "integer": 7031 + }, + { + "name": "Locate2Args", + "integer": 7032 + }, + { + "name": "Locate3Args", + "integer": 7033 + }, + { + "name": "Lower", + "integer": 7034 + }, + { + "name": "LpadUTF8", + "integer": 7035 + }, + { + "name": "Lpad", + "integer": 7036 + }, + { + "name": "MakeSet", + "integer": 7037 + }, + { + "name": "OctInt", + "integer": 7038 + }, + { + "name": "OctString", + "integer": 7039 + }, + { + "name": "Ord", + "integer": 7040 + }, + { + "name": "Quote", + "integer": 7041 + }, + { + "name": "RTrim", + "integer": 7042 + }, + { + "name": "Repeat", + "integer": 7043 + }, + { + "name": "Replace", + "integer": 7044 + }, + { + "name": "ReverseUTF8", + "integer": 7045 + }, + { + "name": "Reverse", + "integer": 7046 + }, + { + "name": "RightUTF8", + "integer": 7047 + }, + { + "name": "Right", + "integer": 7048 + }, + { + "name": "RpadUTF8", + "integer": 7049 + }, + { + "name": "Rpad", + "integer": 7050 + }, + { + "name": "Space", + "integer": 7051 + }, + { + "name": "Strcmp", + "integer": 7052 + }, + { + "name": "Substring2ArgsUTF8", + "integer": 7053 + }, + { + "name": "Substring3ArgsUTF8", + "integer": 7054 + }, + { + "name": "Substring2Args", + "integer": 7055 + }, + { + "name": "Substring3Args", + "integer": 7056 + }, + { + "name": "SubstringIndex", + "integer": 7057 + }, + { + "name": "ToBase64", + "integer": 7058 + }, + { + "name": "Trim1Arg", + "integer": 7059 + }, + { + "name": "Trim2Args", + "integer": 7060 + }, + { + "name": "Trim3Args", + "integer": 7061 + }, + { + "name": "UnHex", + "integer": 7062 + }, + { + "name": "UpperUTF8", + "integer": 7063 + }, + { + "name": "Upper", + "integer": 7064 + }, + { + "name": "CharLength", + "integer": 7065 + }, + { + "name": "LowerUTF8", + "integer": 7066 + }, + { + "name": "GreatestDuration", + "integer": 7067 + }, + { + "name": "GreatestCmpStringAsTime", + "integer": 7068 + }, + { + "name": "LeastDuration", + "integer": 7069 + }, + { + "name": "LeastCmpStringAsTime", + "integer": 7070 + }, + { + "name": "ToBinary", + "integer": 7071 + }, + { + "name": "FromBinary", + "integer": 7072 + }, + { + "name": "GreatestCmpStringAsDate", + "integer": 7073 + }, + { + "name": "LeastCmpStringAsDate", + "integer": 7074 + }, + { + "name": "GreatestDate", + "integer": 7075 + }, + { + "name": "LeastDate", + "integer": 7076 + } + ] + }, + { + "name": "AggFunctionMode", + "enum_fields": [ + { + "name": "CompleteMode" + }, + { + "name": "FinalMode", + "integer": 1 + }, + { + "name": "Partial1Mode", + "integer": 2 + }, + { + "name": "Partial2Mode", + "integer": 3 + }, + { + "name": "DedupMode", + "integer": 4 + } + ] + } + ], + "messages": [ + { + "name": "FieldType", + "fields": [ + { + "id": 1, + "name": "tp", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "flag", + "type": "uint32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "flen", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "decimal", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "collate", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "charset", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 7, + "name": "elems", + "type": "string", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 8, + "name": "array", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "Expr", + "fields": [ + { + "id": 1, + "name": "tp", + "type": "ExprType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "val", + "type": "bytes", + "optional": true + }, + { + "id": 3, + "name": "children", + "type": "Expr", + "is_repeated": true + }, + { + "id": 6, + "name": "rpn_args_len", + "type": "uint32", + "optional": true + }, + { + "id": 4, + "name": "sig", + "type": "ScalarFuncSig", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "field_type", + "type": "FieldType", + "optional": true + }, + { + "id": 7, + "name": "has_distinct", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 8, + "name": "order_by", + "type": "ByItem", + "is_repeated": true + }, + { + "id": 9, + "name": "aggFuncMode", + "type": "AggFunctionMode", + "optional": true + } + ] + }, + { + "name": "RpnExpr", + "fields": [ + { + "id": 1, + "name": "exprs", + "type": "Expr", + "is_repeated": true + } + ] + }, + { + "name": "ByItem", + "fields": [ + { + "id": 1, + "name": "expr", + "type": "Expr", + "optional": true + }, + { + "id": 3, + "name": "rpn_expr", + "type": "RpnExpr", + "optional": true + }, + { + "id": 2, + "name": "desc", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "metadata.proto", + "def": { + "enums": [ + { + "name": "GroupingMode", + "enum_fields": [ + { + "name": "ModeBitAnd", + "integer": 1 + }, + { + "name": "ModeNumericCmp", + "integer": 2 + }, + { + "name": "ModeNumericSet", + "integer": 3 + } + ] + } + ], + "messages": [ + { + "name": "InUnionMetadata", + "fields": [ + { + "id": 1, + "name": "in_union", + "type": "bool", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "CompareInMetadata", + "fields": [ + { + "id": 1, + "name": "has_null", + "type": "bool", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "consts", + "type": "bytes", + "optional": true + } + ] + }, + { + "name": "GroupingMark", + "fields": [ + { + "id": 1, + "name": "grouping_nums", + "type": "uint64", + "is_repeated": true + } + ] + }, + { + "name": "GroupingFunctionMetadata", + "fields": [ + { + "id": 1, + "name": "mode", + "type": "GroupingMode", + "required": true + }, + { + "id": 2, + "name": "grouping_marks", + "type": "GroupingMark", + "is_repeated": true + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "resourcetag.proto", + "def": { + "enums": [ + { + "name": "ResourceGroupTagLabel", + "enum_fields": [ + { + "name": "ResourceGroupTagLabelUnknown" + }, + { + "name": "ResourceGroupTagLabelRow", + "integer": 1 + }, + { + "name": "ResourceGroupTagLabelIndex", + "integer": 2 + } + ] + } + ], + "messages": [ + { + "name": "ResourceGroupTag", + "fields": [ + { + "id": 1, + "name": "sql_digest", + "type": "bytes", + "optional": true + }, + { + "id": 2, + "name": "plan_digest", + "type": "bytes", + "optional": true + }, + { + "id": 3, + "name": "label", + "type": "ResourceGroupTagLabel", + "optional": true + }, + { + "id": 4, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "keyspace_name", + "type": "bytes", + "optional": true + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "schema.proto", + "def": { + "messages": [ + { + "name": "TableInfo", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + } + ] + }, + { + "name": "ColumnInfo", + "fields": [ + { + "id": 1, + "name": "column_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "tp", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "collation", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "columnLen", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "decimal", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 6, + "name": "flag", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 7, + "name": "elems", + "type": "string", + "is_repeated": true + }, + { + "id": 8, + "name": "default_val", + "type": "bytes", + "optional": true + }, + { + "id": 21, + "name": "pk_handle", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 22, + "name": "array", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "IndexInfo", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "index_id", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 3, + "name": "columns", + "type": "ColumnInfo", + "is_repeated": true + }, + { + "id": 4, + "name": "unique", + "type": "bool", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "KeyRange", + "fields": [ + { + "id": 1, + "name": "low", + "type": "bytes", + "optional": true + }, + { + "id": 2, + "name": "high", + "type": "bytes", + "optional": true + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "select.proto", + "def": { + "enums": [ + { + "name": "EncodeType", + "enum_fields": [ + { + "name": "TypeDefault" + }, + { + "name": "TypeChunk", + "integer": 1 + }, + { + "name": "TypeCHBlock", + "integer": 2 + } + ] + }, + { + "name": "Endian", + "enum_fields": [ + { + "name": "LittleEndian" + }, + { + "name": "BigEndian", + "integer": 1 + } + ] + } + ], + "messages": [ + { + "name": "Row", + "fields": [ + { + "id": 1, + "name": "handle", + "type": "bytes", + "optional": true + }, + { + "id": 2, + "name": "data", + "type": "bytes", + "optional": true + } + ] + }, + { + "name": "Error", + "fields": [ + { + "id": 1, + "name": "code", + "type": "int32", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "msg", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "IntermediateOutput", + "fields": [ + { + "id": 1, + "name": "encode_type", + "type": "EncodeType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "chunks", + "type": "Chunk", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "SelectResponse", + "fields": [ + { + "id": 1, + "name": "error", + "type": "Error", + "optional": true + }, + { + "id": 2, + "name": "rows", + "type": "Row", + "is_repeated": true + }, + { + "id": 3, + "name": "chunks", + "type": "Chunk", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "warnings", + "type": "Error", + "is_repeated": true + }, + { + "id": 5, + "name": "output_counts", + "type": "int64", + "is_repeated": true + }, + { + "id": 6, + "name": "warning_count", + "type": "int64", + "optional": true + }, + { + "id": 8, + "name": "execution_summaries", + "type": "ExecutorExecutionSummary", + "is_repeated": true + }, + { + "id": 9, + "name": "encode_type", + "type": "EncodeType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 10, + "name": "ndvs", + "type": "int64", + "is_repeated": true + }, + { + "id": 11, + "name": "intermediate_outputs", + "type": "IntermediateOutput", + "is_repeated": true + } + ] + }, + { + "name": "Chunk", + "fields": [ + { + "id": 3, + "name": "rows_data", + "type": "bytes", + "optional": true, + "options": [ + { + "name": "(gogoproto.customtype)", + "value": "github.com/pingcap/tipb/sharedbytes.SharedBytes" + }, + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "rows_meta", + "type": "RowMeta", + "is_repeated": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "IntermediateOutputChannel", + "fields": [ + { + "id": 1, + "name": "executor_idx", + "type": "uint32", + "required": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "output_offsets", + "type": "uint32", + "is_repeated": true + } + ] + }, + { + "name": "RowMeta", + "fields": [ + { + "id": 1, + "name": "handle", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "length", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "DAGRequest", + "fields": [ + { + "id": 1, + "name": "start_ts_fallback", + "type": "uint64", + "optional": true + }, + { + "id": 2, + "name": "executors", + "type": "Executor", + "is_repeated": true + }, + { + "id": 3, + "name": "time_zone_offset", + "type": "int64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "flags", + "type": "uint64", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 5, + "name": "output_offsets", + "type": "uint32", + "is_repeated": true + }, + { + "id": 6, + "name": "collect_range_counts", + "type": "bool", + "optional": true + }, + { + "id": 7, + "name": "max_warning_count", + "type": "uint64", + "optional": true + }, + { + "id": 8, + "name": "encode_type", + "type": "EncodeType", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 9, + "name": "sql_mode", + "type": "uint64", + "optional": true + }, + { + "id": 11, + "name": "time_zone_name", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 12, + "name": "collect_execution_summaries", + "type": "bool", + "optional": true + }, + { + "id": 13, + "name": "max_allowed_packet", + "type": "uint64", + "optional": true + }, + { + "id": 14, + "name": "chunk_memory_layout", + "type": "ChunkMemoryLayout", + "optional": true + }, + { + "id": 15, + "name": "is_rpn_expr", + "type": "bool", + "optional": true + }, + { + "id": 16, + "name": "user", + "type": "UserIdentity", + "optional": true + }, + { + "id": 17, + "name": "root_executor", + "type": "Executor", + "optional": true + }, + { + "id": 18, + "name": "force_encode_type", + "type": "bool", + "optional": true + }, + { + "id": 19, + "name": "div_precision_increment", + "type": "uint32", + "optional": true + }, + { + "id": 20, + "name": "intermediate_output_channels", + "type": "IntermediateOutputChannel", + "is_repeated": true + } + ] + }, + { + "name": "ChunkMemoryLayout", + "fields": [ + { + "id": 1, + "name": "endian", + "type": "Endian", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "UserIdentity", + "fields": [ + { + "id": 1, + "name": "user_name", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 2, + "name": "user_host", + "type": "string", + "optional": true, + "options": [ + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + } + ] + }, + { + "name": "StreamResponse", + "fields": [ + { + "id": 1, + "name": "error", + "type": "Error", + "optional": true + }, + { + "id": 3, + "name": "data", + "type": "bytes", + "optional": true, + "options": [ + { + "name": "(gogoproto.customtype)", + "value": "github.com/pingcap/tipb/sharedbytes.SharedBytes" + }, + { + "name": "(gogoproto.nullable)", + "value": "false" + } + ] + }, + { + "id": 4, + "name": "warnings", + "type": "Error", + "is_repeated": true + }, + { + "id": 5, + "name": "output_counts", + "type": "int64", + "is_repeated": true + }, + { + "id": 6, + "name": "warning_count", + "type": "int64", + "optional": true + }, + { + "id": 7, + "name": "ndvs", + "type": "int64", + "is_repeated": true + } + ] + } + ], + "imports": [ + { + "path": "executor.proto" + }, + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "tici:/:indexer.proto", + "def": { + "enums": [ + { + "name": "IndexType", + "enum_fields": [ + { + "name": "UNKNOWN" + }, + { + "name": "FULL_TEXT", + "integer": 1 + }, + { + "name": "CUSTOM", + "integer": 2 + } + ] + }, + { + "name": "ParserType", + "enum_fields": [ + { + "name": "UNKNOWN_PARSER" + }, + { + "name": "DEFAULT_PARSER", + "integer": 1 + }, + { + "name": "OTHER_PARSER", + "integer": 2 + } + ] + } + ], + "messages": [ + { + "name": "CreateIndexRequest", + "fields": [ + { + "id": 1, + "name": "index_info", + "type": "TiCIIndexInfo" + }, + { + "id": 2, + "name": "table_info", + "type": "TiCITableInfo" + } + ] + }, + { + "name": "CreateIndexResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "int32" + }, + { + "id": 2, + "name": "error_message", + "type": "string" + }, + { + "id": 3, + "name": "index_id", + "type": "string" + } + ] + }, + { + "name": "DropIndexRequest", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64" + }, + { + "id": 2, + "name": "index_id", + "type": "string" + } + ] + }, + { + "name": "DropIndexResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "int32" + }, + { + "id": 2, + "name": "error_message", + "type": "string" + } + ] + }, + { + "name": "TiCITableInfo", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64" + }, + { + "id": 2, + "name": "table_name", + "type": "string" + }, + { + "id": 3, + "name": "database_name", + "type": "string" + }, + { + "id": 4, + "name": "version", + "type": "int64" + }, + { + "id": 5, + "name": "columns", + "type": "TiCIColumnInfo", + "is_repeated": true + } + ] + }, + { + "name": "TiCIColumnInfo", + "fields": [ + { + "id": 1, + "name": "column_id", + "type": "int64" + }, + { + "id": 2, + "name": "column_name", + "type": "string" + }, + { + "id": 3, + "name": "type", + "type": "int32" + }, + { + "id": 4, + "name": "collation", + "type": "int32" + }, + { + "id": 5, + "name": "column_length", + "type": "int32" + }, + { + "id": 6, + "name": "decimal", + "type": "int32" + }, + { + "id": 7, + "name": "flag", + "type": "int32" + }, + { + "id": 8, + "name": "elems", + "type": "string", + "is_repeated": true + }, + { + "id": 9, + "name": "default_val", + "type": "bytes" + }, + { + "id": 10, + "name": "is_primary_key", + "type": "bool" + }, + { + "id": 11, + "name": "is_array", + "type": "bool" + } + ] + }, + { + "name": "TiCIIndexInfo", + "fields": [ + { + "id": 1, + "name": "index_id", + "type": "int64" + }, + { + "id": 2, + "name": "index_name", + "type": "string" + }, + { + "id": 3, + "name": "index_type", + "type": "IndexType" + }, + { + "id": 4, + "name": "columns", + "type": "TiCIColumnInfo", + "is_repeated": true + }, + { + "id": 5, + "name": "is_unique", + "type": "bool" + }, + { + "id": 6, + "name": "parser_info", + "type": "ParserInfo" + } + ], + "maps": [ + { + "key_type": "string", + "field": { + "id": 7, + "name": "other_params", + "type": "string" + } + } + ] + }, + { + "name": "ParserInfo", + "fields": [ + { + "id": 1, + "name": "parser_type", + "type": "ParserType" + } + ], + "maps": [ + { + "key_type": "string", + "field": { + "id": 2, + "name": "parser_params", + "type": "string" + } + } + ] + }, + { + "name": "GetIndexProgressRequest", + "fields": [ + { + "id": 1, + "name": "table_id", + "type": "int64" + }, + { + "id": 2, + "name": "index_id", + "type": "int64" + } + ] + }, + { + "name": "GetIndexProgressResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "int32" + }, + { + "id": 2, + "name": "error_message", + "type": "string" + }, + { + "id": 3, + "name": "document_count", + "type": "uint64" + }, + { + "id": 4, + "name": "state", + "type": "string" + }, + { + "id": 5, + "name": "is_uploaded", + "type": "bool" + }, + { + "id": 6, + "name": "last_upload_time", + "type": "string" + }, + { + "id": 7, + "name": "s3_path", + "type": "string", + "is_repeated": true + } + ] + } + ], + "services": [ + { + "name": "IndexerService", + "rpcs": [ + { + "name": "CreateIndex", + "in_type": "CreateIndexRequest", + "out_type": "CreateIndexResponse" + }, + { + "name": "DropIndex", + "in_type": "DropIndexRequest", + "out_type": "DropIndexResponse" + }, + { + "name": "GetIndexProgress", + "in_type": "GetIndexProgressRequest", + "out_type": "GetIndexProgressResponse" + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb.tici" + }, + "options": [ + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "topsql_agent.proto", + "def": { + "messages": [ + { + "name": "TopSQLRecord", + "fields": [ + { + "id": 1, + "name": "sql_digest", + "type": "bytes" + }, + { + "id": 2, + "name": "plan_digest", + "type": "bytes" + }, + { + "id": 3, + "name": "items", + "type": "TopSQLRecordItem", + "is_repeated": true + }, + { + "id": 4, + "name": "keyspace_name", + "type": "bytes" + } + ] + }, + { + "name": "TopSQLRecordItem", + "fields": [ + { + "id": 1, + "name": "timestamp_sec", + "type": "uint64" + }, + { + "id": 2, + "name": "cpu_time_ms", + "type": "uint32" + }, + { + "id": 3, + "name": "stmt_exec_count", + "type": "uint64" + }, + { + "id": 5, + "name": "stmt_duration_sum_ns", + "type": "uint64" + }, + { + "id": 6, + "name": "stmt_duration_count", + "type": "uint64" + } + ], + "maps": [ + { + "key_type": "string", + "field": { + "id": 4, + "name": "stmt_kv_exec_count", + "type": "uint64" + } + } + ] + }, + { + "name": "SQLMeta", + "fields": [ + { + "id": 1, + "name": "sql_digest", + "type": "bytes" + }, + { + "id": 2, + "name": "normalized_sql", + "type": "string" + }, + { + "id": 3, + "name": "is_internal_sql", + "type": "bool" + }, + { + "id": 4, + "name": "keyspace_name", + "type": "bytes" + } + ] + }, + { + "name": "PlanMeta", + "fields": [ + { + "id": 1, + "name": "plan_digest", + "type": "bytes" + }, + { + "id": 2, + "name": "normalized_plan", + "type": "string" + }, + { + "id": 3, + "name": "encoded_normalized_plan", + "type": "string" + }, + { + "id": 4, + "name": "keyspace_name", + "type": "bytes" + } + ] + }, + { + "name": "EmptyResponse" + }, + { + "name": "TopSQLSubRequest" + }, + { + "name": "TopSQLSubResponse", + "fields": [ + { + "id": 1, + "name": "record", + "type": "TopSQLRecord", + "oneof_parent": "resp_oneof" + }, + { + "id": 2, + "name": "sql_meta", + "type": "SQLMeta", + "oneof_parent": "resp_oneof" + }, + { + "id": 3, + "name": "plan_meta", + "type": "PlanMeta", + "oneof_parent": "resp_oneof" + } + ] + } + ], + "services": [ + { + "name": "TopSQLAgent", + "rpcs": [ + { + "name": "ReportTopSQLRecords", + "in_type": "TopSQLRecord", + "out_type": "EmptyResponse", + "in_streamed": true + }, + { + "name": "ReportSQLMeta", + "in_type": "SQLMeta", + "out_type": "EmptyResponse", + "in_streamed": true + }, + { + "name": "ReportPlanMeta", + "in_type": "PlanMeta", + "out_type": "EmptyResponse", + "in_streamed": true + } + ] + }, + { + "name": "TopSQLPubSub", + "rpcs": [ + { + "name": "Subscribe", + "in_type": "TopSQLSubRequest", + "out_type": "TopSQLSubResponse", + "out_streamed": true + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + }, + { + "protopath": "trace.proto", + "def": { + "enums": [ + { + "name": "Event", + "enum_fields": [ + { + "name": "Unknown" + }, + { + "name": "TiKvCoprGetRequest", + "integer": 1000 + }, + { + "name": "TiKvCoprHandleRequest", + "integer": 1001 + }, + { + "name": "TiKvCoprScheduleTask", + "integer": 1002 + }, + { + "name": "TiKvCoprGetSnapshot", + "integer": 1003 + }, + { + "name": "TiKvCoprExecuteDagRunner", + "integer": 1004 + }, + { + "name": "TiKvCoprExecuteBatchDagRunner", + "integer": 1005 + } + ] + } + ], + "imports": [ + { + "path": "gogoproto/gogo.proto" + }, + { + "path": "rustproto.proto" + } + ], + "package": { + "name": "tipb" + }, + "options": [ + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_package", + "value": "com.pingcap.tidb.tipb" + }, + { + "name": "(gogoproto.marshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.sizer_all)", + "value": "true" + }, + { + "name": "(gogoproto.unmarshaler_all)", + "value": "true" + }, + { + "name": "(gogoproto.goproto_unkeyed_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_unrecognized_all)", + "value": "false" + }, + { + "name": "(gogoproto.goproto_sizecache_all)", + "value": "false" + }, + { + "name": "(rustproto.lite_runtime_all)", + "value": "true" + } + ] + } + } + ] +} \ No newline at end of file From d89f092d574bbb21d968ce250402e4a6b6c67504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=B6=85?= Date: Sun, 28 Sep 2025 11:08:46 +0800 Subject: [PATCH 2/2] Add field `children` for `IndexLookUp` (#380) Signed-off-by: Chao Wang --- go-tipb/executor.pb.go | 607 ++++++++++++++++++++++------------------- proto/executor.proto | 1 + 2 files changed, 333 insertions(+), 275 deletions(-) diff --git a/go-tipb/executor.pb.go b/go-tipb/executor.pb.go index 3d01f8d6..89d55c65 100644 --- a/go-tipb/executor.pb.go +++ b/go-tipb/executor.pb.go @@ -897,9 +897,10 @@ func (m *ExchangeSender) GetUpstreamCteTaskMeta() []*EncodedBytesSlice { type IndexLookUp struct { // It represents the index columns we should use to build the row handle. - IndexHandleOffsets []uint32 `protobuf:"varint,1,rep,name=index_handle_offsets,json=indexHandleOffsets" json:"index_handle_offsets,omitempty"` - KeepOrder *bool `protobuf:"varint,2,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` - XXX_unrecognized []byte `json:"-"` + IndexHandleOffsets []uint32 `protobuf:"varint,1,rep,name=index_handle_offsets,json=indexHandleOffsets" json:"index_handle_offsets,omitempty"` + KeepOrder *bool `protobuf:"varint,2,opt,name=keep_order,json=keepOrder" json:"keep_order,omitempty"` + Children []*Executor `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *IndexLookUp) Reset() { *m = IndexLookUp{} } @@ -921,6 +922,13 @@ func (m *IndexLookUp) GetKeepOrder() bool { return false } +func (m *IndexLookUp) GetChildren() []*Executor { + if m != nil { + return m.Children + } + return nil +} + type EncodedBytesSlice struct { EncodedTasks [][]byte `protobuf:"bytes,1,rep,name=encoded_tasks,json=encodedTasks" json:"encoded_tasks,omitempty"` XXX_unrecognized []byte `json:"-"` @@ -3039,6 +3047,18 @@ func (m *IndexLookUp) MarshalTo(dAtA []byte) (int, error) { } i++ } + if len(m.Children) > 0 { + for _, msg := range m.Children { + dAtA[i] = 0x1a + i++ + i = encodeVarintExecutor(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -5128,6 +5148,12 @@ func (m *IndexLookUp) Size() (n int) { if m.KeepOrder != nil { n += 2 } + if len(m.Children) > 0 { + for _, e := range m.Children { + l = e.Size() + n += 1 + l + sovExecutor(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -7135,6 +7161,37 @@ func (m *IndexLookUp) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.KeepOrder = &b + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Children", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExecutor + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthExecutor + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Children = append(m.Children, &Executor{}) + if err := m.Children[len(m.Children)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipExecutor(dAtA[iNdEx:]) @@ -13127,283 +13184,283 @@ var ( func init() { proto.RegisterFile("executor.proto", fileDescriptorExecutor) } var fileDescriptorExecutor = []byte{ - // 4434 bytes of a gzipped FileDescriptorProto + // 4437 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1b, 0x47, 0x76, 0x27, 0x40, 0x80, 0x04, 0x1e, 0x40, 0x70, 0xd8, 0xa4, 0xa4, 0x11, 0x65, 0x49, 0x34, 0x56, 0xb6, 0x19, 0xc6, 0x96, 0x65, 0x4a, 0xeb, 0x8f, 0xdd, 0xec, 0xda, 0xfc, 0xb4, 0x20, 0x91, 0x20, - 0x77, 0xc0, 0x95, 0xf7, 0x90, 0xca, 0xd4, 0x70, 0xa6, 0x01, 0xb6, 0x38, 0x5f, 0x9a, 0x9e, 0x91, - 0x40, 0x9f, 0xfc, 0x37, 0x64, 0x2b, 0xa9, 0xbd, 0xa5, 0x2a, 0xa7, 0x54, 0x25, 0x95, 0x7f, 0x21, - 0x39, 0xee, 0x31, 0xd7, 0xf8, 0x90, 0x4a, 0x39, 0xa7, 0xfc, 0x0b, 0x39, 0xa5, 0xfa, 0x75, 0xcf, - 0xa0, 0x41, 0x80, 0xb4, 0x5c, 0xc9, 0x61, 0x4f, 0xc0, 0xbc, 0xf7, 0xfb, 0xbd, 0xfe, 0x7a, 0xfd, - 0xfa, 0xf5, 0x9b, 0x81, 0x16, 0x1d, 0x52, 0x37, 0x4b, 0xa3, 0xe4, 0x61, 0x9c, 0x44, 0x69, 0x44, - 0x2a, 0x29, 0x8b, 0x4f, 0x57, 0x0d, 0x3a, 0x8c, 0x13, 0xca, 0x39, 0x8b, 0x42, 0x29, 0x5f, 0x6d, - 0x72, 0xf7, 0x8c, 0x06, 0x8e, 0x7a, 0x5a, 0x19, 0x44, 0x83, 0x08, 0xff, 0x7e, 0x2c, 0xfe, 0x49, - 0x69, 0xfb, 0x0f, 0x35, 0xa8, 0xed, 0x29, 0x73, 0xe4, 0x01, 0x94, 0xd3, 0xd8, 0x2c, 0xad, 0x95, - 0xd6, 0x5b, 0x9b, 0xad, 0x87, 0xc2, 0xea, 0x43, 0xa1, 0x3b, 0xb9, 0x88, 0xe9, 0x76, 0xe5, 0x8f, - 0xff, 0x71, 0x7f, 0xc6, 0x2a, 0xa7, 0x31, 0xd9, 0x80, 0x5a, 0x7a, 0xea, 0xdb, 0xdc, 0x75, 0x42, - 0xb3, 0xbc, 0x56, 0x5a, 0x6f, 0x6c, 0x2e, 0x4a, 0xec, 0x89, 0x73, 0xea, 0xd3, 0x9e, 0xeb, 0x84, - 0xd6, 0x7c, 0x7a, 0xea, 0x8b, 0x3f, 0x02, 0xcb, 0xbc, 0xa1, 0xc4, 0xce, 0xea, 0xd8, 0x4e, 0xe8, - 0xd1, 0xa1, 0xc4, 0x32, 0x0f, 0xff, 0x90, 0x8f, 0xa0, 0xce, 0xa9, 0x4f, 0xdd, 0x94, 0x45, 0xa1, - 0x59, 0xd1, 0xc1, 0xbd, 0x5c, 0x6c, 0x8d, 0x10, 0xe4, 0x31, 0x34, 0x9c, 0xc1, 0x20, 0xa1, 0x03, - 0x07, 0x09, 0x55, 0x24, 0x2c, 0x49, 0xc2, 0xd6, 0x48, 0x61, 0xe9, 0x28, 0x72, 0x0f, 0x2a, 0x69, - 0x14, 0x77, 0xcd, 0x39, 0x44, 0x83, 0xea, 0x77, 0x14, 0x77, 0x2d, 0x94, 0x93, 0x77, 0xa1, 0xea, - 0xb3, 0x80, 0xa5, 0xe6, 0x3c, 0x02, 0x1a, 0x12, 0x70, 0x20, 0x44, 0x96, 0xd4, 0x90, 0x1d, 0x58, - 0xa2, 0x43, 0xf7, 0xcc, 0x09, 0x07, 0xd4, 0x4e, 0xa8, 0x4b, 0xd9, 0x6b, 0x9a, 0x98, 0x35, 0x84, - 0xdf, 0xcc, 0xe7, 0x4c, 0xaa, 0x2d, 0xa5, 0xb5, 0x0c, 0x7a, 0x49, 0x22, 0xfa, 0xf1, 0x32, 0x62, - 0xa1, 0x59, 0xd7, 0xfb, 0xf1, 0x2c, 0x62, 0xa1, 0x85, 0x72, 0x72, 0x1f, 0x1a, 0xf9, 0x22, 0xdb, - 0xcc, 0x33, 0x61, 0xad, 0xb4, 0x5e, 0xb7, 0x20, 0x17, 0x75, 0x3c, 0x61, 0xe0, 0x9c, 0xf9, 0xbe, - 0xd9, 0xd0, 0x0d, 0x3c, 0x67, 0xbe, 0x6f, 0xa1, 0x9c, 0xfc, 0x0a, 0x16, 0x8b, 0x5e, 0x72, 0x1a, - 0x7a, 0x34, 0x31, 0x9b, 0x08, 0x5d, 0x19, 0xef, 0x63, 0x0f, 0x75, 0x56, 0x8b, 0x8e, 0x3d, 0x93, - 0x47, 0x00, 0xc7, 0x49, 0xf4, 0x52, 0x2d, 0xc6, 0x02, 0x32, 0x0d, 0xc9, 0x1c, 0xc9, 0x2d, 0x0d, - 0x43, 0x9e, 0xc1, 0x4a, 0xec, 0x24, 0x29, 0x13, 0x0f, 0x76, 0x2a, 0x3c, 0x41, 0xae, 0x7a, 0x0b, - 0xb9, 0xa6, 0xe2, 0xe6, 0x88, 0x91, 0xab, 0x90, 0x78, 0x42, 0x26, 0x06, 0xc7, 0xa3, 0x24, 0x35, - 0x17, 0xf5, 0xc1, 0xf5, 0xa2, 0x24, 0xb5, 0x50, 0x4e, 0x1e, 0xc0, 0xdc, 0x1b, 0x16, 0x7a, 0xd1, - 0x1b, 0xd3, 0x40, 0x44, 0x53, 0x22, 0xbe, 0x41, 0x99, 0xa5, 0x74, 0xa4, 0x0b, 0xef, 0xf6, 0x59, - 0x48, 0xed, 0x41, 0xe2, 0xb0, 0x90, 0x7a, 0x36, 0x3f, 0xcb, 0xfa, 0x7d, 0xd1, 0xad, 0x34, 0xa1, - 0x4e, 0x60, 0xbb, 0x51, 0x16, 0xa6, 0xe6, 0xd2, 0x5a, 0x69, 0xbd, 0xa2, 0x9c, 0xfb, 0xae, 0x80, - 0x7f, 0x2d, 0xd1, 0x3d, 0x09, 0xee, 0x21, 0x76, 0x47, 0x40, 0xc9, 0x33, 0xb8, 0x3f, 0xd5, 0xde, - 0xa9, 0x93, 0xba, 0x67, 0x36, 0x67, 0xdf, 0x52, 0x93, 0x68, 0xd6, 0xee, 0x4c, 0x5a, 0xdb, 0x16, - 0xc8, 0x1e, 0xfb, 0x96, 0x8a, 0x11, 0xd0, 0x61, 0xec, 0x84, 0x9e, 0xb9, 0xac, 0x8f, 0x60, 0x0f, - 0x65, 0x96, 0xd2, 0x91, 0x0f, 0x60, 0x5e, 0xfe, 0xdb, 0x34, 0x57, 0x10, 0xb6, 0xa0, 0xc3, 0x36, - 0xad, 0x5c, 0x4b, 0x9e, 0x40, 0x93, 0x89, 0x0d, 0x65, 0xfb, 0x51, 0x74, 0x9e, 0xc5, 0xa6, 0xa9, - 0x6f, 0x06, 0xdc, 0x6a, 0x07, 0x51, 0x74, 0xfe, 0xdb, 0xd8, 0x6a, 0xb0, 0xfc, 0x21, 0x8b, 0xc9, - 0x5d, 0x80, 0xd8, 0x49, 0x68, 0x98, 0xda, 0xcc, 0x1b, 0x9a, 0xb7, 0xd7, 0x4a, 0xeb, 0x0b, 0x56, - 0x5d, 0x4a, 0x3a, 0xde, 0xb0, 0xfd, 0x4f, 0xb3, 0xd0, 0x1a, 0x77, 0x13, 0xb2, 0xae, 0x05, 0x08, - 0x32, 0xee, 0x48, 0x13, 0x41, 0x62, 0x89, 0x86, 0x6e, 0xe4, 0x51, 0xcf, 0x4e, 0x1d, 0x7e, 0x6e, - 0x07, 0x34, 0x75, 0xcc, 0xf2, 0xda, 0xec, 0x7a, 0xd3, 0x5a, 0x54, 0x8a, 0x13, 0x87, 0x9f, 0x1f, - 0xd2, 0xd4, 0x21, 0x9f, 0x40, 0x6b, 0xe4, 0x3a, 0xe7, 0xf4, 0x82, 0x9b, 0xb3, 0x6b, 0xb3, 0xa3, - 0x85, 0xdf, 0x1b, 0xc6, 0x89, 0xb5, 0x50, 0x20, 0x9e, 0xd3, 0x0b, 0x4e, 0x1e, 0x40, 0xd5, 0x3d, - 0x63, 0xbe, 0xa7, 0xe2, 0x84, 0x16, 0xac, 0xc4, 0xfe, 0xb0, 0xa4, 0x92, 0xbc, 0x07, 0xd5, 0xf4, - 0x22, 0xa6, 0xdc, 0xac, 0xa2, 0x3d, 0x15, 0x4d, 0xf6, 0x19, 0xf5, 0x3d, 0xd1, 0x5d, 0x4b, 0x6a, + 0x77, 0xc0, 0x95, 0xf7, 0x90, 0xaa, 0xa9, 0xe1, 0x4c, 0x03, 0x6c, 0x71, 0xbe, 0x34, 0x3d, 0x23, + 0x81, 0x3e, 0xf9, 0x9c, 0x63, 0xb6, 0x92, 0xda, 0x5b, 0xaa, 0x72, 0x4a, 0x55, 0x52, 0xf9, 0x17, + 0x92, 0xe3, 0x1e, 0x73, 0x8d, 0x0f, 0xa9, 0x94, 0x73, 0xca, 0xbf, 0x90, 0x53, 0xaa, 0x5f, 0xf7, + 0x0c, 0x1a, 0x04, 0x48, 0xcb, 0x95, 0x1c, 0xf6, 0x04, 0xcc, 0x7b, 0xbf, 0xdf, 0xeb, 0xaf, 0xf7, + 0x5e, 0x77, 0xbf, 0x19, 0x68, 0xd1, 0x21, 0x75, 0xb3, 0x34, 0x4a, 0x1e, 0xc6, 0x49, 0x94, 0x46, + 0xa4, 0x92, 0xb2, 0xf8, 0x74, 0xd5, 0xa0, 0xc3, 0x38, 0xa1, 0x9c, 0xb3, 0x28, 0x94, 0xf2, 0xd5, + 0x26, 0x77, 0xcf, 0x68, 0xe0, 0xa8, 0xa7, 0x95, 0x41, 0x34, 0x88, 0xf0, 0xef, 0xc7, 0xe2, 0x9f, + 0x94, 0xb6, 0xff, 0x50, 0x83, 0xda, 0x9e, 0x32, 0x47, 0x1e, 0x40, 0x39, 0x8d, 0xcd, 0xd2, 0x5a, + 0x69, 0xbd, 0xb5, 0xd9, 0x7a, 0x28, 0xac, 0x3e, 0x14, 0xba, 0x93, 0x8b, 0x98, 0x6e, 0x57, 0xfe, + 0xf8, 0x1f, 0xf7, 0x67, 0xac, 0x72, 0x1a, 0x93, 0x0d, 0xa8, 0xa5, 0xa7, 0xbe, 0xcd, 0x5d, 0x27, + 0x34, 0xcb, 0x6b, 0xa5, 0xf5, 0xc6, 0xe6, 0xa2, 0xc4, 0x9e, 0x38, 0xa7, 0x3e, 0xed, 0xb9, 0x4e, + 0x68, 0xcd, 0xa7, 0xa7, 0xbe, 0xf8, 0x23, 0xb0, 0xcc, 0x1b, 0x4a, 0xec, 0xac, 0x8e, 0xed, 0x84, + 0x1e, 0x1d, 0x4a, 0x2c, 0xf3, 0xf0, 0x0f, 0xf9, 0x08, 0xea, 0x9c, 0xfa, 0xd4, 0x4d, 0x59, 0x14, + 0x9a, 0x15, 0x1d, 0xdc, 0xcb, 0xc5, 0xd6, 0x08, 0x41, 0x1e, 0x43, 0xc3, 0x19, 0x0c, 0x12, 0x3a, + 0x70, 0x90, 0x50, 0x45, 0xc2, 0x92, 0x24, 0x6c, 0x8d, 0x14, 0x96, 0x8e, 0x22, 0xf7, 0xa0, 0x92, + 0x46, 0x71, 0xd7, 0x9c, 0x43, 0x34, 0xa8, 0x7e, 0x47, 0x71, 0xd7, 0x42, 0x39, 0x79, 0x17, 0xaa, + 0x3e, 0x0b, 0x58, 0x6a, 0xce, 0x23, 0xa0, 0x21, 0x01, 0x07, 0x42, 0x64, 0x49, 0x0d, 0xd9, 0x81, + 0x25, 0x3a, 0x74, 0xcf, 0x9c, 0x70, 0x40, 0xed, 0x84, 0xba, 0x94, 0xbd, 0xa6, 0x89, 0x59, 0x43, + 0xf8, 0xcd, 0x7c, 0xce, 0xa4, 0xda, 0x52, 0x5a, 0xcb, 0xa0, 0x97, 0x24, 0xa2, 0x1f, 0x2f, 0x23, + 0x16, 0x9a, 0x75, 0xbd, 0x1f, 0xcf, 0x22, 0x16, 0x5a, 0x28, 0x27, 0xf7, 0xa1, 0x91, 0x2f, 0xb2, + 0xcd, 0x3c, 0x13, 0xd6, 0x4a, 0xeb, 0x75, 0x0b, 0x72, 0x51, 0xc7, 0x13, 0x06, 0xce, 0x99, 0xef, + 0x9b, 0x0d, 0xdd, 0xc0, 0x73, 0xe6, 0xfb, 0x16, 0xca, 0xc9, 0xaf, 0x60, 0xb1, 0xe8, 0x25, 0xa7, + 0xa1, 0x47, 0x13, 0xb3, 0x89, 0xd0, 0x95, 0xf1, 0x3e, 0xf6, 0x50, 0x67, 0xb5, 0xe8, 0xd8, 0x33, + 0x79, 0x04, 0x70, 0x9c, 0x44, 0x2f, 0xd5, 0x62, 0x2c, 0x20, 0xd3, 0x90, 0xcc, 0x91, 0xdc, 0xd2, + 0x30, 0xe4, 0x19, 0xac, 0xc4, 0x4e, 0x92, 0x32, 0xf1, 0x60, 0xa7, 0xc2, 0x13, 0xe4, 0xaa, 0xb7, + 0x90, 0x6b, 0x2a, 0x6e, 0x8e, 0x18, 0xb9, 0x0a, 0x89, 0x27, 0x64, 0x62, 0x70, 0x3c, 0x4a, 0x52, + 0x73, 0x51, 0x1f, 0x5c, 0x2f, 0x4a, 0x52, 0x0b, 0xe5, 0xe4, 0x01, 0xcc, 0xbd, 0x61, 0xa1, 0x17, + 0xbd, 0x31, 0x0d, 0x44, 0x34, 0x25, 0xe2, 0x1b, 0x94, 0x59, 0x4a, 0x47, 0xba, 0xf0, 0x6e, 0x9f, + 0x85, 0xd4, 0x1e, 0x24, 0x0e, 0x0b, 0xa9, 0x67, 0xf3, 0xb3, 0xac, 0xdf, 0x17, 0xdd, 0x4a, 0x13, + 0xea, 0x04, 0xb6, 0x1b, 0x65, 0x61, 0x6a, 0x2e, 0xad, 0x95, 0xd6, 0x2b, 0xca, 0xb9, 0xef, 0x0a, + 0xf8, 0xd7, 0x12, 0xdd, 0x93, 0xe0, 0x1e, 0x62, 0x77, 0x04, 0x94, 0x3c, 0x83, 0xfb, 0x53, 0xed, + 0x9d, 0x3a, 0xa9, 0x7b, 0x66, 0x73, 0xf6, 0x2d, 0x35, 0x89, 0x66, 0xed, 0xce, 0xa4, 0xb5, 0x6d, + 0x81, 0xec, 0xb1, 0x6f, 0xa9, 0x18, 0x01, 0x1d, 0xc6, 0x4e, 0xe8, 0x99, 0xcb, 0xfa, 0x08, 0xf6, + 0x50, 0x66, 0x29, 0x1d, 0xf9, 0x00, 0xe6, 0xe5, 0xbf, 0x4d, 0x73, 0x05, 0x61, 0x0b, 0x3a, 0x6c, + 0xd3, 0xca, 0xb5, 0xe4, 0x09, 0x34, 0x99, 0x08, 0x28, 0xdb, 0x8f, 0xa2, 0xf3, 0x2c, 0x36, 0x4d, + 0x3d, 0x18, 0x30, 0xd4, 0x0e, 0xa2, 0xe8, 0xfc, 0xb7, 0xb1, 0xd5, 0x60, 0xf9, 0x43, 0x16, 0x93, + 0xbb, 0x00, 0xb1, 0x93, 0xd0, 0x30, 0xb5, 0x99, 0x37, 0x34, 0x6f, 0xaf, 0x95, 0xd6, 0x17, 0xac, + 0xba, 0x94, 0x74, 0xbc, 0x61, 0xfb, 0x9f, 0x66, 0xa1, 0x35, 0xee, 0x26, 0x64, 0x5d, 0x4b, 0x10, + 0x64, 0xdc, 0x91, 0x26, 0x92, 0xc4, 0x12, 0x0d, 0xdd, 0xc8, 0xa3, 0x9e, 0x9d, 0x3a, 0xfc, 0xdc, + 0x0e, 0x68, 0xea, 0x98, 0xe5, 0xb5, 0xd9, 0xf5, 0xa6, 0xb5, 0xa8, 0x14, 0x27, 0x0e, 0x3f, 0x3f, + 0xa4, 0xa9, 0x43, 0x3e, 0x81, 0xd6, 0xc8, 0x75, 0xce, 0xe9, 0x05, 0x37, 0x67, 0xd7, 0x66, 0x47, + 0x0b, 0xbf, 0x37, 0x8c, 0x13, 0x6b, 0xa1, 0x40, 0x3c, 0xa7, 0x17, 0x9c, 0x3c, 0x80, 0xaa, 0x7b, + 0xc6, 0x7c, 0x4f, 0xe5, 0x09, 0x2d, 0x59, 0x89, 0xf8, 0xb0, 0xa4, 0x92, 0xbc, 0x07, 0xd5, 0xf4, + 0x22, 0xa6, 0xdc, 0xac, 0xa2, 0x3d, 0x95, 0x4d, 0xf6, 0x19, 0xf5, 0x3d, 0xd1, 0x5d, 0x4b, 0x6a, 0xc9, 0x67, 0xb0, 0xe8, 0xf8, 0xbe, 0xdd, 0x17, 0x72, 0x5b, 0x12, 0xe6, 0xa6, 0x13, 0x16, 0x1c, - 0xdf, 0x2f, 0x9e, 0x38, 0xf9, 0x15, 0x34, 0xdc, 0x28, 0xc8, 0xa3, 0x2e, 0xc6, 0x8c, 0xd6, 0xe6, + 0xdf, 0x2f, 0x9e, 0x38, 0xf9, 0x15, 0x34, 0xdc, 0x28, 0xc8, 0xb3, 0x2e, 0xe6, 0x8c, 0xd6, 0xe6, 0x0d, 0x49, 0xda, 0x19, 0x29, 0x0e, 0x23, 0x2f, 0x9f, 0x1a, 0x1d, 0x4f, 0x0e, 0xe0, 0x66, 0x16, 0xe7, 0xde, 0x98, 0x52, 0x6d, 0xa2, 0x6a, 0xd8, 0xfc, 0x2d, 0x35, 0x2a, 0x39, 0x5d, 0xdb, 0x17, 0x29, 0xe5, 0x3d, 0x9f, 0xb9, 0xd4, 0x5a, 0xce, 0x69, 0x3b, 0x29, 0xcd, 0x67, 0xb1, 0xfd, 0x57, - 0xd0, 0xd0, 0x56, 0x9a, 0x3c, 0x82, 0x15, 0xe9, 0x12, 0x67, 0x4e, 0xe8, 0xf9, 0xd4, 0x8e, 0xfa, - 0x7d, 0x4e, 0x53, 0x6e, 0x96, 0xd6, 0x66, 0xd7, 0x17, 0x2c, 0x82, 0xba, 0xa7, 0xa8, 0x3a, 0x92, - 0x1a, 0xe1, 0x0e, 0xe7, 0x94, 0xc6, 0x76, 0x94, 0x88, 0x68, 0x21, 0x22, 0x7b, 0xcd, 0xaa, 0x0b, - 0xc9, 0x91, 0x10, 0xb4, 0x3f, 0x87, 0xa5, 0x89, 0x9e, 0x90, 0x9f, 0xc1, 0x82, 0xbe, 0xcc, 0xd2, - 0x7c, 0xd3, 0x6a, 0x6a, 0x4b, 0xcc, 0xdb, 0xdf, 0x97, 0xc0, 0xb8, 0x1c, 0x13, 0xa7, 0x3b, 0x48, - 0x69, 0xba, 0x83, 0x3c, 0x82, 0x86, 0xbe, 0x38, 0xe5, 0xe9, 0x8b, 0x03, 0xfd, 0xd1, 0xca, 0xb4, - 0xd1, 0x51, 0x67, 0xaf, 0x72, 0x54, 0x74, 0xd1, 0x5d, 0xb8, 0x1f, 0x25, 0x6c, 0xc0, 0x42, 0xc7, - 0xc7, 0xe9, 0x8f, 0x13, 0x2f, 0x72, 0x33, 0x9a, 0x68, 0xfd, 0xa9, 0x60, 0x7f, 0xee, 0xe4, 0xb0, - 0x9d, 0x94, 0x1e, 0x2b, 0x50, 0x31, 0xed, 0xbf, 0x9f, 0x85, 0xe6, 0x56, 0xb7, 0xfb, 0x9b, 0x8c, - 0x26, 0x17, 0x9d, 0xb0, 0x1f, 0x91, 0xcf, 0x00, 0x5e, 0x89, 0x07, 0xec, 0xec, 0xf8, 0x5e, 0xc9, - 0x71, 0xda, 0x5e, 0xa9, 0xbf, 0xca, 0x05, 0xa4, 0x03, 0x8b, 0x1e, 0xe3, 0xa9, 0x13, 0xba, 0x54, - 0xb4, 0x9e, 0x30, 0x17, 0x17, 0xa1, 0xb5, 0xb9, 0x2a, 0xd9, 0x2f, 0xa8, 0x9b, 0x46, 0xc9, 0xae, - 0x82, 0x1c, 0x22, 0x42, 0x59, 0x69, 0x79, 0x63, 0x52, 0x72, 0x1b, 0xaa, 0x69, 0x14, 0xdb, 0xe7, - 0x38, 0x03, 0x0b, 0x0a, 0x24, 0x4e, 0xb8, 0xe7, 0xe4, 0x3d, 0xe1, 0xb3, 0x7e, 0x16, 0x84, 0x76, - 0xe8, 0x04, 0x14, 0xf7, 0x4f, 0x5d, 0x01, 0x40, 0x2a, 0xba, 0x4e, 0x40, 0xc9, 0xbb, 0x50, 0x57, - 0x30, 0xe6, 0xe1, 0xd9, 0x3a, 0xab, 0x40, 0x35, 0x29, 0xc6, 0x23, 0xa8, 0x91, 0xd0, 0xbe, 0xfd, - 0x9a, 0xba, 0x76, 0xff, 0xf1, 0x26, 0x1e, 0xa9, 0x4d, 0xab, 0x9e, 0xd0, 0xfe, 0x0b, 0xea, 0xee, - 0x3f, 0xde, 0x24, 0xf7, 0xa1, 0x26, 0x3d, 0x90, 0x79, 0x78, 0x3e, 0xe6, 0x16, 0xe6, 0x51, 0xda, - 0x11, 0xe1, 0xad, 0x19, 0x38, 0x43, 0x3b, 0xef, 0x3b, 0x9e, 0x72, 0xa5, 0x7c, 0xa3, 0x04, 0xce, - 0x30, 0x1f, 0x2a, 0xd9, 0x80, 0xd6, 0x59, 0xc8, 0xdf, 0xd8, 0xb4, 0x6f, 0x73, 0xea, 0x24, 0xee, - 0x19, 0x86, 0xc3, 0x7c, 0x5c, 0x4d, 0xa1, 0xdb, 0xeb, 0xf7, 0x50, 0xf3, 0xac, 0x52, 0x9b, 0x37, - 0x6a, 0xed, 0xef, 0xaa, 0x50, 0x1f, 0x9d, 0x27, 0xf7, 0xa1, 0x26, 0x4f, 0x24, 0xe6, 0xe1, 0x82, - 0x14, 0x3d, 0x41, 0x69, 0xc7, 0x23, 0x1b, 0x30, 0x2f, 0x87, 0x95, 0x3b, 0x97, 0x91, 0x6f, 0x62, - 0x1c, 0x6b, 0xd8, 0x8f, 0xac, 0x1c, 0x40, 0x4c, 0xa8, 0x78, 0x94, 0xbb, 0x38, 0xb5, 0xb5, 0x7c, - 0x6a, 0x85, 0x84, 0x7c, 0x08, 0x24, 0x4e, 0x58, 0xe0, 0x24, 0x17, 0x76, 0x31, 0x77, 0x1c, 0x7d, - 0x68, 0xd6, 0x32, 0x94, 0x46, 0x59, 0xf4, 0x38, 0xf9, 0x0a, 0x8c, 0x90, 0x0e, 0x53, 0x3b, 0xa1, - 0x8e, 0x67, 0xd3, 0x70, 0xc0, 0x42, 0x8a, 0x13, 0xdd, 0xca, 0x1b, 0xdf, 0x43, 0x99, 0xe6, 0x2b, - 0x2d, 0x81, 0xb7, 0xa8, 0xe3, 0x49, 0x0d, 0xf9, 0x10, 0xe6, 0x12, 0xe1, 0xd1, 0x79, 0xb8, 0x52, - 0x51, 0xf0, 0x39, 0xbd, 0xb0, 0x84, 0x58, 0xb1, 0x14, 0x86, 0x7c, 0x01, 0xb7, 0xf3, 0xde, 0xc5, - 0x09, 0xed, 0xb3, 0xa1, 0xde, 0xc9, 0x79, 0xec, 0xe4, 0x4d, 0x05, 0x38, 0x46, 0xfd, 0xa8, 0xab, - 0xe3, 0x91, 0xa1, 0x76, 0x29, 0x32, 0x90, 0x35, 0x68, 0x32, 0x6e, 0xf7, 0x1d, 0x9e, 0xca, 0x23, - 0xbf, 0x8e, 0x00, 0x60, 0x7c, 0xdf, 0xe1, 0x29, 0x2e, 0xc0, 0x21, 0xdc, 0x8d, 0x33, 0x7e, 0x46, - 0x3d, 0xdb, 0x8b, 0xde, 0x84, 0x76, 0x9f, 0xf9, 0x29, 0x4d, 0x6c, 0x37, 0x0a, 0x3d, 0x0c, 0xe9, - 0xdc, 0x84, 0x89, 0x80, 0xbf, 0x2a, 0x09, 0xbb, 0xd1, 0x9b, 0x70, 0x1f, 0xe1, 0x3b, 0x05, 0x9a, - 0xec, 0xc0, 0x72, 0x92, 0x85, 0x29, 0x0b, 0x68, 0x6e, 0xca, 0x67, 0x3c, 0x35, 0x1b, 0x68, 0x64, - 0x59, 0x1a, 0xb1, 0x24, 0x40, 0x72, 0xad, 0xa5, 0x44, 0x7f, 0x3c, 0x60, 0x3c, 0x25, 0x1f, 0x81, - 0x21, 0xbc, 0xef, 0x8d, 0xc3, 0x52, 0x1b, 0x4d, 0x05, 0x1c, 0x53, 0xa4, 0xaa, 0x9a, 0xb7, 0x85, - 0xc0, 0x19, 0x7e, 0xe3, 0xb0, 0xf4, 0x84, 0x05, 0xf4, 0x90, 0x93, 0x8f, 0xa1, 0xee, 0x84, 0xa1, - 0x8d, 0xdb, 0x55, 0x25, 0x44, 0x97, 0x76, 0x35, 0xba, 0x49, 0xcd, 0x09, 0x43, 0x7c, 0x6a, 0xff, - 0x5d, 0x05, 0xc8, 0x64, 0xbe, 0xf3, 0xa7, 0xe9, 0x8b, 0xd7, 0xfa, 0x46, 0xf5, 0x5a, 0xdf, 0xf8, - 0x19, 0x8c, 0x8e, 0x66, 0x84, 0xcf, 0x21, 0xbc, 0x59, 0x08, 0x05, 0xe8, 0xb2, 0x87, 0xcc, 0xff, - 0x74, 0x0f, 0xa9, 0xfd, 0x7f, 0x78, 0x48, 0xfd, 0xff, 0xec, 0x21, 0xf0, 0x96, 0x1e, 0xd2, 0x78, - 0x0b, 0x0f, 0xf9, 0x9f, 0x2a, 0x54, 0x44, 0xce, 0x4f, 0x3e, 0x81, 0xba, 0xc8, 0xfa, 0xf5, 0x13, - 0xa3, 0x35, 0xba, 0x12, 0x68, 0x11, 0xa0, 0xf6, 0x52, 0x3d, 0x93, 0x5f, 0x43, 0x0b, 0x29, 0xe2, - 0x4a, 0x20, 0x79, 0x65, 0xfd, 0xa4, 0x11, 0xbc, 0x4b, 0x57, 0xb7, 0xe6, 0x4b, 0x4d, 0x26, 0x2e, - 0x66, 0x98, 0x23, 0x25, 0x34, 0x54, 0xd9, 0xd6, 0xe5, 0x1c, 0xaa, 0xd0, 0x8b, 0xb3, 0x80, 0x85, - 0x21, 0x4d, 0x30, 0x4d, 0xac, 0xe8, 0x67, 0x01, 0x8a, 0x3b, 0xde, 0x90, 0x3c, 0x82, 0x96, 0x4f, - 0xfb, 0xa9, 0x8d, 0x7d, 0xc2, 0x14, 0xae, 0x3a, 0xb1, 0x5e, 0x4d, 0x81, 0x10, 0x1d, 0xc3, 0x0c, - 0x6e, 0x13, 0x16, 0x13, 0x36, 0x38, 0xd3, 0x29, 0x73, 0x93, 0x59, 0x1f, 0x42, 0x0a, 0xce, 0x23, - 0x68, 0xc4, 0x49, 0x74, 0x4a, 0x55, 0x1e, 0x30, 0x7f, 0x45, 0x1e, 0x80, 0x18, 0x99, 0x07, 0x3c, - 0x82, 0xc6, 0x69, 0xc6, 0x8a, 0xcc, 0xa1, 0x76, 0x05, 0x03, 0x31, 0x92, 0xf1, 0x18, 0x16, 0x71, - 0x24, 0x9a, 0xeb, 0xd5, 0x27, 0xfa, 0x85, 0x83, 0xd5, 0xdc, 0xed, 0xe7, 0x60, 0xc8, 0xc1, 0x5c, - 0x1b, 0xd2, 0xe4, 0x80, 0xc7, 0x69, 0x51, 0x7a, 0x36, 0xee, 0xe7, 0x8d, 0x49, 0x1a, 0x62, 0x34, - 0xda, 0x53, 0xb8, 0x23, 0x69, 0xf4, 0x95, 0xc6, 0xb4, 0xfb, 0x49, 0x14, 0xd8, 0x2c, 0x34, 0x9b, - 0x13, 0x16, 0x6e, 0x21, 0x7c, 0xef, 0xd5, 0xc8, 0xc6, 0x7e, 0x12, 0x05, 0x9d, 0x90, 0x3c, 0x81, - 0x5b, 0x8c, 0xdb, 0x61, 0xe6, 0xfb, 0xb6, 0xf3, 0xc6, 0x49, 0xc4, 0x55, 0x31, 0x60, 0xb8, 0x22, - 0x18, 0xe2, 0x6a, 0xd6, 0x32, 0xe3, 0xdd, 0xcc, 0xf7, 0xb7, 0x84, 0xb2, 0x47, 0x03, 0x86, 0xee, - 0x7a, 0xc5, 0xe6, 0x6a, 0xfd, 0x94, 0xcd, 0xd5, 0xfe, 0xef, 0x32, 0x2c, 0x8c, 0x81, 0xc8, 0x0a, - 0x94, 0x55, 0x4c, 0xcc, 0x37, 0x58, 0x99, 0x79, 0xe4, 0x09, 0x18, 0x3c, 0xca, 0x12, 0x97, 0xda, - 0x74, 0x18, 0xab, 0x96, 0xca, 0x93, 0x0b, 0x22, 0x31, 0xe2, 0x3f, 0x6e, 0xdd, 0x27, 0x60, 0xa4, - 0x4e, 0x32, 0xa0, 0xa9, 0xc6, 0x9a, 0xbc, 0x54, 0xb4, 0x24, 0xa6, 0x60, 0x6d, 0x02, 0x29, 0xda, - 0x1a, 0x5d, 0xbe, 0xf5, 0x14, 0xc9, 0xc8, 0xdb, 0x29, 0x2e, 0xe2, 0x9b, 0x40, 0x8a, 0x96, 0x46, - 0x9c, 0xaa, 0xce, 0xc9, 0x5b, 0x29, 0x38, 0x9f, 0xc2, 0x7c, 0xd2, 0x97, 0xbb, 0x76, 0x0e, 0x77, - 0xed, 0xad, 0x29, 0x93, 0xa6, 0x6d, 0xdd, 0xb9, 0xa4, 0x8f, 0x9b, 0x56, 0xf2, 0x82, 0xc8, 0xa3, - 0xea, 0xae, 0x31, 0x8d, 0xa7, 0xdd, 0x36, 0xe6, 0x92, 0xbe, 0x78, 0x6a, 0xff, 0x7b, 0x09, 0xea, - 0x45, 0xc1, 0xe5, 0xc7, 0x4f, 0x20, 0x3d, 0x71, 0x2b, 0x4f, 0x4b, 0xdc, 0xb4, 0x23, 0x6a, 0xf6, - 0x6d, 0x8f, 0xa8, 0xca, 0xc4, 0x11, 0x75, 0x13, 0xe6, 0xb2, 0x90, 0xbd, 0xca, 0x64, 0xda, 0x53, - 0xb3, 0xd4, 0xd3, 0x15, 0x47, 0xd7, 0xdc, 0xf4, 0xa3, 0xab, 0xfd, 0xfb, 0x12, 0xd4, 0x8b, 0xfa, - 0x10, 0xd9, 0x00, 0xd0, 0xf6, 0x52, 0x69, 0x62, 0xc5, 0x35, 0x2d, 0x79, 0x02, 0xad, 0x24, 0x0e, - 0xf5, 0xbd, 0x27, 0xfd, 0x4a, 0x5d, 0xb2, 0xad, 0x38, 0x54, 0x31, 0x28, 0x0e, 0xb5, 0xcd, 0x57, - 0xdc, 0x3c, 0x67, 0xaf, 0xb9, 0x79, 0xb6, 0xbf, 0x2b, 0xe9, 0x05, 0x14, 0xb2, 0x06, 0x55, 0xe1, - 0x87, 0xd3, 0x7a, 0x24, 0x15, 0x64, 0x03, 0xea, 0xa2, 0x33, 0x12, 0x35, 0xb5, 0x1f, 0xb5, 0x44, - 0xfe, 0x79, 0xdb, 0x2e, 0xfc, 0x6b, 0x19, 0x1a, 0x5a, 0x1d, 0x8c, 0xbc, 0x07, 0xb5, 0x41, 0x12, - 0x65, 0xb1, 0x7d, 0x7a, 0x31, 0xa5, 0x1b, 0xf3, 0xa8, 0xdb, 0xbe, 0x10, 0x30, 0x67, 0x30, 0xb0, - 0xfb, 0x59, 0xe8, 0x4e, 0xd9, 0x67, 0xf3, 0xce, 0x60, 0xb0, 0x9f, 0x85, 0x2e, 0x59, 0x83, 0x9a, - 0xbc, 0x82, 0x52, 0x6f, 0x2c, 0xfb, 0x28, 0xa4, 0xe4, 0x63, 0x68, 0x8a, 0x11, 0x15, 0x6d, 0x56, - 0xa6, 0x0d, 0x0a, 0x92, 0x38, 0xfc, 0x5a, 0xb5, 0xac, 0x08, 0x45, 0xeb, 0xd5, 0xab, 0x08, 0x5b, - 0xaa, 0x0f, 0xc5, 0x3c, 0xcc, 0x5d, 0x57, 0x04, 0xf8, 0x02, 0x9a, 0x71, 0x42, 0xd1, 0xec, 0xe4, - 0xce, 0x39, 0x61, 0xfb, 0xbe, 0xc3, 0xcf, 0x8e, 0x13, 0xba, 0x35, 0x18, 0x88, 0xbd, 0x22, 0x4e, - 0x8f, 0xfc, 0x7f, 0xfb, 0xef, 0x4b, 0x50, 0x39, 0x89, 0xe2, 0x2e, 0xf9, 0x00, 0x6a, 0x98, 0xfb, - 0x8e, 0xe6, 0x4e, 0x15, 0x6c, 0xb6, 0x2f, 0x3a, 0x29, 0x0d, 0xac, 0x79, 0xd4, 0x6e, 0x5f, 0x90, - 0xd5, 0xbc, 0x7e, 0x58, 0xd6, 0x2a, 0x41, 0xaa, 0x70, 0xf8, 0x56, 0xcb, 0x26, 0x66, 0x61, 0x94, - 0x4f, 0x15, 0xd3, 0x36, 0xde, 0x5c, 0xa3, 0x40, 0x6c, 0x5f, 0xb4, 0xbf, 0x85, 0x2a, 0xd6, 0x27, - 0x47, 0x6d, 0x97, 0xae, 0x69, 0xbb, 0xfc, 0x53, 0xda, 0x9e, 0xfd, 0xb1, 0xb6, 0xbf, 0x82, 0xca, - 0x73, 0xe6, 0xfb, 0xe4, 0x1d, 0x98, 0x73, 0xa3, 0x30, 0xec, 0xec, 0x8e, 0xb5, 0xad, 0x64, 0xa2, - 0x63, 0x32, 0x29, 0x2a, 0x6b, 0x8e, 0x22, 0x45, 0xed, 0x7f, 0x9c, 0x05, 0x33, 0xef, 0x86, 0xfc, - 0x65, 0x51, 0xd8, 0xcb, 0x02, 0xb1, 0xc9, 0xc9, 0x06, 0x2c, 0xe1, 0x29, 0x13, 0x27, 0x91, 0x4b, - 0x39, 0xa7, 0x9e, 0x8d, 0x9b, 0xba, 0xb4, 0x5e, 0xb1, 0x16, 0x85, 0xe2, 0x38, 0x97, 0x77, 0xc5, - 0x06, 0x5a, 0x0a, 0xb3, 0x40, 0x40, 0xbd, 0xcc, 0xa5, 0x9e, 0x9d, 0x44, 0x6f, 0xb8, 0x5c, 0x05, - 0x6b, 0x31, 0xcc, 0x82, 0x63, 0x25, 0xb7, 0xa2, 0x37, 0x9c, 0xbc, 0x07, 0x2d, 0x81, 0x65, 0x29, - 0x4d, 0x1c, 0xb9, 0xf3, 0x67, 0x11, 0xb8, 0x10, 0x66, 0x41, 0xa7, 0x10, 0x5e, 0x2e, 0xc2, 0x56, - 0x26, 0x8a, 0xb0, 0x6b, 0xe2, 0x2e, 0x1d, 0xba, 0x59, 0x92, 0xd0, 0xd0, 0xbd, 0xc0, 0x30, 0x56, - 0xb1, 0x74, 0x11, 0x39, 0x80, 0x95, 0x94, 0xf5, 0x85, 0x8b, 0x61, 0xe2, 0x2b, 0x82, 0x4d, 0x4a, - 0x87, 0xa9, 0xf2, 0x58, 0x73, 0xcc, 0x09, 0x45, 0x70, 0xde, 0x91, 0xfa, 0xa7, 0x33, 0x16, 0x51, - 0x3c, 0x4d, 0x2a, 0xfa, 0x9d, 0x64, 0xc2, 0x06, 0xcf, 0x82, 0x38, 0xcd, 0x4b, 0x4e, 0x4d, 0x6b, - 0x21, 0xc9, 0x76, 0x46, 0x42, 0xf2, 0x6c, 0xd4, 0x28, 0xe6, 0xae, 0x5c, 0x4e, 0xa7, 0x2a, 0x52, - 0x8f, 0x37, 0x2a, 0xf2, 0x57, 0x35, 0xdd, 0x45, 0x93, 0x9a, 0x6c, 0xbb, 0x09, 0xb0, 0x4b, 0x53, - 0x87, 0xf9, 0x22, 0xaa, 0xb7, 0x07, 0xb0, 0xa2, 0x78, 0xc5, 0x5a, 0x61, 0xcd, 0xe3, 0x08, 0x96, - 0x69, 0x2e, 0x50, 0xcd, 0x31, 0x9a, 0x47, 0xbb, 0x7b, 0xe3, 0xce, 0x76, 0x79, 0x95, 0x2d, 0x42, - 0xc7, 0x25, 0x8c, 0xf2, 0xf6, 0x5f, 0xc2, 0xaa, 0x6a, 0xc8, 0xa2, 0x03, 0x16, 0x85, 0xdd, 0x2c, - 0x38, 0xea, 0x77, 0x42, 0x55, 0x0f, 0xb8, 0x0f, 0x0d, 0xa6, 0xfe, 0xe7, 0x87, 0x58, 0xdd, 0x82, - 0x5c, 0xd4, 0xf1, 0xc4, 0x85, 0x35, 0x41, 0x9e, 0x1d, 0x66, 0x81, 0xf2, 0x82, 0x7a, 0x92, 0x5b, - 0x6a, 0xff, 0x0b, 0x01, 0x32, 0x39, 0xe9, 0xe4, 0x09, 0xac, 0x78, 0x41, 0x9f, 0xa9, 0xca, 0x75, - 0x48, 0x3d, 0x3b, 0x76, 0xdc, 0x73, 0xe5, 0x71, 0xdb, 0x65, 0xb3, 0x64, 0x11, 0xa9, 0xef, 0x49, - 0xf5, 0xb1, 0xd0, 0xea, 0xac, 0x73, 0x16, 0xc7, 0x05, 0xab, 0x3c, 0xc1, 0x92, 0x6a, 0xc9, 0xfa, - 0x0c, 0x4c, 0xc5, 0xf2, 0x9c, 0xd4, 0x29, 0x1a, 0x44, 0xaf, 0x95, 0xce, 0x78, 0x43, 0xea, 0x77, - 0x9d, 0xd4, 0x51, 0xed, 0xa1, 0xef, 0x5e, 0x26, 0xaa, 0x36, 0x91, 0x58, 0x99, 0x20, 0x4a, 0x2d, - 0x12, 0x3f, 0x87, 0x5b, 0x69, 0x94, 0x3a, 0xbe, 0xad, 0xe8, 0x09, 0xb7, 0xfd, 0xc8, 0xf1, 0xc4, - 0xa5, 0xa6, 0x5a, 0x74, 0x75, 0x19, 0x21, 0xbb, 0x88, 0xb0, 0xf8, 0x41, 0xe4, 0x78, 0x78, 0xb1, - 0x59, 0x19, 0x67, 0x52, 0x49, 0x9b, 0xc3, 0xe6, 0x96, 0x74, 0x0a, 0x45, 0xc2, 0xcf, 0xf3, 0xa6, - 0x64, 0xee, 0xcd, 0x43, 0x27, 0xe6, 0x67, 0x51, 0x2a, 0x38, 0xf3, 0xc8, 0x91, 0xf6, 0xb6, 0x85, - 0xb6, 0xa7, 0x94, 0x87, 0x78, 0x95, 0xf4, 0x23, 0xd7, 0xf1, 0x6d, 0xb9, 0x52, 0x1c, 0x1d, 0xb6, - 0x62, 0x35, 0x51, 0x28, 0xfd, 0x00, 0xf7, 0x6e, 0x42, 0x83, 0x28, 0xa5, 0x05, 0xaa, 0x2e, 0xf7, - 0xae, 0x94, 0xe6, 0xb0, 0xf7, 0x61, 0x31, 0xe3, 0x34, 0x91, 0x7d, 0x3d, 0xbd, 0x48, 0xa9, 0xbc, - 0xba, 0x55, 0xac, 0x05, 0x21, 0x16, 0xfd, 0xc4, 0x2a, 0x26, 0xf9, 0x04, 0x6e, 0xc8, 0xae, 0xfa, - 0xd4, 0x49, 0xc2, 0x9c, 0x10, 0x70, 0xbc, 0xc0, 0x55, 0x2c, 0x82, 0xca, 0x03, 0xa9, 0x53, 0xa3, - 0xfb, 0x0b, 0xb8, 0xe3, 0x31, 0x2e, 0xce, 0x13, 0xc4, 0xba, 0x8e, 0x7b, 0x46, 0xed, 0x33, 0x96, - 0xaa, 0x66, 0x9a, 0x48, 0xbc, 0x25, 0x21, 0x82, 0xb2, 0x23, 0x00, 0x4f, 0x59, 0x2a, 0x1b, 0xfc, - 0x35, 0xbc, 0x33, 0xc9, 0x0e, 0x18, 0xe7, 0x8a, 0xbe, 0x80, 0x74, 0xf3, 0x12, 0xfd, 0x90, 0x71, - 0x2e, 0xf9, 0x9f, 0x82, 0x79, 0x79, 0x19, 0xdd, 0x33, 0xea, 0x9e, 0x8b, 0x3e, 0xb7, 0xb4, 0xc9, - 0xcd, 0xd7, 0x70, 0x47, 0x28, 0x0f, 0xb9, 0xc8, 0xaa, 0x78, 0xea, 0xe4, 0xab, 0x97, 0xcf, 0xdd, - 0x22, 0x32, 0x0c, 0xd4, 0x88, 0xc6, 0xf2, 0xe9, 0x5b, 0x85, 0x1a, 0xa7, 0x83, 0x80, 0x86, 0x29, - 0xc7, 0x77, 0x2c, 0x15, 0xab, 0x78, 0x96, 0x9b, 0xcb, 0xc9, 0x0b, 0xbe, 0x4b, 0xf9, 0xe6, 0x72, - 0x64, 0xb5, 0x57, 0xa8, 0x3d, 0xea, 0xa7, 0x8e, 0x74, 0x49, 0x22, 0xd5, 0x28, 0x41, 0x37, 0xbc, - 0x0f, 0x0d, 0xa9, 0x96, 0xc3, 0x5d, 0x46, 0xbd, 0x64, 0xc8, 0x01, 0xbe, 0x0f, 0x8b, 0xc1, 0x6b, - 0xd7, 0xb5, 0x59, 0x18, 0x67, 0xa9, 0x34, 0xb2, 0x22, 0x57, 0x4e, 0x88, 0x3b, 0x42, 0x8a, 0x86, - 0xd6, 0xc1, 0xd0, 0x70, 0xd2, 0xda, 0x0d, 0x04, 0xb6, 0x0a, 0xa0, 0xb4, 0x98, 0x23, 0xa3, 0x2c, - 0x2d, 0x4c, 0xde, 0x1c, 0x21, 0x8f, 0x50, 0x8c, 0x36, 0xd7, 0xa0, 0xe9, 0x07, 0xb8, 0xa7, 0x24, - 0xea, 0x96, 0xec, 0x9d, 0x1f, 0x88, 0x8d, 0x84, 0x88, 0x5f, 0xc2, 0xaa, 0xee, 0xda, 0xd8, 0xb8, - 0x2a, 0xe1, 0x07, 0x1c, 0xdf, 0xbb, 0x54, 0xac, 0x5b, 0x23, 0xef, 0xee, 0x8c, 0xf4, 0x87, 0x9a, - 0xb3, 0x49, 0xf2, 0x29, 0x4b, 0x03, 0x27, 0x16, 0xbc, 0xdb, 0x9a, 0xb3, 0x21, 0x6f, 0x1b, 0x55, - 0x87, 0x9c, 0x7c, 0x04, 0xcb, 0x01, 0x0b, 0x6d, 0xb9, 0x2f, 0x46, 0x0d, 0xad, 0xca, 0x75, 0x0b, - 0x58, 0x78, 0x20, 0x34, 0xbd, 0xbc, 0x05, 0x01, 0x77, 0x86, 0x13, 0xf0, 0x3b, 0x0a, 0xee, 0x0c, - 0xc7, 0xe1, 0x1f, 0xc3, 0x8a, 0xb0, 0xae, 0x36, 0xd4, 0x08, 0xff, 0x8e, 0xdc, 0xd9, 0x01, 0x0b, - 0x2d, 0x54, 0x8d, 0x11, 0x9c, 0xe1, 0x24, 0xe1, 0xae, 0x22, 0x38, 0xc3, 0x4b, 0x84, 0x63, 0x58, - 0x56, 0xbe, 0x66, 0x47, 0x7d, 0x3b, 0x0f, 0xd1, 0xe6, 0x3d, 0x3c, 0x19, 0xd6, 0xc6, 0x8e, 0xa2, - 0x29, 0x91, 0xde, 0x5a, 0x52, 0x64, 0x2d, 0xf8, 0x8f, 0x02, 0x20, 0x2e, 0xea, 0x58, 0xe4, 0xbc, - 0xaf, 0x07, 0xc0, 0xc3, 0xd7, 0xae, 0x3b, 0x3d, 0x72, 0x4a, 0xa2, 0x1e, 0x39, 0xd7, 0x26, 0x88, - 0x5a, 0xe4, 0xfc, 0x0a, 0xee, 0x2a, 0xa2, 0x1f, 0xe4, 0x37, 0xde, 0xb1, 0x66, 0xdf, 0x45, 0xf6, - 0x6d, 0x09, 0x3a, 0x08, 0xe4, 0x3d, 0x4c, 0x6f, 0x7a, 0xaa, 0x05, 0xbd, 0xfd, 0xf6, 0x54, 0x0b, - 0x5a, 0x1f, 0xbe, 0x84, 0xbb, 0xd2, 0x75, 0x5e, 0xe3, 0x5b, 0x00, 0x9b, 0x79, 0x43, 0x19, 0xbe, - 0xf1, 0xd6, 0xcf, 0x1f, 0x9b, 0x9e, 0x8c, 0x1b, 0x08, 0x92, 0x6f, 0x0a, 0x3a, 0xde, 0x50, 0x04, - 0x70, 0x71, 0xd5, 0xef, 0x3d, 0x26, 0x3b, 0x70, 0xff, 0x1a, 0x03, 0x1e, 0xe3, 0xe7, 0x26, 0x45, - 0x13, 0xab, 0xd3, 0x4d, 0xec, 0x32, 0x7e, 0x4e, 0xf6, 0x60, 0xed, 0x1a, 0x23, 0x18, 0xcb, 0xcc, - 0x3e, 0x5a, 0xb9, 0x33, 0xdd, 0x0a, 0x06, 0xb3, 0xab, 0x07, 0x93, 0x57, 0xd9, 0x06, 0x57, 0x0d, - 0x46, 0x95, 0xda, 0xa6, 0x0d, 0x46, 0xbe, 0x19, 0x28, 0x4c, 0x9c, 0x4d, 0x1b, 0x8c, 0x7c, 0x47, - 0xa0, 0x8c, 0x1c, 0xc1, 0x7b, 0x57, 0x19, 0x79, 0xcd, 0x38, 0x4b, 0x45, 0xba, 0x19, 0x79, 0x94, - 0x9b, 0x0c, 0x4d, 0xad, 0x4d, 0x33, 0xf5, 0x42, 0x02, 0xbb, 0x02, 0x47, 0x7a, 0xf0, 0xc1, 0x55, - 0x06, 0x3d, 0xc6, 0x5d, 0x27, 0xf1, 0x0a, 0x93, 0x2f, 0xd1, 0x64, 0x7b, 0x9a, 0xc9, 0xdd, 0x1c, - 0x2a, 0x8d, 0xee, 0xc3, 0xbb, 0x13, 0x46, 0x31, 0xfc, 0xbe, 0xa6, 0x6e, 0x31, 0xd8, 0xf3, 0x69, - 0x73, 0x2e, 0xe2, 0xf9, 0x0b, 0xea, 0xaa, 0xd1, 0x1e, 0xc0, 0x83, 0xe9, 0x76, 0xb0, 0x36, 0xc4, - 0x0b, 0x53, 0x3e, 0x9a, 0xba, 0x37, 0x69, 0xea, 0x08, 0x71, 0xd2, 0x5a, 0xfb, 0x1f, 0x4a, 0x45, - 0x06, 0xa5, 0x65, 0x8b, 0xe4, 0x01, 0xb4, 0x02, 0x16, 0x9e, 0xf4, 0x8e, 0x64, 0xe2, 0x59, 0x64, - 0xeb, 0x4d, 0x29, 0x15, 0xd0, 0x2e, 0x27, 0x8f, 0xe1, 0x66, 0xcc, 0x62, 0xea, 0xb3, 0x90, 0xda, - 0xaf, 0x32, 0x9a, 0xd1, 0x02, 0x2d, 0x33, 0xb5, 0xe5, 0x5c, 0xfb, 0x1b, 0xa1, 0x54, 0xa4, 0xcf, - 0xc0, 0x2c, 0x48, 0xa7, 0x09, 0x75, 0xce, 0x69, 0x52, 0xd0, 0x54, 0xc2, 0x94, 0xeb, 0xb7, 0xa5, - 0x5a, 0x12, 0xdb, 0xdf, 0x42, 0xa5, 0x17, 0x25, 0x29, 0x79, 0x1f, 0xe6, 0x4f, 0xf1, 0x0a, 0xc3, - 0xa7, 0x5f, 0xe1, 0x94, 0x92, 0x3c, 0x80, 0x05, 0xc6, 0xb1, 0x70, 0xef, 0xf8, 0x82, 0xa8, 0xde, - 0x84, 0x8e, 0x0b, 0xdf, 0xf2, 0x0e, 0xfe, 0xd7, 0x65, 0x30, 0xe4, 0x57, 0x09, 0xfb, 0x89, 0x13, - 0xd0, 0xed, 0x28, 0x0b, 0xc5, 0x2d, 0xab, 0xa2, 0x15, 0x7a, 0x6f, 0xe8, 0xdf, 0x2e, 0x20, 0x40, - 0x2b, 0xfc, 0x20, 0x90, 0xb4, 0xa1, 0x9e, 0x85, 0xa7, 0x42, 0x45, 0xbd, 0xb1, 0x3b, 0xd4, 0x48, - 0x4c, 0x6e, 0xc2, 0x9c, 0x7c, 0xc3, 0xab, 0x26, 0x43, 0x3d, 0x91, 0x75, 0xa8, 0xbb, 0x8e, 0xef, - 0x8a, 0xfb, 0x32, 0x57, 0x77, 0x49, 0xfd, 0x3e, 0x3f, 0x52, 0x92, 0x3f, 0x87, 0x46, 0x5f, 0x74, - 0xd2, 0xc6, 0xf7, 0x45, 0xea, 0x7b, 0x9a, 0xb1, 0xda, 0x09, 0xaa, 0xf1, 0xd5, 0x12, 0xf9, 0x05, - 0x2c, 0xb8, 0x41, 0x2c, 0x53, 0x50, 0xad, 0x8e, 0xa5, 0x3e, 0x80, 0x41, 0xcc, 0x4e, 0x10, 0x8b, - 0x14, 0x14, 0x0b, 0xac, 0x0d, 0x77, 0xf4, 0xd0, 0xfe, 0xdb, 0x12, 0x34, 0xb4, 0x49, 0xb9, 0x6e, - 0x3e, 0x10, 0x30, 0x31, 0x1f, 0x1f, 0x42, 0x95, 0xa7, 0x8e, 0x5a, 0x99, 0xe2, 0xab, 0x9b, 0xcb, - 0xf3, 0x6c, 0x49, 0x10, 0x59, 0x87, 0x59, 0x1a, 0xe6, 0xeb, 0x74, 0x15, 0x56, 0x40, 0xda, 0xdf, - 0x97, 0x60, 0x4e, 0x6a, 0xc8, 0x07, 0x50, 0xef, 0x67, 0xa1, 0x6b, 0x63, 0xe9, 0x6a, 0xb2, 0x5a, - 0x52, 0x13, 0xca, 0x5d, 0xca, 0xdd, 0x89, 0x2b, 0x73, 0xf9, 0x47, 0xae, 0xcc, 0x63, 0xa5, 0x84, - 0xd9, 0xeb, 0x4a, 0x09, 0x1f, 0x40, 0x15, 0x27, 0x5c, 0x7d, 0xe2, 0xb0, 0x34, 0xd1, 0x73, 0x4b, - 0xea, 0x47, 0xae, 0x58, 0xbd, 0xce, 0x15, 0xbf, 0x84, 0x26, 0x16, 0x5a, 0x58, 0x38, 0x10, 0x43, - 0x20, 0x1f, 0xc3, 0xc2, 0x40, 0x3d, 0x63, 0xd5, 0x69, 0xca, 0x28, 0x9b, 0x03, 0x8d, 0xd0, 0x7e, - 0x0a, 0x8d, 0xdc, 0x40, 0x8f, 0xa6, 0xe4, 0x0b, 0x68, 0x8d, 0xf1, 0xf3, 0x5d, 0xa5, 0x5e, 0x40, - 0xe8, 0x6d, 0x59, 0x0b, 0xba, 0x21, 0xde, 0xfe, 0xae, 0x04, 0x73, 0xf2, 0x13, 0x16, 0xf2, 0xa9, - 0xd6, 0x8b, 0xe2, 0xf3, 0x84, 0x62, 0xb0, 0x5a, 0x7b, 0xa3, 0xce, 0xf4, 0x68, 0xca, 0xdf, 0xb2, - 0x9e, 0x61, 0xc2, 0xfc, 0x6b, 0x9a, 0xe0, 0xb7, 0x19, 0x72, 0x57, 0xe4, 0x8f, 0xed, 0x8f, 0xa0, - 0x2e, 0xfa, 0x22, 0x3f, 0x62, 0xf8, 0xd1, 0xea, 0x5c, 0xfb, 0x6f, 0x4a, 0x30, 0xaf, 0x3e, 0xba, - 0x21, 0x0f, 0x01, 0xe2, 0x24, 0x7a, 0x39, 0x36, 0xe8, 0xc5, 0x11, 0x45, 0x7e, 0xa1, 0x51, 0x17, - 0x10, 0x59, 0xad, 0x7b, 0x02, 0x37, 0x07, 0x34, 0xa4, 0x89, 0x23, 0x0e, 0x14, 0x95, 0x82, 0x86, - 0x4e, 0xa0, 0xbe, 0x63, 0xa8, 0x5b, 0x2b, 0x85, 0x56, 0x26, 0xa2, 0x5d, 0xa1, 0x7b, 0xbb, 0xf8, - 0xb2, 0xf1, 0x7d, 0x59, 0x7e, 0xbd, 0x87, 0xd5, 0xe1, 0x25, 0x58, 0x10, 0xbf, 0xc5, 0xab, 0x46, - 0x63, 0x26, 0x17, 0x15, 0xb5, 0x5f, 0xa3, 0x94, 0x8b, 0x8a, 0x92, 0xa9, 0x51, 0x26, 0xcb, 0xb0, - 0x28, 0x44, 0x5a, 0xb1, 0xd0, 0x98, 0x25, 0x4d, 0xa8, 0xa1, 0xb5, 0x28, 0xee, 0x1a, 0x15, 0xb2, - 0x00, 0x75, 0xf1, 0x84, 0x85, 0x26, 0xa3, 0x5a, 0x18, 0xc1, 0x2c, 0x6f, 0x6b, 0x30, 0x30, 0xe6, - 0x72, 0xfc, 0xb3, 0x88, 0x85, 0xc6, 0x7c, 0xfe, 0xf4, 0x9c, 0xf9, 0xbe, 0x51, 0x23, 0x37, 0x81, - 0x88, 0xa7, 0xf1, 0x8f, 0x89, 0x8c, 0x3a, 0x31, 0x61, 0x45, 0x97, 0xe7, 0xdf, 0x86, 0x18, 0x40, - 0x08, 0xb4, 0x84, 0x66, 0x54, 0x42, 0x35, 0x1a, 0x64, 0x15, 0x6e, 0xa2, 0x6c, 0xe2, 0x9d, 0xaa, - 0xd1, 0xcc, 0xdb, 0x13, 0xa1, 0xd9, 0x58, 0x20, 0x2d, 0x00, 0xf1, 0x24, 0xf7, 0x8a, 0xd1, 0xca, - 0x9f, 0xe5, 0x0a, 0x1a, 0x8b, 0x64, 0x11, 0x1a, 0xa3, 0xe7, 0x4d, 0xc3, 0xc8, 0x67, 0x40, 0xfb, - 0x7e, 0xc6, 0x58, 0xd9, 0xf8, 0x1c, 0x9a, 0xfa, 0x37, 0x23, 0x82, 0x75, 0xec, 0x70, 0x7e, 0x72, - 0x96, 0x44, 0xd9, 0xe0, 0xcc, 0x98, 0x11, 0x93, 0xb2, 0x9d, 0x44, 0x8e, 0xe7, 0x3a, 0x3c, 0x35, - 0x4a, 0xa4, 0x06, 0x95, 0xa7, 0x0e, 0x3f, 0x33, 0xca, 0x1b, 0xbf, 0x84, 0xc5, 0x4b, 0x9f, 0xff, - 0x08, 0x65, 0xf7, 0xa8, 0xbb, 0x67, 0xcc, 0x88, 0x7f, 0xfb, 0x5b, 0xbd, 0x13, 0xa3, 0x44, 0x56, - 0xc0, 0x78, 0xda, 0xf9, 0xfa, 0xa9, 0xbd, 0x73, 0x74, 0x78, 0x6c, 0xed, 0xf5, 0x7a, 0x9d, 0xa3, - 0xae, 0x51, 0xde, 0x78, 0x08, 0x30, 0x7a, 0xf3, 0x4f, 0xea, 0x50, 0xc5, 0x94, 0x5d, 0x12, 0x4f, - 0xd8, 0xf3, 0x17, 0x46, 0x89, 0x34, 0x60, 0x5e, 0x1d, 0xbe, 0x46, 0x79, 0xe3, 0x31, 0x2c, 0xaa, - 0x73, 0x5a, 0xf4, 0xfe, 0x39, 0x0b, 0xc5, 0x61, 0x40, 0x3a, 0xdd, 0x17, 0x5b, 0x07, 0x9d, 0x5d, - 0xbb, 0xd3, 0xdd, 0xdd, 0xfb, 0x9d, 0xfd, 0xbc, 0xd3, 0xdd, 0x95, 0x16, 0x9e, 0x76, 0x7b, 0xdf, - 0x18, 0xa5, 0x8d, 0x53, 0x58, 0x99, 0xf6, 0x39, 0x09, 0xb9, 0x03, 0xb7, 0x72, 0xe6, 0x6e, 0xa7, - 0x77, 0xb2, 0xd5, 0xdd, 0xd9, 0xb3, 0x0f, 0xf7, 0x4e, 0xac, 0xce, 0x8e, 0x31, 0x43, 0xe6, 0xa0, - 0x7c, 0xf0, 0x89, 0x51, 0xc2, 0xdf, 0x4d, 0xa3, 0x4c, 0x00, 0xe6, 0x76, 0x8e, 0x7a, 0x9d, 0xee, - 0x9e, 0x31, 0x2b, 0x3c, 0xa2, 0xd3, 0xed, 0xee, 0x59, 0xf6, 0xb1, 0x75, 0xb4, 0xfb, 0xdb, 0x9d, - 0x13, 0xa3, 0xb2, 0xf1, 0xc9, 0xe8, 0xc3, 0x18, 0x1c, 0xca, 0x0a, 0x18, 0x9d, 0xf0, 0xb5, 0xe3, - 0x33, 0xaf, 0x90, 0x19, 0x33, 0x62, 0x2c, 0x47, 0x32, 0xe2, 0x19, 0xa5, 0x8d, 0x7f, 0x2e, 0x41, - 0x2d, 0x7f, 0xe5, 0x39, 0x72, 0xde, 0x90, 0x26, 0xe8, 0x56, 0x33, 0xe4, 0x06, 0x2c, 0xa1, 0x1b, - 0xd2, 0x7e, 0x7a, 0x94, 0xa5, 0x4a, 0x5c, 0xca, 0xfd, 0xcb, 0x62, 0x83, 0x33, 0x4d, 0x5e, 0x26, - 0x06, 0x34, 0xa5, 0xaf, 0xcb, 0x17, 0x57, 0xc6, 0xac, 0xe8, 0x03, 0xba, 0x7a, 0x98, 0xb2, 0x42, - 0x5a, 0x21, 0xb7, 0xe1, 0xc6, 0x98, 0xd9, 0x42, 0x55, 0x25, 0x77, 0xe1, 0x76, 0x4e, 0x98, 0x54, - 0xcf, 0x6d, 0xac, 0x41, 0x53, 0x7f, 0xd5, 0x9a, 0xb7, 0x28, 0xfc, 0x40, 0x76, 0x79, 0xe3, 0x17, - 0xb0, 0x34, 0xf1, 0x5a, 0x47, 0xcc, 0x60, 0xa7, 0x2b, 0x07, 0x7f, 0xd8, 0xe9, 0xda, 0x87, 0x5b, - 0xbf, 0x33, 0x4a, 0x82, 0xbb, 0x7d, 0x70, 0x74, 0x74, 0x68, 0xef, 0x77, 0x0e, 0x4e, 0xf6, 0x2c, - 0xa3, 0xbc, 0xb1, 0x71, 0x89, 0x8b, 0x9e, 0x24, 0x3c, 0xe2, 0x68, 0x67, 0xeb, 0xc0, 0x98, 0x11, - 0x0b, 0xf0, 0xf5, 0xc1, 0xd1, 0xf6, 0xd6, 0x81, 0x51, 0xda, 0xd8, 0x86, 0xa5, 0x89, 0x62, 0xb6, - 0x70, 0xd9, 0xfd, 0x28, 0x71, 0xa9, 0x14, 0x49, 0x0f, 0xd8, 0xca, 0xd2, 0xc8, 0x28, 0x89, 0x1d, - 0x86, 0x2a, 0xb9, 0x87, 0x59, 0x38, 0x30, 0xca, 0x1b, 0x5f, 0xc2, 0xe2, 0xa5, 0x3c, 0x44, 0xf8, - 0xf8, 0x7e, 0xe4, 0xfb, 0xd1, 0x1b, 0x81, 0x40, 0x97, 0x3f, 0x4e, 0xa8, 0x4b, 0x3d, 0xf1, 0x58, - 0x12, 0x1b, 0x6b, 0x07, 0x4b, 0x9d, 0xe2, 0xfa, 0x6c, 0x94, 0x37, 0x8e, 0xc0, 0xb8, 0x7c, 0xf6, - 0x93, 0x79, 0x98, 0xed, 0x84, 0xa9, 0x31, 0x23, 0x3a, 0xbe, 0xef, 0x47, 0x4e, 0x2a, 0x1d, 0x78, - 0x97, 0xba, 0x2c, 0x70, 0x7c, 0xa3, 0x2c, 0xf6, 0xee, 0xae, 0x93, 0x52, 0x91, 0x59, 0xca, 0xb8, - 0xb3, 0x9b, 0xc9, 0x0a, 0xac, 0x51, 0x11, 0xce, 0x7d, 0x29, 0x13, 0x10, 0x43, 0x10, 0x37, 0x22, - 0x39, 0x7c, 0x6c, 0x8d, 0x1b, 0x25, 0x9c, 0x0a, 0x71, 0x40, 0x70, 0xa3, 0xbc, 0xfd, 0x67, 0x7f, - 0xfc, 0xe1, 0x5e, 0xe9, 0xdf, 0x7e, 0xb8, 0x57, 0xfa, 0xcf, 0x1f, 0xee, 0x95, 0xfe, 0xf0, 0x5f, - 0xf7, 0x66, 0xe0, 0x86, 0x1b, 0x05, 0x0f, 0xc5, 0xe1, 0xe1, 0x3a, 0xf1, 0xc3, 0x94, 0x79, 0xa7, - 0x18, 0x4e, 0x8f, 0x4b, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xf9, 0x7c, 0xee, 0x4b, 0x2d, - 0x00, 0x00, + 0x25, 0x68, 0x68, 0x4b, 0x4d, 0x1e, 0xc1, 0x8a, 0xf4, 0x89, 0x33, 0x27, 0xf4, 0x7c, 0x6a, 0x47, + 0xfd, 0x3e, 0xa7, 0x29, 0x37, 0x4b, 0x6b, 0xb3, 0xeb, 0x0b, 0x16, 0x41, 0xdd, 0x53, 0x54, 0x1d, + 0x49, 0x8d, 0xf0, 0x87, 0x73, 0x4a, 0x63, 0x3b, 0x4a, 0x44, 0xba, 0x10, 0xa9, 0xbd, 0x66, 0xd5, + 0x85, 0xe4, 0x48, 0x08, 0x44, 0x2e, 0xc7, 0x69, 0x4d, 0x68, 0xa8, 0x16, 0xe8, 0xf2, 0xb4, 0x17, + 0xfa, 0xf6, 0xe7, 0xb0, 0x34, 0xd1, 0x6d, 0xf2, 0x33, 0x58, 0xd0, 0x7d, 0x42, 0x76, 0xa5, 0x69, + 0x35, 0x35, 0x7f, 0xe0, 0xed, 0xef, 0x4b, 0x60, 0x5c, 0x4e, 0xa0, 0xd3, 0xbd, 0xa9, 0x34, 0xdd, + 0x9b, 0x1e, 0x41, 0x43, 0x5f, 0xc9, 0xf2, 0xf4, 0x95, 0x84, 0xfe, 0x68, 0x19, 0xdb, 0xe8, 0xd5, + 0xb3, 0x57, 0x79, 0x35, 0xfa, 0xf3, 0x2e, 0xdc, 0x8f, 0x12, 0x36, 0x60, 0xa1, 0xe3, 0xe3, 0x5a, + 0xc5, 0x89, 0x17, 0xb9, 0x19, 0x4d, 0xb4, 0xfe, 0x54, 0xb0, 0x3f, 0x77, 0x72, 0xd8, 0x4e, 0x4a, + 0x8f, 0x15, 0xa8, 0x58, 0xa3, 0xdf, 0xcf, 0x42, 0x73, 0xab, 0xdb, 0xfd, 0x4d, 0x46, 0x93, 0x8b, + 0x4e, 0xd8, 0x8f, 0xc8, 0x67, 0x00, 0xaf, 0xc4, 0x03, 0x76, 0x76, 0x3c, 0xb0, 0x72, 0x9c, 0x16, + 0x58, 0xf5, 0x57, 0xb9, 0x80, 0x74, 0x60, 0xd1, 0x63, 0x3c, 0x75, 0x42, 0x97, 0x8a, 0xd6, 0x13, + 0xe6, 0xe2, 0x82, 0xb5, 0x36, 0x57, 0x25, 0xfb, 0x05, 0x75, 0xd3, 0x28, 0xd9, 0x55, 0x90, 0x43, + 0x44, 0x28, 0x2b, 0x2d, 0x6f, 0x4c, 0x4a, 0x6e, 0x43, 0x35, 0x8d, 0x62, 0xfb, 0x1c, 0x67, 0x60, + 0x41, 0x81, 0xc4, 0x76, 0xf8, 0x9c, 0xbc, 0x27, 0x1c, 0xdc, 0xcf, 0x82, 0xd0, 0x0e, 0x9d, 0x80, + 0x62, 0xb0, 0xd5, 0x15, 0x00, 0xa4, 0xa2, 0xeb, 0x04, 0x94, 0xbc, 0x0b, 0x75, 0x05, 0x63, 0x1e, + 0x6e, 0xc4, 0xb3, 0x0a, 0x54, 0x93, 0x62, 0xdc, 0xaf, 0x1a, 0x09, 0xed, 0xdb, 0xaf, 0xa9, 0x6b, + 0xf7, 0x1f, 0x6f, 0xe2, 0xfe, 0xdb, 0xb4, 0xea, 0x09, 0xed, 0xbf, 0xa0, 0xee, 0xfe, 0xe3, 0x4d, + 0x72, 0x1f, 0x6a, 0xd2, 0x5b, 0x99, 0x87, 0x9b, 0x69, 0x6e, 0x61, 0x1e, 0xa5, 0x1d, 0x91, 0x0b, + 0x9b, 0x81, 0x33, 0xb4, 0xf3, 0xbe, 0xe3, 0x96, 0x58, 0xca, 0xa3, 0x2a, 0x70, 0x86, 0xf9, 0x50, + 0xc9, 0x06, 0xb4, 0xce, 0x42, 0xfe, 0xc6, 0xa6, 0x7d, 0x9b, 0x53, 0x27, 0x71, 0xcf, 0x30, 0x77, + 0xe6, 0xe3, 0x6a, 0x0a, 0xdd, 0x5e, 0xbf, 0x87, 0x9a, 0x67, 0x95, 0xda, 0xbc, 0x51, 0x6b, 0x7f, + 0x57, 0x85, 0xfa, 0x68, 0xf3, 0xb9, 0x0f, 0x35, 0xb9, 0x7d, 0x31, 0x0f, 0x17, 0xa4, 0xe8, 0x09, + 0x4a, 0x3b, 0x1e, 0xd9, 0x80, 0x79, 0x39, 0xac, 0xdc, 0xb9, 0x8c, 0x3c, 0xe2, 0x71, 0xac, 0x61, + 0x3f, 0xb2, 0x72, 0x00, 0x31, 0xa1, 0xe2, 0x51, 0xee, 0xe2, 0xd4, 0xd6, 0xf2, 0xa9, 0x15, 0x12, + 0xf2, 0x21, 0x90, 0x38, 0x61, 0x81, 0x93, 0x5c, 0xd8, 0xc5, 0xdc, 0x71, 0xf4, 0xa1, 0x59, 0xcb, + 0x50, 0x1a, 0x65, 0xd1, 0xe3, 0xe4, 0x2b, 0x30, 0x42, 0x3a, 0x4c, 0xed, 0x84, 0x3a, 0x9e, 0x4d, + 0xc3, 0x01, 0x0b, 0x29, 0x4e, 0x74, 0x2b, 0x6f, 0x7c, 0x0f, 0x65, 0x9a, 0xaf, 0xb4, 0x04, 0xde, + 0xa2, 0x8e, 0x27, 0x35, 0xe4, 0x43, 0x98, 0x4b, 0x84, 0x47, 0xe7, 0xb9, 0x4d, 0xc5, 0xee, 0x73, + 0x7a, 0x61, 0x09, 0xb1, 0x62, 0x29, 0x0c, 0xf9, 0x02, 0x6e, 0xe7, 0xbd, 0x8b, 0x13, 0xda, 0x67, + 0x43, 0xbd, 0x93, 0xf3, 0xd8, 0xc9, 0x9b, 0x0a, 0x70, 0x8c, 0xfa, 0x51, 0x57, 0xc7, 0xb3, 0x48, + 0xed, 0x72, 0x16, 0x59, 0x83, 0x26, 0xe3, 0x76, 0xdf, 0xe1, 0xa9, 0x3c, 0x1f, 0xd4, 0x11, 0x00, + 0x8c, 0xef, 0x3b, 0x3c, 0xc5, 0x05, 0x38, 0x84, 0xbb, 0x71, 0xc6, 0xcf, 0xa8, 0x67, 0x7b, 0xd1, + 0x9b, 0xd0, 0xee, 0x33, 0x3f, 0xa5, 0x89, 0xed, 0x46, 0xa1, 0x87, 0xf9, 0x9f, 0x9b, 0x30, 0xb1, + 0x3b, 0xac, 0x4a, 0xc2, 0x6e, 0xf4, 0x26, 0xdc, 0x47, 0xf8, 0x4e, 0x81, 0x26, 0x3b, 0xb0, 0x9c, + 0x64, 0x61, 0xca, 0x02, 0x9a, 0x9b, 0xf2, 0x19, 0x4f, 0xcd, 0x06, 0x1a, 0x59, 0x96, 0x46, 0x2c, + 0x09, 0x90, 0x5c, 0x6b, 0x29, 0xd1, 0x1f, 0x0f, 0x18, 0x4f, 0xc9, 0x47, 0x60, 0x08, 0xef, 0x7b, + 0xe3, 0xb0, 0xd4, 0x46, 0x53, 0x01, 0xc7, 0xf3, 0x54, 0x55, 0xcd, 0xdb, 0x42, 0xe0, 0x0c, 0xbf, + 0x71, 0x58, 0x7a, 0xc2, 0x02, 0x7a, 0xc8, 0xc9, 0xc7, 0x50, 0x77, 0xc2, 0xd0, 0xc6, 0x70, 0x55, + 0xa7, 0xa7, 0x4b, 0x51, 0x8d, 0x6e, 0x52, 0x73, 0xc2, 0x10, 0x9f, 0xda, 0x7f, 0x57, 0x01, 0x32, + 0x79, 0x38, 0xfa, 0xd3, 0xf4, 0xc5, 0x6b, 0x7d, 0xa3, 0x7a, 0xad, 0x6f, 0xfc, 0x0c, 0x46, 0xfb, + 0x38, 0xc2, 0xe7, 0x10, 0xde, 0x2c, 0x84, 0x02, 0x74, 0xd9, 0x43, 0xe6, 0x7f, 0xba, 0x87, 0xd4, + 0xfe, 0x3f, 0x3c, 0xa4, 0xfe, 0x7f, 0xf6, 0x10, 0x78, 0x4b, 0x0f, 0x69, 0xbc, 0x85, 0x87, 0xfc, + 0x4f, 0x15, 0x2a, 0xe2, 0x82, 0x40, 0x3e, 0x81, 0xba, 0xb8, 0x22, 0xe8, 0x3b, 0x46, 0x6b, 0x74, + 0x7f, 0xd0, 0x32, 0x40, 0xed, 0xa5, 0x7a, 0x26, 0xbf, 0x86, 0x16, 0x52, 0xc4, 0xfd, 0x41, 0xf2, + 0xca, 0xfa, 0x4e, 0x23, 0x78, 0x97, 0xee, 0x79, 0xcd, 0x97, 0x9a, 0xec, 0xa7, 0xec, 0xfc, 0x62, + 0x2f, 0x60, 0x61, 0x48, 0x13, 0x3c, 0x53, 0x56, 0xf4, 0xbd, 0x00, 0xc5, 0x1d, 0x6f, 0x48, 0x1e, + 0x41, 0xcb, 0xa7, 0xfd, 0xd4, 0xc6, 0x3e, 0xe1, 0x79, 0xaf, 0x3a, 0xb1, 0x5e, 0x4d, 0x81, 0x10, + 0x1d, 0xc3, 0xe3, 0xde, 0x26, 0x2c, 0x26, 0x6c, 0x70, 0xa6, 0x53, 0xe6, 0x26, 0x8f, 0x88, 0x08, + 0x29, 0x38, 0x8f, 0xa0, 0x11, 0x27, 0xd1, 0x29, 0x55, 0xe7, 0x80, 0xf9, 0x2b, 0xce, 0x01, 0x88, + 0x91, 0xe7, 0x80, 0x47, 0xd0, 0x38, 0xcd, 0x58, 0x71, 0x72, 0xa8, 0x5d, 0xc1, 0x40, 0x8c, 0x64, + 0x3c, 0x86, 0x45, 0x1c, 0x89, 0xe6, 0x7a, 0xf5, 0x89, 0x7e, 0xe1, 0x60, 0x35, 0x77, 0xfb, 0x39, + 0x18, 0x72, 0x30, 0xd7, 0xa6, 0x34, 0x39, 0xe0, 0x71, 0x5a, 0x94, 0x9e, 0x8d, 0xfb, 0x79, 0x63, + 0x92, 0x86, 0x18, 0x8d, 0xf6, 0x14, 0xee, 0x48, 0x1a, 0x7d, 0xa5, 0x31, 0xed, 0x7e, 0x12, 0x05, + 0x36, 0x0b, 0xcd, 0xe6, 0x84, 0x85, 0x5b, 0x08, 0xdf, 0x7b, 0x35, 0xb2, 0xb1, 0x9f, 0x44, 0x41, + 0x27, 0x24, 0x4f, 0xe0, 0x16, 0xe3, 0x76, 0x98, 0xf9, 0xbe, 0xed, 0xbc, 0x71, 0x12, 0x71, 0xaf, + 0x0c, 0x18, 0xae, 0x08, 0xa6, 0xb8, 0x9a, 0xb5, 0xcc, 0x78, 0x37, 0xf3, 0xfd, 0x2d, 0xa1, 0xec, + 0xd1, 0x80, 0xa1, 0xbb, 0x5e, 0x11, 0x5c, 0xad, 0x9f, 0x12, 0x5c, 0xed, 0xff, 0x2e, 0xc3, 0xc2, + 0x18, 0x88, 0xac, 0x40, 0x59, 0xe5, 0xc4, 0x3c, 0xc0, 0xca, 0xcc, 0x23, 0x4f, 0xc0, 0xe0, 0x51, + 0x96, 0xb8, 0xd4, 0xa6, 0xc3, 0x58, 0xb5, 0x54, 0x9e, 0x5c, 0x10, 0x89, 0x11, 0xff, 0x31, 0x74, + 0x9f, 0x80, 0x91, 0x3a, 0xc9, 0x80, 0xa6, 0x1a, 0x6b, 0xf2, 0x06, 0xd2, 0x92, 0x98, 0x82, 0xb5, + 0x09, 0xa4, 0x68, 0x6b, 0x74, 0x53, 0xd7, 0x8f, 0x48, 0x46, 0xde, 0x4e, 0x71, 0x6b, 0xdf, 0x04, + 0x52, 0xb4, 0x34, 0xe2, 0x54, 0x75, 0x4e, 0xde, 0x4a, 0xc1, 0xf9, 0x14, 0xe6, 0x93, 0xbe, 0x8c, + 0xda, 0x39, 0x8c, 0xda, 0x5b, 0x53, 0x26, 0x4d, 0x0b, 0xdd, 0xb9, 0xa4, 0x8f, 0x41, 0x2b, 0x79, + 0x41, 0xe4, 0x51, 0x75, 0x31, 0x99, 0xc6, 0xd3, 0xae, 0x26, 0x73, 0x49, 0x5f, 0x3c, 0xb5, 0xff, + 0xbd, 0x04, 0xf5, 0xa2, 0x3a, 0xf3, 0xe3, 0x3b, 0x90, 0x7e, 0x70, 0x2b, 0x4f, 0x3b, 0xb8, 0x69, + 0x5b, 0xd4, 0xec, 0xdb, 0x6e, 0x51, 0x95, 0x89, 0x2d, 0xea, 0x26, 0xcc, 0x65, 0x21, 0x7b, 0x95, + 0xc9, 0x63, 0x4f, 0xcd, 0x52, 0x4f, 0x57, 0x6c, 0x5d, 0x73, 0xd3, 0xb7, 0xae, 0xf6, 0xef, 0x4b, + 0x50, 0x2f, 0x8a, 0x49, 0x64, 0x03, 0x40, 0x8b, 0xa5, 0xd2, 0xc4, 0x8a, 0x6b, 0x5a, 0xf2, 0x04, + 0x5a, 0x49, 0x1c, 0xea, 0xb1, 0x27, 0xfd, 0x4a, 0xdd, 0xc8, 0xad, 0x38, 0x54, 0x39, 0x28, 0x0e, + 0xb5, 0xe0, 0x2b, 0xae, 0xa9, 0xb3, 0xd7, 0x5c, 0x53, 0xdb, 0xdf, 0x95, 0xf4, 0x6a, 0x0b, 0x59, + 0x83, 0xaa, 0xf0, 0xc3, 0x69, 0x3d, 0x92, 0x0a, 0xb2, 0x01, 0x75, 0xd1, 0x19, 0x89, 0x9a, 0xda, + 0x8f, 0x5a, 0x22, 0xff, 0xbc, 0x6d, 0x17, 0xfe, 0xb5, 0x0c, 0x0d, 0xad, 0x68, 0x46, 0xde, 0x83, + 0xda, 0x20, 0x89, 0xb2, 0xd8, 0x3e, 0xbd, 0x98, 0xd2, 0x8d, 0x79, 0xd4, 0x6d, 0x5f, 0x08, 0x98, + 0x33, 0x18, 0xd8, 0xfd, 0x2c, 0x74, 0xa7, 0xc4, 0xd9, 0xbc, 0x33, 0x18, 0xec, 0x67, 0xa1, 0x4b, + 0xd6, 0xa0, 0x26, 0xef, 0xab, 0xd4, 0x1b, 0x3b, 0x7d, 0x14, 0x52, 0xf2, 0x31, 0x34, 0xc5, 0x88, + 0x8a, 0x36, 0x2b, 0xd3, 0x06, 0x05, 0x49, 0x1c, 0x7e, 0xad, 0x5a, 0x56, 0x84, 0xa2, 0xf5, 0xea, + 0x55, 0x84, 0x2d, 0xd5, 0x87, 0x62, 0x1e, 0xe6, 0xae, 0xab, 0x18, 0x7c, 0x01, 0xcd, 0x38, 0xa1, + 0x68, 0x76, 0x32, 0x72, 0x4e, 0xd8, 0xbe, 0xef, 0xf0, 0xb3, 0xe3, 0x84, 0x6e, 0x0d, 0x06, 0x22, + 0x56, 0xc4, 0xee, 0x91, 0xff, 0x6f, 0xff, 0x7d, 0x09, 0x2a, 0x27, 0x51, 0xdc, 0x25, 0x1f, 0x40, + 0x0d, 0xcf, 0xbe, 0xa3, 0xb9, 0x53, 0xd5, 0x9d, 0xed, 0x8b, 0x4e, 0x4a, 0x03, 0x6b, 0x1e, 0xb5, + 0xdb, 0x17, 0x64, 0x35, 0x2f, 0x36, 0x96, 0xb5, 0xb2, 0x91, 0xaa, 0x32, 0xbe, 0xd5, 0xb2, 0x89, + 0x59, 0x18, 0x9d, 0xa7, 0x8a, 0x69, 0x1b, 0x6f, 0xae, 0x51, 0x20, 0xb6, 0x2f, 0xda, 0xdf, 0x42, + 0x15, 0x8b, 0x99, 0xa3, 0xb6, 0x4b, 0xd7, 0xb4, 0x5d, 0xfe, 0x29, 0x6d, 0xcf, 0xfe, 0x58, 0xdb, + 0x5f, 0x41, 0xe5, 0x39, 0xf3, 0x7d, 0xf2, 0x0e, 0xcc, 0xb9, 0x51, 0x18, 0x76, 0x76, 0xc7, 0xda, + 0x56, 0x32, 0xd1, 0x31, 0x79, 0x28, 0x2a, 0x6b, 0x8e, 0x22, 0x45, 0xed, 0x7f, 0x9c, 0x05, 0x33, + 0xef, 0x86, 0xfc, 0x65, 0x51, 0xd8, 0xcb, 0x02, 0x11, 0xe4, 0x64, 0x03, 0x96, 0x70, 0x97, 0x89, + 0x93, 0xc8, 0xa5, 0x9c, 0x53, 0xcf, 0xc6, 0xa0, 0x2e, 0xad, 0x57, 0xac, 0x45, 0xa1, 0x38, 0xce, + 0xe5, 0x5d, 0x11, 0x40, 0x4b, 0x61, 0x16, 0x08, 0xa8, 0x97, 0xb9, 0xd4, 0xb3, 0x93, 0xe8, 0x0d, + 0x97, 0xab, 0x60, 0x2d, 0x86, 0x59, 0x70, 0xac, 0xe4, 0x56, 0xf4, 0x86, 0x93, 0xf7, 0xa0, 0x25, + 0xb0, 0x2c, 0xa5, 0x89, 0x23, 0x23, 0x7f, 0x16, 0x81, 0x0b, 0x61, 0x16, 0x74, 0x0a, 0xe1, 0xe5, + 0x8a, 0x6d, 0x65, 0xa2, 0x62, 0xbb, 0x26, 0xee, 0xd2, 0xa1, 0x9b, 0x25, 0x09, 0x0d, 0xdd, 0x0b, + 0x4c, 0x63, 0x15, 0x4b, 0x17, 0x91, 0x03, 0x58, 0x49, 0x59, 0x5f, 0xb8, 0x18, 0x1e, 0x7c, 0x45, + 0xb2, 0x49, 0xe9, 0x30, 0x55, 0x1e, 0x6b, 0x8e, 0x39, 0xa1, 0x48, 0xce, 0x3b, 0x52, 0xff, 0x74, + 0xc6, 0x22, 0x8a, 0xa7, 0x49, 0x45, 0xbf, 0x93, 0x4c, 0xd8, 0xe0, 0x59, 0x10, 0xa7, 0x79, 0x7d, + 0xaa, 0x69, 0x2d, 0x24, 0xd9, 0xce, 0x48, 0x48, 0x9e, 0x8d, 0x1a, 0xc5, 0xb3, 0x2b, 0x97, 0xd3, + 0xa9, 0x2a, 0xda, 0xe3, 0x8d, 0x8a, 0xf3, 0xab, 0x9a, 0xee, 0xa2, 0x49, 0x4d, 0xb6, 0xdd, 0x04, + 0xd8, 0xa5, 0xa9, 0xc3, 0x7c, 0x91, 0xd5, 0xdb, 0x03, 0x58, 0x51, 0xbc, 0x62, 0xad, 0xb0, 0xe6, + 0x71, 0x04, 0xcb, 0x34, 0x17, 0xa8, 0xe6, 0x18, 0xcd, 0xb3, 0xdd, 0xbd, 0x71, 0x67, 0xbb, 0xbc, + 0xca, 0x16, 0xa1, 0xe3, 0x12, 0x46, 0x79, 0xfb, 0x2f, 0x61, 0x55, 0x35, 0x64, 0xd1, 0x01, 0x8b, + 0xc2, 0x6e, 0x16, 0x1c, 0xf5, 0x3b, 0xa1, 0xaa, 0x07, 0xdc, 0x87, 0x06, 0x53, 0xff, 0xf3, 0x4d, + 0xac, 0x6e, 0x41, 0x2e, 0xea, 0x78, 0xe2, 0xc2, 0x9a, 0x20, 0xcf, 0x0e, 0xb3, 0x40, 0x79, 0x41, + 0x3d, 0xc9, 0x2d, 0xb5, 0xff, 0x85, 0x00, 0x99, 0x9c, 0x74, 0xf2, 0x04, 0x56, 0xbc, 0xa0, 0xcf, + 0x54, 0x99, 0x3b, 0xa4, 0x9e, 0x1d, 0x3b, 0xee, 0xb9, 0xf2, 0xb8, 0xed, 0xb2, 0x59, 0xb2, 0x88, + 0xd4, 0xf7, 0xa4, 0xfa, 0x58, 0x68, 0x75, 0xd6, 0x39, 0x8b, 0xe3, 0x82, 0x55, 0x9e, 0x60, 0x49, + 0xb5, 0x64, 0x7d, 0x06, 0xa6, 0x62, 0x79, 0x4e, 0xea, 0x14, 0x0d, 0xa2, 0xd7, 0x4a, 0x67, 0xbc, + 0x21, 0xf5, 0xbb, 0x4e, 0xea, 0xa8, 0xf6, 0xd0, 0x77, 0x2f, 0x13, 0x55, 0x9b, 0x48, 0xac, 0x4c, + 0x10, 0xa5, 0x16, 0x89, 0x9f, 0xc3, 0xad, 0x34, 0x4a, 0x1d, 0xdf, 0x56, 0xf4, 0x84, 0xdb, 0x7e, + 0xe4, 0x78, 0xe2, 0x52, 0x53, 0x2d, 0xba, 0xba, 0x8c, 0x90, 0x5d, 0x44, 0x58, 0xfc, 0x20, 0x72, + 0x3c, 0xbc, 0xd8, 0xac, 0x8c, 0x33, 0xa9, 0xa4, 0xcd, 0x61, 0x73, 0x4b, 0x3a, 0x85, 0x22, 0xe1, + 0xe7, 0x79, 0x53, 0xf2, 0xec, 0xcd, 0x43, 0x27, 0xe6, 0x67, 0x51, 0x2a, 0x38, 0xf3, 0xc8, 0x91, + 0xf6, 0xb6, 0x85, 0xb6, 0xa7, 0x94, 0x87, 0x78, 0x95, 0xf4, 0x23, 0xd7, 0xf1, 0x6d, 0xb9, 0x52, + 0x1c, 0x1d, 0xb6, 0x62, 0x35, 0x51, 0x28, 0xfd, 0x00, 0x63, 0x37, 0xa1, 0x41, 0x94, 0xd2, 0x02, + 0x55, 0x97, 0xb1, 0x2b, 0xa5, 0x39, 0xec, 0x7d, 0x58, 0xcc, 0x38, 0x4d, 0x64, 0x5f, 0x4f, 0x2f, + 0x52, 0x2a, 0xaf, 0x6e, 0x15, 0x6b, 0x41, 0x88, 0x45, 0x3f, 0xb1, 0x8a, 0x49, 0x3e, 0x81, 0x1b, + 0xb2, 0xab, 0x3e, 0x75, 0x92, 0x30, 0x27, 0x04, 0x1c, 0x2f, 0x70, 0x15, 0x8b, 0xa0, 0xf2, 0x40, + 0xea, 0xd4, 0xe8, 0xfe, 0x02, 0xee, 0x78, 0x8c, 0x8b, 0xfd, 0x04, 0xb1, 0xae, 0xe3, 0x9e, 0x51, + 0xfb, 0x8c, 0xa5, 0xaa, 0x99, 0x26, 0x12, 0x6f, 0x49, 0x88, 0xa0, 0xec, 0x08, 0xc0, 0x53, 0x96, + 0xca, 0x06, 0x7f, 0x0d, 0xef, 0x4c, 0xb2, 0x03, 0xc6, 0xb9, 0xa2, 0x2f, 0x20, 0xdd, 0xbc, 0x44, + 0x3f, 0x64, 0x9c, 0x4b, 0xfe, 0xa7, 0x60, 0x5e, 0x5e, 0x46, 0xf7, 0x8c, 0xba, 0xe7, 0xa2, 0xcf, + 0x2d, 0x6d, 0x72, 0xf3, 0x35, 0xdc, 0x11, 0xca, 0x43, 0x2e, 0x4e, 0x55, 0x3c, 0x75, 0xf2, 0xd5, + 0xcb, 0xe7, 0x6e, 0x11, 0x19, 0x06, 0x6a, 0x44, 0x63, 0xf9, 0xf4, 0xad, 0x42, 0x8d, 0xd3, 0x41, + 0x40, 0xc3, 0x94, 0xe3, 0x0b, 0x99, 0x8a, 0x55, 0x3c, 0xcb, 0xe0, 0x72, 0xf2, 0x82, 0xef, 0x52, + 0x1e, 0x5c, 0x8e, 0xac, 0xf6, 0x0a, 0xb5, 0x47, 0xfd, 0xd4, 0x91, 0x2e, 0x49, 0xa4, 0x1a, 0x25, + 0xe8, 0x86, 0xf7, 0xa1, 0x21, 0xd5, 0x72, 0xb8, 0xcb, 0xa8, 0x97, 0x0c, 0x39, 0xc0, 0xf7, 0x61, + 0x31, 0x78, 0xed, 0xba, 0x36, 0x0b, 0xe3, 0x2c, 0x95, 0x46, 0x56, 0xe4, 0xca, 0x09, 0x71, 0x47, + 0x48, 0xd1, 0xd0, 0x3a, 0x18, 0x1a, 0x4e, 0x5a, 0xbb, 0x81, 0xc0, 0x56, 0x01, 0x94, 0x16, 0x73, + 0x64, 0x94, 0xa5, 0x85, 0xc9, 0x9b, 0x23, 0xe4, 0x11, 0x8a, 0xd1, 0xe6, 0x1a, 0x34, 0xfd, 0x00, + 0x63, 0x4a, 0xa2, 0x6e, 0xc9, 0xde, 0xf9, 0x81, 0x08, 0x24, 0x44, 0xfc, 0x12, 0x56, 0x75, 0xd7, + 0xc6, 0xc6, 0x55, 0xbd, 0x3f, 0xe0, 0xf8, 0x92, 0xa6, 0x62, 0xdd, 0x1a, 0x79, 0x77, 0x67, 0xa4, + 0x3f, 0xd4, 0x9c, 0x4d, 0x92, 0x4f, 0x59, 0x1a, 0x38, 0xb1, 0xe0, 0xdd, 0xd6, 0x9c, 0x0d, 0x79, + 0xdb, 0xa8, 0x3a, 0xe4, 0xe4, 0x23, 0x58, 0x0e, 0x58, 0x68, 0xcb, 0xb8, 0x18, 0x35, 0xb4, 0x2a, + 0xd7, 0x2d, 0x60, 0xe1, 0x81, 0xd0, 0xf4, 0xf2, 0x16, 0x04, 0xdc, 0x19, 0x4e, 0xc0, 0xef, 0x28, + 0xb8, 0x33, 0x1c, 0x87, 0x7f, 0x0c, 0x2b, 0xc2, 0xba, 0x0a, 0xa8, 0x11, 0xfe, 0x1d, 0x19, 0xd9, + 0x01, 0x0b, 0x2d, 0x54, 0x8d, 0x11, 0x9c, 0xe1, 0x24, 0xe1, 0xae, 0x22, 0x38, 0xc3, 0x4b, 0x84, + 0x63, 0x58, 0x56, 0xbe, 0x66, 0x47, 0x7d, 0x3b, 0x4f, 0xd1, 0xe6, 0x3d, 0xdc, 0x19, 0xd6, 0xc6, + 0xb6, 0xa2, 0x29, 0x99, 0xde, 0x5a, 0x52, 0x64, 0x2d, 0xf9, 0x8f, 0x12, 0x20, 0x2e, 0xea, 0x58, + 0xe6, 0xbc, 0xaf, 0x27, 0xc0, 0xc3, 0xd7, 0xae, 0x3b, 0x3d, 0x73, 0x4a, 0xa2, 0x9e, 0x39, 0xd7, + 0x26, 0x88, 0x5a, 0xe6, 0xfc, 0x0a, 0xee, 0x2a, 0xa2, 0x1f, 0xe4, 0x37, 0xde, 0xb1, 0x66, 0xdf, + 0x45, 0xf6, 0x6d, 0x09, 0x3a, 0x08, 0xe4, 0x3d, 0x4c, 0x6f, 0x7a, 0xaa, 0x05, 0xbd, 0xfd, 0xf6, + 0x54, 0x0b, 0x5a, 0x1f, 0xbe, 0x84, 0xbb, 0xd2, 0x75, 0x5e, 0xe3, 0x5b, 0x00, 0x9b, 0x79, 0x43, + 0x99, 0xbe, 0xf1, 0xd6, 0xcf, 0x1f, 0x9b, 0x9e, 0xcc, 0x1b, 0x08, 0x92, 0x6f, 0x0a, 0x3a, 0xde, + 0x50, 0x24, 0x70, 0x71, 0xd5, 0xef, 0x3d, 0x26, 0x3b, 0x70, 0xff, 0x1a, 0x03, 0x1e, 0xe3, 0xe7, + 0x26, 0x45, 0x13, 0xab, 0xd3, 0x4d, 0xec, 0x32, 0x7e, 0x4e, 0xf6, 0x60, 0xed, 0x1a, 0x23, 0x98, + 0xcb, 0xcc, 0x3e, 0x5a, 0xb9, 0x33, 0xdd, 0x0a, 0x26, 0xb3, 0xab, 0x07, 0x93, 0x57, 0xd9, 0x06, + 0x57, 0x0d, 0x46, 0x95, 0xda, 0xa6, 0x0d, 0x46, 0xbe, 0x19, 0x28, 0x4c, 0x9c, 0x4d, 0x1b, 0x8c, + 0x7c, 0x47, 0xa0, 0x8c, 0x1c, 0xc1, 0x7b, 0x57, 0x19, 0x79, 0xcd, 0x38, 0x4b, 0xc5, 0x71, 0x33, + 0xf2, 0x28, 0x37, 0x19, 0x9a, 0x5a, 0x9b, 0x66, 0xea, 0x85, 0x04, 0x76, 0x05, 0x8e, 0xf4, 0xe0, + 0x83, 0xab, 0x0c, 0x7a, 0x8c, 0xbb, 0x4e, 0xe2, 0x15, 0x26, 0x5f, 0xa2, 0xc9, 0xf6, 0x34, 0x93, + 0xbb, 0x39, 0x54, 0x1a, 0xdd, 0x87, 0x77, 0x27, 0x8c, 0x62, 0xfa, 0x7d, 0x4d, 0xdd, 0x62, 0xb0, + 0xe7, 0xd3, 0xe6, 0x5c, 0xe4, 0xf3, 0x17, 0xd4, 0x55, 0xa3, 0x3d, 0x80, 0x07, 0xd3, 0xed, 0x60, + 0x6d, 0x88, 0x17, 0xa6, 0x7c, 0x34, 0x75, 0x6f, 0xd2, 0xd4, 0x11, 0xe2, 0xa4, 0xb5, 0xf6, 0x3f, + 0x94, 0x8a, 0x13, 0x94, 0x76, 0x5a, 0x24, 0x0f, 0xa0, 0x15, 0xb0, 0xf0, 0xa4, 0x77, 0x24, 0x0f, + 0x9e, 0xc5, 0x69, 0xbd, 0x29, 0xa5, 0x02, 0xda, 0xe5, 0xe4, 0x31, 0xdc, 0x8c, 0x59, 0x4c, 0x7d, + 0x16, 0x52, 0xfb, 0x55, 0x46, 0x33, 0x5a, 0xa0, 0xe5, 0x49, 0x6d, 0x39, 0xd7, 0xfe, 0x46, 0x28, + 0x15, 0xe9, 0x33, 0x30, 0x0b, 0xd2, 0x69, 0x42, 0x9d, 0x73, 0x9a, 0x14, 0x34, 0x75, 0x60, 0xca, + 0xf5, 0xdb, 0x52, 0x2d, 0x89, 0xed, 0x6f, 0xa1, 0xd2, 0x8b, 0x92, 0x94, 0xbc, 0x0f, 0xf3, 0xa7, + 0x78, 0x85, 0xe1, 0xd3, 0xaf, 0x70, 0x4a, 0x49, 0x1e, 0xc0, 0x02, 0xe3, 0x58, 0xb8, 0x77, 0x7c, + 0x41, 0x54, 0x6f, 0x4d, 0xc7, 0x85, 0x6f, 0x79, 0x07, 0xff, 0xeb, 0x32, 0x18, 0xf2, 0x13, 0x86, + 0xfd, 0xc4, 0x09, 0xe8, 0x76, 0x94, 0x85, 0xe2, 0x96, 0x55, 0xd1, 0x0a, 0xbd, 0x37, 0xf4, 0x0f, + 0x1d, 0x10, 0xa0, 0x15, 0x7e, 0x10, 0x48, 0xda, 0x50, 0xcf, 0xc2, 0x53, 0xa1, 0xa2, 0xde, 0xd8, + 0x1d, 0x6a, 0x24, 0x26, 0x37, 0x61, 0x4e, 0xbe, 0x0d, 0x56, 0x93, 0xa1, 0x9e, 0xc8, 0x3a, 0xd4, + 0x5d, 0xc7, 0x77, 0xc5, 0x7d, 0x99, 0xab, 0xbb, 0xa4, 0x7e, 0x9f, 0x1f, 0x29, 0xc9, 0x9f, 0x43, + 0xa3, 0x2f, 0x3a, 0x69, 0xe3, 0xfb, 0x22, 0xf5, 0xf1, 0xcd, 0x58, 0xed, 0x04, 0xd5, 0xf8, 0x6a, + 0x89, 0xfc, 0x02, 0x16, 0xdc, 0x20, 0x96, 0x47, 0x50, 0xad, 0x8e, 0xa5, 0xbe, 0x96, 0x41, 0xcc, + 0x4e, 0x10, 0x8b, 0x23, 0x28, 0x16, 0x58, 0x1b, 0xee, 0xe8, 0xa1, 0xfd, 0xb7, 0x25, 0x68, 0x68, + 0x93, 0x72, 0xdd, 0x7c, 0x20, 0x60, 0x62, 0x3e, 0x3e, 0x84, 0x2a, 0x4f, 0x1d, 0xb5, 0x32, 0xc5, + 0x27, 0x3a, 0x97, 0xe7, 0xd9, 0x92, 0x20, 0xb2, 0x0e, 0xb3, 0x34, 0xcc, 0xd7, 0xe9, 0x2a, 0xac, + 0x80, 0xb4, 0xbf, 0x2f, 0xc1, 0x9c, 0xd4, 0x90, 0x0f, 0xa0, 0xde, 0xcf, 0x42, 0xd7, 0xc6, 0xd2, + 0xd5, 0x64, 0xb5, 0xa4, 0x26, 0x94, 0xbb, 0x94, 0xbb, 0x13, 0x57, 0xe6, 0xf2, 0x8f, 0x5c, 0x99, + 0xc7, 0x4a, 0x09, 0xb3, 0xd7, 0x95, 0x12, 0x3e, 0x80, 0x2a, 0x4e, 0xb8, 0xfa, 0x1e, 0x62, 0x69, + 0xa2, 0xe7, 0x96, 0xd4, 0x8f, 0x5c, 0xb1, 0x7a, 0x9d, 0x2b, 0x7e, 0x09, 0x4d, 0x2c, 0xb4, 0xb0, + 0x70, 0x20, 0x86, 0x40, 0x3e, 0x86, 0x85, 0x81, 0x7a, 0xc6, 0xaa, 0xd3, 0x94, 0x51, 0x36, 0x07, + 0x1a, 0xa1, 0xfd, 0x14, 0x1a, 0xb9, 0x81, 0x1e, 0x4d, 0xc9, 0x17, 0xd0, 0x1a, 0xe3, 0xe7, 0x51, + 0xa5, 0x5e, 0x40, 0xe8, 0x6d, 0x59, 0x0b, 0xba, 0x21, 0xde, 0xfe, 0xae, 0x04, 0x73, 0xf2, 0x7b, + 0x17, 0xf2, 0xa9, 0xd6, 0x8b, 0xe2, 0x53, 0x86, 0x62, 0xb0, 0x5a, 0x7b, 0xa3, 0xce, 0xf4, 0x68, + 0xca, 0xdf, 0xb2, 0x9e, 0x61, 0xc2, 0xfc, 0x6b, 0x9a, 0xe0, 0x87, 0x1c, 0x32, 0x2a, 0xf2, 0xc7, + 0xf6, 0x47, 0x50, 0x17, 0x7d, 0x91, 0x1f, 0x31, 0xfc, 0x68, 0x75, 0xae, 0xfd, 0x37, 0x25, 0x98, + 0x57, 0x5f, 0xe8, 0x90, 0x87, 0x00, 0x71, 0x12, 0xbd, 0x1c, 0x1b, 0xf4, 0xe2, 0x88, 0x22, 0x3f, + 0xe7, 0xa8, 0x0b, 0x88, 0xac, 0xd6, 0x3d, 0x81, 0x9b, 0x03, 0x1a, 0xd2, 0xc4, 0x11, 0x1b, 0x8a, + 0x3a, 0x82, 0x86, 0x4e, 0xa0, 0xbe, 0x63, 0xa8, 0x5b, 0x2b, 0x85, 0x56, 0x1e, 0x44, 0xbb, 0x42, + 0xf7, 0x76, 0xf9, 0x65, 0xe3, 0xfb, 0xb2, 0xfc, 0xd4, 0x0f, 0xab, 0xc3, 0x4b, 0xb0, 0x20, 0x7e, + 0x8b, 0x57, 0x8d, 0xc6, 0x4c, 0x2e, 0x2a, 0x6a, 0xbf, 0x46, 0x29, 0x17, 0x15, 0x25, 0x53, 0xa3, + 0x4c, 0x96, 0x61, 0x51, 0x88, 0xb4, 0x62, 0xa1, 0x31, 0x4b, 0x9a, 0x50, 0x43, 0x6b, 0x51, 0xdc, + 0x35, 0x2a, 0x64, 0x01, 0xea, 0xe2, 0x09, 0x0b, 0x4d, 0x46, 0xb5, 0x30, 0x82, 0xa7, 0xbc, 0xad, + 0xc1, 0xc0, 0x98, 0xcb, 0xf1, 0xcf, 0x22, 0x16, 0x1a, 0xf3, 0xf9, 0xd3, 0x73, 0xe6, 0xfb, 0x46, + 0x8d, 0xdc, 0x04, 0x22, 0x9e, 0xc6, 0xbf, 0x3c, 0x32, 0xea, 0xc4, 0x84, 0x15, 0x5d, 0x9e, 0x7f, + 0x1b, 0x62, 0x00, 0x21, 0xd0, 0x12, 0x9a, 0x51, 0x09, 0xd5, 0x68, 0x90, 0x55, 0xb8, 0x89, 0xb2, + 0x89, 0x77, 0xaa, 0x46, 0x33, 0x6f, 0x4f, 0xa4, 0x66, 0x63, 0x81, 0xb4, 0x00, 0xc4, 0x93, 0x8c, + 0x15, 0xa3, 0x95, 0x3f, 0xcb, 0x15, 0x34, 0x16, 0xc9, 0x22, 0x34, 0x46, 0xcf, 0x9b, 0x86, 0x91, + 0xcf, 0x80, 0xf6, 0xad, 0x8d, 0xb1, 0xb2, 0xf1, 0x39, 0x34, 0xf5, 0x6f, 0x46, 0x04, 0xeb, 0xd8, + 0xe1, 0xfc, 0xe4, 0x2c, 0x89, 0xb2, 0xc1, 0x99, 0x31, 0x23, 0x26, 0x65, 0x3b, 0x89, 0x1c, 0xcf, + 0x75, 0x78, 0x6a, 0x94, 0x48, 0x0d, 0x2a, 0x4f, 0x1d, 0x7e, 0x66, 0x94, 0x37, 0x7e, 0x09, 0x8b, + 0x97, 0xbe, 0x15, 0x12, 0xca, 0xee, 0x51, 0x77, 0xcf, 0x98, 0x11, 0xff, 0xf6, 0xb7, 0x7a, 0x27, + 0x46, 0x89, 0xac, 0x80, 0xf1, 0xb4, 0xf3, 0xf5, 0x53, 0x7b, 0xe7, 0xe8, 0xf0, 0xd8, 0xda, 0xeb, + 0xf5, 0x3a, 0x47, 0x5d, 0xa3, 0xbc, 0xf1, 0x10, 0x60, 0xf4, 0xe6, 0x9f, 0xd4, 0xa1, 0x8a, 0x47, + 0x76, 0x49, 0x3c, 0x61, 0xcf, 0x5f, 0x18, 0x25, 0xd2, 0x80, 0x79, 0xb5, 0xf9, 0x1a, 0xe5, 0x8d, + 0xc7, 0xb0, 0xa8, 0xf6, 0x69, 0xd1, 0xfb, 0xe7, 0x2c, 0x14, 0x9b, 0x01, 0xe9, 0x74, 0x5f, 0x6c, + 0x1d, 0x74, 0x76, 0xed, 0x4e, 0x77, 0x77, 0xef, 0x77, 0xf6, 0xf3, 0x4e, 0x77, 0x57, 0x5a, 0x78, + 0xda, 0xed, 0x7d, 0x63, 0x94, 0x36, 0x4e, 0x61, 0x65, 0xda, 0xe7, 0x24, 0xe4, 0x0e, 0xdc, 0xca, + 0x99, 0xbb, 0x9d, 0xde, 0xc9, 0x56, 0x77, 0x67, 0xcf, 0x3e, 0xdc, 0x3b, 0xb1, 0x3a, 0x3b, 0xc6, + 0x0c, 0x99, 0x83, 0xf2, 0xc1, 0x27, 0x46, 0x09, 0x7f, 0x37, 0x8d, 0x32, 0x01, 0x98, 0xdb, 0x39, + 0xea, 0x75, 0xba, 0x7b, 0xc6, 0xac, 0xf0, 0x88, 0x4e, 0xb7, 0xbb, 0x67, 0xd9, 0xc7, 0xd6, 0xd1, + 0xee, 0x6f, 0x77, 0x4e, 0x8c, 0xca, 0xc6, 0x27, 0xa3, 0x0f, 0x63, 0x70, 0x28, 0x2b, 0x60, 0x74, + 0xc2, 0xd7, 0x8e, 0xcf, 0xbc, 0x42, 0x66, 0xcc, 0x88, 0xb1, 0x1c, 0xc9, 0x8c, 0x67, 0x94, 0x36, + 0xfe, 0xb9, 0x04, 0xb5, 0xfc, 0x95, 0xe7, 0xc8, 0x79, 0x43, 0x9a, 0xa0, 0x5b, 0xcd, 0x90, 0x1b, + 0xb0, 0x84, 0x6e, 0x48, 0xfb, 0xe9, 0x51, 0x96, 0x2a, 0x71, 0x29, 0xf7, 0x2f, 0x8b, 0x0d, 0xce, + 0x34, 0x79, 0x99, 0x18, 0xd0, 0x94, 0xbe, 0x2e, 0x5f, 0x5c, 0x19, 0xb3, 0xa2, 0x0f, 0xe8, 0xea, + 0x61, 0xca, 0x0a, 0x69, 0x85, 0xdc, 0x86, 0x1b, 0x63, 0x66, 0x0b, 0x55, 0x95, 0xdc, 0x85, 0xdb, + 0x39, 0x61, 0x52, 0x3d, 0xb7, 0xb1, 0x06, 0x4d, 0xfd, 0x55, 0x6b, 0xde, 0xa2, 0xf0, 0x03, 0xd9, + 0xe5, 0x8d, 0x5f, 0xc0, 0xd2, 0xc4, 0x6b, 0x1d, 0x31, 0x83, 0x9d, 0xae, 0x1c, 0xfc, 0x61, 0xa7, + 0x6b, 0x1f, 0x6e, 0xfd, 0xce, 0x28, 0x09, 0xee, 0xf6, 0xc1, 0xd1, 0xd1, 0xa1, 0xbd, 0xdf, 0x39, + 0x38, 0xd9, 0xb3, 0x8c, 0xf2, 0xc6, 0xc6, 0x25, 0x2e, 0x7a, 0x92, 0xf0, 0x88, 0xa3, 0x9d, 0xad, + 0x03, 0x63, 0x46, 0x2c, 0xc0, 0xd7, 0x07, 0x47, 0xdb, 0x5b, 0x07, 0x46, 0x69, 0x63, 0x1b, 0x96, + 0x26, 0x8a, 0xd9, 0xc2, 0x65, 0xf7, 0xa3, 0xc4, 0xa5, 0x52, 0x24, 0x3d, 0x60, 0x2b, 0x4b, 0x23, + 0xa3, 0x24, 0x22, 0x0c, 0x55, 0x32, 0x86, 0x59, 0x38, 0x30, 0xca, 0x1b, 0x5f, 0xc2, 0xe2, 0xa5, + 0x73, 0x88, 0xf0, 0xf1, 0xfd, 0xc8, 0xf7, 0xa3, 0x37, 0x02, 0x81, 0x2e, 0x7f, 0x9c, 0x50, 0x97, + 0x7a, 0xe2, 0xb1, 0x24, 0x02, 0x6b, 0x07, 0x4b, 0x9d, 0xe2, 0xfa, 0x6c, 0x94, 0x37, 0x8e, 0xc0, + 0xb8, 0xbc, 0xf7, 0x93, 0x79, 0x98, 0xed, 0x84, 0xa9, 0x31, 0x23, 0x3a, 0xbe, 0xef, 0x47, 0x4e, + 0x2a, 0x1d, 0x78, 0x97, 0xba, 0x2c, 0x70, 0x7c, 0xa3, 0x2c, 0x62, 0x77, 0xd7, 0x49, 0xa9, 0x38, + 0x59, 0xca, 0xbc, 0xb3, 0x9b, 0xc9, 0x0a, 0xac, 0x51, 0x11, 0xce, 0x7d, 0xe9, 0x24, 0x20, 0x86, + 0x20, 0x6e, 0x44, 0x72, 0xf8, 0xd8, 0x1a, 0x37, 0x4a, 0x38, 0x15, 0x62, 0x83, 0xe0, 0x46, 0x79, + 0xfb, 0xcf, 0xfe, 0xf8, 0xc3, 0xbd, 0xd2, 0xbf, 0xfd, 0x70, 0xaf, 0xf4, 0x9f, 0x3f, 0xdc, 0x2b, + 0xfd, 0xe1, 0xbf, 0xee, 0xcd, 0xc0, 0x0d, 0x37, 0x0a, 0x1e, 0x8a, 0xcd, 0xc3, 0x75, 0xe2, 0x87, + 0x29, 0xf3, 0x4e, 0x31, 0x9d, 0x1e, 0x97, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x61, 0xa0, 0xb9, + 0x1d, 0x78, 0x2d, 0x00, 0x00, } diff --git a/proto/executor.proto b/proto/executor.proto index eb790664..5152aa17 100644 --- a/proto/executor.proto +++ b/proto/executor.proto @@ -91,6 +91,7 @@ message IndexLookUp { // It represents the index columns we should use to build the row handle. repeated uint32 index_handle_offsets = 1; optional bool keep_order = 2; + repeated Executor children = 3; } message EncodedBytesSlice {