From f7d0371408bcb60d12d5b743736e33ac4d9e6765 Mon Sep 17 00:00:00 2001 From: balaji Date: Tue, 25 Feb 2020 19:57:42 +0530 Subject: [PATCH] Add partition key based iterator to the bulk loader (#4841) --- dgraph/cmd/bulk/key.go | 78 ++++ dgraph/cmd/bulk/loader.go | 5 +- dgraph/cmd/bulk/mapper.go | 25 ++ dgraph/cmd/bulk/progress.go | 4 +- dgraph/cmd/bulk/reduce.go | 474 ++++++++++++++--------- go.mod | 2 +- go.sum | 35 +- protos/pb.proto | 4 + protos/pb/pb.pb.go | 730 +++++++++++++++++++++++------------- 9 files changed, 871 insertions(+), 486 deletions(-) create mode 100644 dgraph/cmd/bulk/key.go diff --git a/dgraph/cmd/bulk/key.go b/dgraph/cmd/bulk/key.go new file mode 100644 index 00000000000..4303e2af2d1 --- /dev/null +++ b/dgraph/cmd/bulk/key.go @@ -0,0 +1,78 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pb.proto + +package bulk + +import ( + "fmt" + "io" +) + +func GetKeyForMapEntry(dAtA []byte) ([]byte, error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + panic("interger overflow") + } + if iNdEx >= l { + return nil, 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 nil, fmt.Errorf("proto: MapEntry: wiretype end group for non-group") + } + if fieldNum <= 0 { + return nil, fmt.Errorf("proto: MapEntry: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return nil, fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + panic("interger overflow") + } + if iNdEx >= l { + return nil, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + panic("interger overflow") + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + panic("interger overflow") + } + if postIndex > l { + return nil, io.ErrUnexpectedEOF + } + return dAtA[iNdEx:postIndex], nil + default: + panic("unknown filed number") + } + } + + if iNdEx > l { + return nil, io.ErrUnexpectedEOF + } + return nil, io.ErrUnexpectedEOF +} diff --git a/dgraph/cmd/bulk/loader.go b/dgraph/cmd/bulk/loader.go index 9a103acdec2..dafe3071051 100644 --- a/dgraph/cmd/bulk/loader.go +++ b/dgraph/cmd/bulk/loader.go @@ -230,7 +230,10 @@ func (ld *loader) mapStage() { func (ld *loader) reduceStage() { ld.prog.setPhase(reducePhase) - r := reducer{state: ld.state} + r := reducer{ + state: ld.state, + streamIds: make(map[string]uint32), + } x.Check(r.run()) } diff --git a/dgraph/cmd/bulk/mapper.go b/dgraph/cmd/bulk/mapper.go index fa5e97c99eb..8bfbdfb5422 100644 --- a/dgraph/cmd/bulk/mapper.go +++ b/dgraph/cmd/bulk/mapper.go @@ -44,6 +44,8 @@ import ( farm "github.com/dgryski/go-farm" ) +const partitionKeyShard = 10 + type mapper struct { *state shards []shardState // shard is based on predicate @@ -120,6 +122,29 @@ func (m *mapper) writeMapEntriesToFile(entries []*pb.MapEntry, encodedSize uint6 x.Check(gzWriter.Close()) }() + // Create partition keys for the map file. + header := &pb.MapHeader{ + PartitionKeys: [][]byte{}, + } + shardPartitionNo := len(entries) / partitionKeyShard + for i := range entries { + if shardPartitionNo == 0 { + // we have very few entries so no need for partition keys. + break + } + if (i+1)%shardPartitionNo == 0 { + header.PartitionKeys = append(header.PartitionKeys, entries[i].GetKey()) + } + } + // Write the header to the map file. + headerBuf, err := header.Marshal() + x.Check(err) + lenBuf := make([]byte, 4) + binary.BigEndian.PutUint32(lenBuf, uint32(len(headerBuf))) + x.Check2(w.Write(lenBuf)) + x.Check2(w.Write(headerBuf)) + x.Check(err) + sizeBuf := make([]byte, binary.MaxVarintLen64) for _, me := range entries { n := binary.PutUvarint(sizeBuf, uint64(me.Size())) diff --git a/dgraph/cmd/bulk/progress.go b/dgraph/cmd/bulk/progress.go index 61e077e516e..3435295d796 100644 --- a/dgraph/cmd/bulk/progress.go +++ b/dgraph/cmd/bulk/progress.go @@ -38,6 +38,7 @@ type progress struct { mapEdgeCount int64 reduceEdgeCount int64 reduceKeyCount int64 + numEncoding int32 start time.Time startReduce time.Time @@ -107,7 +108,7 @@ func (p *progress) reportOnce() { pct = fmt.Sprintf("%.2f%% ", 100*float64(reduceEdgeCount)/float64(mapEdgeCount)) } fmt.Printf("[%s] REDUCE %s %sedge_count:%s edge_speed:%s/sec "+ - "plist_count:%s plist_speed:%s/sec\n", + "plist_count:%s plist_speed:%s/sec. Num Encoding: %d\n", timestamp, x.FixedDuration(now.Sub(p.start)), pct, @@ -115,6 +116,7 @@ func (p *progress) reportOnce() { niceFloat(float64(reduceEdgeCount)/elapsed.Seconds()), niceFloat(float64(reduceKeyCount)), niceFloat(float64(reduceKeyCount)/elapsed.Seconds()), + atomic.LoadInt32(&p.numEncoding), ) default: x.AssertTruef(false, "invalid phase") diff --git a/dgraph/cmd/bulk/reduce.go b/dgraph/cmd/bulk/reduce.go index 6f5fc5f56ee..73b59821540 100644 --- a/dgraph/cmd/bulk/reduce.go +++ b/dgraph/cmd/bulk/reduce.go @@ -20,14 +20,17 @@ import ( "bufio" "bytes" "compress/gzip" - "container/heap" "encoding/binary" "fmt" "io" "log" "os" "path/filepath" + "runtime" + "sort" + "sync" "sync/atomic" + "time" "github.com/dgraph-io/badger/v2" bo "github.com/dgraph-io/badger/v2/options" @@ -39,14 +42,18 @@ import ( "github.com/dgraph-io/dgraph/protos/pb" "github.com/dgraph-io/dgraph/worker" "github.com/dgraph-io/dgraph/x" - "github.com/gogo/protobuf/proto" ) type reducer struct { *state - streamId uint32 + streamId uint32 + mu sync.RWMutex + streamIds map[string]uint32 } +const batchSize = 10000 +const batchAlloc = batchSize * 11 / 10 + func (r *reducer) run() error { dirs := readShardDirs(filepath.Join(r.opt.TmpDir, reduceShardDir)) x.AssertTrue(len(dirs) == r.opt.ReduceShards) @@ -62,8 +69,10 @@ func (r *reducer) run() error { mapFiles := filenamesInTree(dirs[shardId]) var mapItrs []*mapIterator + partitionKeys := [][]byte{} for _, mapFile := range mapFiles { - itr := newMapIterator(mapFile) + header, itr := newMapIterator(mapFile) + partitionKeys = append(partitionKeys, header.PartitionKeys...) mapItrs = append(mapItrs, itr) } @@ -73,7 +82,15 @@ func (r *reducer) run() error { } ci := &countIndexer{reducer: r, writer: writer} - r.reduce(mapItrs, ci) + sort.Slice(partitionKeys, func(i, j int) bool { + return bytes.Compare(partitionKeys[i], partitionKeys[j]) < 0 + }) + + // Start batching for the given keys + for _, itr := range mapItrs { + go itr.startBatching(partitionKeys) + } + r.reduce(partitionKeys, mapItrs, ci) ci.wait() if err := writer.Flush(); err != nil { @@ -106,7 +123,7 @@ func (r *reducer) createBadger(i int) *badger.DB { opt := badger.DefaultOptions(r.opt.shardOutputDirs[i]).WithSyncWrites(false). WithTableLoadingMode(bo.MemoryMap).WithValueThreshold(1 << 10 /* 1 KB */). WithLogger(nil).WithMaxCacheSize(1 << 20). - WithEncryptionKey(enc.ReadEncryptionKeyFile(r.opt.BadgerKeyFile)) + WithEncryptionKey(enc.ReadEncryptionKeyFile(r.opt.BadgerKeyFile)).WithCompression(bo.None) // Over-write badger options based on the options provided by the user. r.setBadgerOptions(&opt) @@ -131,211 +148,304 @@ func (r *reducer) setBadgerOptions(opt *badger.Options) { } type mapIterator struct { - fd *os.File - reader *bufio.Reader - tmpBuf []byte + fd *os.File + reader *bufio.Reader + batchCh chan *iteratorEntry + freelist chan *iteratorEntry } -func (mi *mapIterator) Close() error { - return mi.fd.Close() +type iteratorEntry struct { + partitionKey []byte + batch [][]byte } -func (mi *mapIterator) Next() *pb.MapEntry { - r := mi.reader - buf, err := r.Peek(binary.MaxVarintLen64) - if err == io.EOF { - return nil +func (mi *mapIterator) release(ie *iteratorEntry) { + ie.batch = ie.batch[:0] + select { + case mi.freelist <- ie: + default: } - x.Check(err) - sz, n := binary.Uvarint(buf) - if n <= 0 { - log.Fatalf("Could not read uvarint: %d", n) - } - x.Check2(r.Discard(n)) - - for cap(mi.tmpBuf) < int(sz) { - mi.tmpBuf = make([]byte, sz) - } - x.Check2(io.ReadFull(r, mi.tmpBuf[:sz])) - - me := new(pb.MapEntry) - x.Check(proto.Unmarshal(mi.tmpBuf[:sz], me)) - return me } -func newMapIterator(filename string) *mapIterator { - fd, err := os.Open(filename) - x.Check(err) - gzReader, err := gzip.NewReader(fd) - x.Check(err) +func (mi *mapIterator) startBatching(partitionsKeys [][]byte) { + var ie *iteratorEntry + prevKeyExist := false + var buf, eBuf, key []byte + var err error - return &mapIterator{fd: fd, reader: bufio.NewReaderSize(gzReader, 16<<10)} -} - -func (r *reducer) encodeAndWrite( - writer *badger.StreamWriter, entryCh chan []*pb.MapEntry, closer *y.Closer) { - defer closer.Done() - - var listSize int - list := &bpb.KVList{} - - preds := make(map[string]uint32) - setStreamId := func(kv *bpb.KV) { - pk, err := x.Parse(kv.Key) - x.Check(err) - x.AssertTrue(len(pk.Attr) > 0) - - // We don't need to consider the data prefix, count prefix, etc. because each predicate - // contains sorted keys, the way they are produced. - streamId := preds[pk.Attr] - if streamId == 0 { - streamId = atomic.AddUint32(&r.streamId, 1) - preds[pk.Attr] = streamId + // readKey reads the next map entry key. + readMapEntry := func() error { + if prevKeyExist { + return nil + } + r := mi.reader + buf, err = r.Peek(binary.MaxVarintLen64) + if err != nil { + return err } + sz, n := binary.Uvarint(buf) + if n <= 0 { + log.Fatalf("Could not read uvarint: %d", n) + } + x.Check2(r.Discard(n)) - kv.StreamId = streamId - } + eBuf = make([]byte, sz) + x.Check2(io.ReadFull(r, eBuf)) - // Once we have processed all records from single stream, we can mark that stream as done. - // This will close underlying table builder in Badger for stream. Since we preallocate 1 MB - // of memory for each table builder, this can result in memory saving in case we have large - // number of streams. - // This change limits maximum number of open streams to number of streams created in a single - // write call. This can also be optimised if required. - addDone := func(doneSteams []uint32, l *bpb.KVList) { - for _, streamId := range doneSteams { - l.Kv = append(l.Kv, &bpb.KV{StreamId: streamId, StreamDone: true}) - } + key, err = GetKeyForMapEntry(eBuf) + return err } - var doneStreams []uint32 - var prevSID uint32 - for batch := range entryCh { - listSize += r.toList(batch, list) - if listSize > 4<<20 { - for _, kv := range list.Kv { - setStreamId(kv) - if prevSID != 0 && (prevSID != kv.StreamId) { - doneStreams = append(doneStreams, prevSID) - } - prevSID = kv.StreamId + for _, pKey := range partitionsKeys { + select { + case ie = <-mi.freelist: + default: + ie = &iteratorEntry{ + batch: make([][]byte, 0, batchAlloc), } - addDone(doneStreams, list) - x.Check(writer.Write(list)) - doneStreams = doneStreams[:0] - list = &bpb.KVList{} - listSize = 0 } + ie.partitionKey = pKey + for { + err := readMapEntry() + if err == io.EOF { + break + } + x.Check(err) + if bytes.Compare(key, ie.partitionKey) < 0 { + prevKeyExist = false + ie.batch = append(ie.batch, eBuf) + continue + } + // present key is not part of this batch so track that we have already read the key. + prevKeyExist = true + break + } + mi.batchCh <- ie } - if len(list.Kv) > 0 { - for _, kv := range list.Kv { - setStreamId(kv) + + // Drain the last items. + batch := make([][]byte, 0, batchAlloc) + for { + err := readMapEntry() + if err == io.EOF { + break } - x.Check(writer.Write(list)) + x.Check(err) + prevKeyExist = false + batch = append(batch, eBuf) + } + mi.batchCh <- &iteratorEntry{ + batch: batch, + partitionKey: nil, } } +func (mi *mapIterator) Close() error { -func (r *reducer) reduce(mapItrs []*mapIterator, ci *countIndexer) { - entryCh := make(chan []*pb.MapEntry, 100) - closer := y.NewCloser(1) - defer closer.SignalAndWait() + return mi.fd.Close() +} - var ph postingHeap - for _, itr := range mapItrs { - me := itr.Next() - if me != nil { - heap.Push(&ph, heapNode{mapEntry: me, itr: itr}) - } else { - fmt.Printf("NIL first map entry for %s", itr.fd.Name()) - } - } +func (mi *mapIterator) Next() *iteratorEntry { + return <-mi.batchCh +} - writer := ci.writer - go r.encodeAndWrite(writer, entryCh, closer) - - const batchSize = 10000 - const batchAlloc = batchSize * 11 / 10 - batch := make([]*pb.MapEntry, 0, batchAlloc) - var prevKey []byte - var plistLen int - - for len(ph.nodes) > 0 { - node0 := &ph.nodes[0] - me := node0.mapEntry - node0.mapEntry = node0.itr.Next() - if node0.mapEntry != nil { - heap.Fix(&ph, 0) - } else { - heap.Pop(&ph) - } +func newMapIterator(filename string) (*pb.MapHeader, *mapIterator) { + fd, err := os.Open(filename) + x.Check(err) + gzReader, err := gzip.NewReader(fd) + x.Check(err) - keyChanged := !bytes.Equal(prevKey, me.Key) - // Note that the keys are coming in sorted order from the heap. So, if - // we see a new key, we should push out the number of entries we got - // for the current key, so the count index can register that. - if keyChanged && plistLen > 0 { - ci.addUid(prevKey, plistLen) - plistLen = 0 - } + // Read the header size. + reader := bufio.NewReaderSize(gzReader, 16<<10) + headerLenBuf := make([]byte, 4) + x.Check2(io.ReadFull(reader, headerLenBuf)) + headerLen := binary.BigEndian.Uint32(headerLenBuf) + // Reader the map header. + headerBuf := make([]byte, headerLen) + + x.Check2(io.ReadFull(reader, headerBuf)) + header := &pb.MapHeader{} + err = header.Unmarshal(headerBuf) + x.Check(err) - if len(batch) >= batchSize && keyChanged { - entryCh <- batch - batch = make([]*pb.MapEntry, 0, batchAlloc) - } - prevKey = me.Key - batch = append(batch, me) - plistLen++ - } - if len(batch) > 0 { - entryCh <- batch + itr := &mapIterator{ + fd: fd, + reader: reader, + batchCh: make(chan *iteratorEntry, 3), + freelist: make(chan *iteratorEntry, 3), } - if plistLen > 0 { - ci.addUid(prevKey, plistLen) - } - close(entryCh) + return header, itr } -type heapNode struct { - mapEntry *pb.MapEntry - itr *mapIterator +type countIndexEntry struct { + key []byte + count int } -type postingHeap struct { - nodes []heapNode +type encodeRequest struct { + entries [][]byte + countKeys []*countIndexEntry + wg *sync.WaitGroup + list *bpb.KVList } -func (h *postingHeap) Len() int { - return len(h.nodes) +func (r *reducer) streamIdFor(pred string) uint32 { + r.mu.RLock() + if id, ok := r.streamIds[pred]; ok { + r.mu.RUnlock() + return id + } + r.mu.RUnlock() + r.mu.Lock() + defer r.mu.Unlock() + if id, ok := r.streamIds[pred]; ok { + return id + } + streamId := atomic.AddUint32(&r.streamId, 1) + r.streamIds[pred] = streamId + return streamId } -func (h *postingHeap) Less(i, j int) bool { - return less(h.nodes[i].mapEntry, h.nodes[j].mapEntry) +func (r *reducer) encode(entryCh chan *encodeRequest, closer *y.Closer) { + defer closer.Done() + for req := range entryCh { + + req.list = &bpb.KVList{} + countKeys := r.toList(req.entries, req.list) + for _, kv := range req.list.Kv { + pk, err := x.Parse(kv.Key) + x.Check(err) + x.AssertTrue(len(pk.Attr) > 0) + kv.StreamId = r.streamIdFor(pk.Attr) + } + req.countKeys = countKeys + req.wg.Done() + atomic.AddInt32(&r.prog.numEncoding, -1) + } } -func (h *postingHeap) Swap(i, j int) { - h.nodes[i], h.nodes[j] = h.nodes[j], h.nodes[i] -} +func (r *reducer) startWriting(ci *countIndexer, writerCh chan *encodeRequest, closer *y.Closer) { + defer closer.Done() + for req := range writerCh { + req.wg.Wait() + + for _, countKey := range req.countKeys { + ci.addUid(countKey.key, countKey.count) + } + // Wait for it to be encoded. + start := time.Now() -func (h *postingHeap) Push(val interface{}) { - h.nodes = append(h.nodes, val.(heapNode)) + x.Check(ci.writer.Write(req.list)) + if dur := time.Since(start).Round(time.Millisecond); dur > time.Second { + fmt.Printf("writeCh: Time taken to write req: %v\n", + time.Since(start).Round(time.Millisecond)) + } + } } -func (h *postingHeap) Pop() interface{} { - elem := h.nodes[len(h.nodes)-1] - h.nodes = h.nodes[:len(h.nodes)-1] - return elem +func (r *reducer) reduce(partitionKeys [][]byte, mapItrs []*mapIterator, ci *countIndexer) { + cpu := runtime.NumCPU() + fmt.Printf("Num CPUs: %d\n", cpu) + encoderCh := make(chan *encodeRequest, 2*cpu) + writerCh := make(chan *encodeRequest, 2*cpu) + encoderCloser := y.NewCloser(cpu) + for i := 0; i < cpu; i++ { + // Start listening to encode entries + // For time being let's lease 100 stream id for each encoder. + go r.encode(encoderCh, encoderCloser) + } + // Start listening to write the badger list. + writerCloser := y.NewCloser(1) + go r.startWriting(ci, writerCh, writerCloser) + + for i := 0; i < len(partitionKeys); i++ { + batch := make([][]byte, 0, batchAlloc) + for _, itr := range mapItrs { + res := itr.Next() + y.AssertTrue(bytes.Equal(res.partitionKey, partitionKeys[i])) + batch = append(batch, res.batch...) + itr.release(res) + } + wg := new(sync.WaitGroup) + wg.Add(1) + req := &encodeRequest{entries: batch, wg: wg} + atomic.AddInt32(&r.prog.numEncoding, 1) + encoderCh <- req + writerCh <- req + } + + // Drain the last batch + batch := make([][]byte, 0, batchAlloc) + for _, itr := range mapItrs { + res := itr.Next() + y.AssertTrue(res.partitionKey == nil) + batch = append(batch, res.batch...) + } + wg := new(sync.WaitGroup) + wg.Add(1) + req := &encodeRequest{entries: batch, wg: wg} + atomic.AddInt32(&r.prog.numEncoding, 1) + encoderCh <- req + writerCh <- req + + // Close the encoders + close(encoderCh) + encoderCloser.SignalAndWait() + + // Close the writer + close(writerCh) + writerCloser.SignalAndWait() } -func (r *reducer) toList(mapEntries []*pb.MapEntry, list *bpb.KVList) int { +func (r *reducer) toList(bufEntries [][]byte, list *bpb.KVList) []*countIndexEntry { + + sort.Slice(bufEntries, func(i, j int) bool { + lh, err := GetKeyForMapEntry(bufEntries[i]) + x.Check(err) + rh, err := GetKeyForMapEntry(bufEntries[j]) + x.Check(err) + return bytes.Compare(lh, rh) < 0 + }) + var currentKey []byte var uids []uint64 - pl := new(pb.PostingList) var size int + pl := new(pb.PostingList) userMeta := []byte{posting.BitCompletePosting} writeVersionTs := r.state.writeTs + countEntries := []*countIndexEntry{} + currentBatch := make([]*pb.MapEntry, 0, 100) + freelist := make([]*pb.MapEntry, 0) + appendToList := func() { + if len(currentBatch) == 0 { + return + } + // calculate count entries + countEntries = append(countEntries, &countIndexEntry{ + key: y.Copy(currentKey), + count: len(currentBatch), + }) + // Now make a list and write it to badger + sort.Slice(currentBatch, func(i, j int) bool { + return less(currentBatch[i], currentBatch[j]) + }) + for _, mapEntry := range currentBatch { + uid := mapEntry.Uid + if mapEntry.Posting != nil { + uid = mapEntry.Posting.Uid + } + if len(uids) > 0 && uids[len(uids)-1] == uid { + continue + } + // TODO: Potentially could be doing codec.Encoding right here. + uids = append(uids, uid) + if mapEntry.Posting != nil { + pl.Postings = append(pl.Postings, mapEntry.Posting) + } + } + atomic.AddInt64(&r.prog.reduceKeyCount, 1) // For a UID-only posting list, the badger value is a delta packed UID @@ -377,28 +487,32 @@ func (r *reducer) toList(mapEntries []*pb.MapEntry, list *bpb.KVList) int { list.Kv = append(list.Kv, kv) uids = uids[:0] pl.Reset() + // Now we have written the list. It's time to reuse the current batch. + freelist = append(freelist, currentBatch...) + // reset the current batch + currentBatch = currentBatch[:0] } - - for _, mapEntry := range mapEntries { + for _, entry := range bufEntries { atomic.AddInt64(&r.prog.reduceEdgeCount, 1) - - if !bytes.Equal(mapEntry.Key, currentKey) && currentKey != nil { + entryKey, err := GetKeyForMapEntry(entry) + x.Check(err) + if !bytes.Equal(entryKey, currentKey) && currentKey != nil { appendToList() } - currentKey = mapEntry.Key - - uid := mapEntry.Uid - if mapEntry.Posting != nil { - uid = mapEntry.Posting.Uid - } - if len(uids) > 0 && uids[len(uids)-1] == uid { - continue - } - uids = append(uids, uid) - if mapEntry.Posting != nil { - pl.Postings = append(pl.Postings, mapEntry.Posting) + currentKey = append(currentKey[:0], entryKey...) + var mapEntry *pb.MapEntry + if len(freelist) == 0 { + // Create a new map entry + mapEntry = &pb.MapEntry{} + } else { + // Obtain from free list + mapEntry = freelist[0] + mapEntry.Reset() + freelist = freelist[1:] } + x.Check(mapEntry.Unmarshal(entry)) + currentBatch = append(currentBatch, mapEntry) } appendToList() - return size + return countEntries } diff --git a/go.mod b/go.mod index 0f4fec0ae2d..065b76c9711 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/gogo/protobuf v1.3.1 github.com/golang/geo v0.0.0-20170810003146-31fb0106dc4a github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - github.com/golang/protobuf v1.3.2 + github.com/golang/protobuf v1.3.3 github.com/golang/snappy v0.0.1 github.com/google/codesearch v1.0.0 github.com/google/go-cmp v0.3.1 diff --git a/go.sum b/go.sum index 34b911ac908..fe0778874ca 100644 --- a/go.sum +++ b/go.sum @@ -6,37 +6,28 @@ contrib.go.opencensus.io/exporter/prometheus v0.1.0 h1:SByaIoWwNgMdPSgl5sMqM2KDE contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= github.com/99designs/gqlgen v0.11.0 h1:7MVbtFYo4IVV8ejJzqs9n+0VNP3HdJhJOaaxFV1OLnA= github.com/99designs/gqlgen v0.11.0/go.mod h1:vjFOyBZ7NwDl+GdSD4PFn7BQn5Fy7ohJwXn7Vk8zz+c= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DATA-DOG/go-sqlmock v1.3.2 h1:2L2f5t3kKnCLxnClDD/PrDfExFFa1wjESgxHG/B1ibo= github.com/DATA-DOG/go-sqlmock v1.3.2/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v0.0.0-20190425163447-40bafcb5f6c1 h1:fSu93OUqfEkoQJBkTsxFB1e0oESqabS45iRX880e7Xw= github.com/DataDog/datadog-go v0.0.0-20190425163447-40bafcb5f6c1/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20190503082300-0f32ad59ab08 h1:5btKvK+N+FpW0EEgvxq7LWcUEwIRLsL4IwIo0u+Qlhs= github.com/DataDog/opencensus-go-exporter-datadog v0.0.0-20190503082300-0f32ad59ab08/go.mod h1:gMGUEe16aZh0QN941HgDjwrdjU4iTthPoz2/AtDRADE= -github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.4 h1:+IawcoXhCBylN7ccwdwf8LOH2jKq7NavGpEPanrlTzE= github.com/DataDog/zstd v1.4.4/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/agnivade/levenshtein v1.0.3 h1:M5ZnqLOoZR8ygVq0FfkXsNOKzMCk0xRiow0R5+5VkQ0= github.com/agnivade/levenshtein v1.0.3/go.mod h1:4SFRZbbXWLF4MU1T9Qg0pGgH3Pjs+t6ie5efyrwRJXs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/apache/thrift v0.12.0 h1:pODnxUFNcjP9UTLZGTdeh+j16A8lJbRvD3rOtrk/7bs= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -64,7 +55,6 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -73,19 +63,16 @@ github.com/dgraph-io/badger/v2 v2.0.1-0.20191220102048-ab4352b00a17 h1:BxXd8isFV github.com/dgraph-io/badger/v2 v2.0.1-0.20191220102048-ab4352b00a17/go.mod h1:YoRSIp1LmAJ7zH7tZwRvjNMUYLxB4wl3ebYkaIruZ04= github.com/dgraph-io/dgo/v2 v2.1.1-0.20191127085444-c7a02678e8a6 h1:5leDFqGys055YO3TbghBhk/QdRPEwyLPdgsSJfiR20I= github.com/dgraph-io/dgo/v2 v2.1.1-0.20191127085444-c7a02678e8a6/go.mod h1:LJCkLxm5fUMcU+yb8gHFjHt7ChgNuz3YnQQ6MQkmscI= -github.com/dgraph-io/ristretto v0.0.0-20191025175511-c1f00be0418e h1:aeUNgwup7PnDOBAD1BOKAqzb/W/NksOj6r3dwKKuqfg= github.com/dgraph-io/ristretto v0.0.0-20191025175511-c1f00be0418e/go.mod h1:edzKIzGvqUCMzhTVWbiTSe75zD9Xxq0GtSBtFmaUTZs= github.com/dgraph-io/ristretto v0.0.1 h1:cJwdnj42uV8Jg4+KLrYovLiCgIfz9wtWm6E6KA+1tLs= github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20191112170834-c2139c5d712b h1:SeiGBzKrEtuDddnBABHkp4kq9sBGE9nuYmk6FPTg0zg= github.com/dgryski/go-farm v0.0.0-20191112170834-c2139c5d712b/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-groupvarint v0.0.0-20190318181831-5ce5df8ca4e1 h1:RSnSk6/ViWmqng/mNcPztSPgr6/4EVDxMmBH/a0w/6I= github.com/dgryski/go-groupvarint v0.0.0-20190318181831-5ce5df8ca4e1/go.mod h1:MlkUQveSLEDbIgq2r1e++tSf0zfzU9mQpa9Qkczl+9Y= -github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c h1:TUuUh0Xgj97tLMNtWtNvI9mIV6isjEb9lBMNv+77IGM= github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -109,7 +96,6 @@ github.com/go-sql-driver/mysql v0.0.0-20190330032241-c0f6b444ad8f/go.mod h1:zAC/ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0 h1:xU6/SpYbvkNYiptHJYEDRseDLvYE7wSqhYYNy0QSUzI= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -120,23 +106,22 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/codesearch v1.0.0 h1:z4h5JoHkUS+GqxqPDrldC3Y0Qq0vHAGgaDEW5pWU/ys= github.com/google/codesearch v1.0.0/go.mod h1:qCnXDFnak/trCmLaE50kgPte3AX9jSeruZexWEOivi0= -github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -152,21 +137,17 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.0.0/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= @@ -241,20 +222,16 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337 h1:WN9BUFbdyOsSH/XohnWpXOlq9NBD5sGAB2FciQMUEe8= github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -328,7 +305,6 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -350,13 +326,10 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb h1:fgwFCsaw9buMuxNd6+DQfAuSFqbNiQZpcgJQAgJsK6k= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 h1:4y9KwBHBgBNwDbtu44R5o1fdOCQUEXhbk/P4A9WmJq0= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -378,7 +351,6 @@ google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMt google.golang.org/api v0.3.2 h1:iTp+3yyl/KOtxa/d1/JUE0GGSoR6FuW5udver22iwpw= google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180608181217-32ee49c4dd80/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -397,16 +369,13 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/ini.v1 v1.48.0 h1:URjZc+8ugRY5mL5uUeQH/a63JcHwdX9xZaWvmNWD7z8= gopkg.in/ini.v1 v1.48.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/protos/pb.proto b/protos/pb.proto index 2ecabee0a29..8039a138079 100644 --- a/protos/pb.proto +++ b/protos/pb.proto @@ -435,6 +435,10 @@ message TypeUpdate { repeated SchemaUpdate fields = 2; } +message MapHeader { + repeated bytes partition_keys = 1; +} + // Bulk loader proto. message MapEntry { bytes key = 1; diff --git a/protos/pb/pb.pb.go b/protos/pb/pb.pb.go index 5134c92e326..98b5b4da6a5 100644 --- a/protos/pb/pb.pb.go +++ b/protos/pb/pb.pb.go @@ -269,7 +269,7 @@ func (x BackupKey_KeyType) String() string { } func (BackupKey_KeyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{55, 0} + return fileDescriptor_f80abaa17e25ccc8, []int{56, 0} } type List struct { @@ -3358,6 +3358,53 @@ func (m *TypeUpdate) GetFields() []*SchemaUpdate { return nil } +type MapHeader struct { + PartitionKeys [][]byte `protobuf:"bytes,1,rep,name=partition_keys,json=partitionKeys,proto3" json:"partition_keys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MapHeader) Reset() { *m = MapHeader{} } +func (m *MapHeader) String() string { return proto.CompactTextString(m) } +func (*MapHeader) ProtoMessage() {} +func (*MapHeader) Descriptor() ([]byte, []int) { + return fileDescriptor_f80abaa17e25ccc8, []int{40} +} +func (m *MapHeader) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MapHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MapHeader.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MapHeader) XXX_Merge(src proto.Message) { + xxx_messageInfo_MapHeader.Merge(m, src) +} +func (m *MapHeader) XXX_Size() int { + return m.Size() +} +func (m *MapHeader) XXX_DiscardUnknown() { + xxx_messageInfo_MapHeader.DiscardUnknown(m) +} + +var xxx_messageInfo_MapHeader proto.InternalMessageInfo + +func (m *MapHeader) GetPartitionKeys() [][]byte { + if m != nil { + return m.PartitionKeys + } + return nil +} + // Bulk loader proto. type MapEntry struct { Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` @@ -3373,7 +3420,7 @@ func (m *MapEntry) Reset() { *m = MapEntry{} } func (m *MapEntry) String() string { return proto.CompactTextString(m) } func (*MapEntry) ProtoMessage() {} func (*MapEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{40} + return fileDescriptor_f80abaa17e25ccc8, []int{41} } func (m *MapEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3438,7 +3485,7 @@ func (m *MovePredicatePayload) Reset() { *m = MovePredicatePayload{} } func (m *MovePredicatePayload) String() string { return proto.CompactTextString(m) } func (*MovePredicatePayload) ProtoMessage() {} func (*MovePredicatePayload) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{41} + return fileDescriptor_f80abaa17e25ccc8, []int{42} } func (m *MovePredicatePayload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3514,7 +3561,7 @@ func (m *TxnStatus) Reset() { *m = TxnStatus{} } func (m *TxnStatus) String() string { return proto.CompactTextString(m) } func (*TxnStatus) ProtoMessage() {} func (*TxnStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{42} + return fileDescriptor_f80abaa17e25ccc8, []int{43} } func (m *TxnStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3570,7 +3617,7 @@ func (m *OracleDelta) Reset() { *m = OracleDelta{} } func (m *OracleDelta) String() string { return proto.CompactTextString(m) } func (*OracleDelta) ProtoMessage() {} func (*OracleDelta) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{43} + return fileDescriptor_f80abaa17e25ccc8, []int{44} } func (m *OracleDelta) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3631,7 +3678,7 @@ func (m *TxnTimestamps) Reset() { *m = TxnTimestamps{} } func (m *TxnTimestamps) String() string { return proto.CompactTextString(m) } func (*TxnTimestamps) ProtoMessage() {} func (*TxnTimestamps) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{44} + return fileDescriptor_f80abaa17e25ccc8, []int{45} } func (m *TxnTimestamps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3678,7 +3725,7 @@ func (m *PeerResponse) Reset() { *m = PeerResponse{} } func (m *PeerResponse) String() string { return proto.CompactTextString(m) } func (*PeerResponse) ProtoMessage() {} func (*PeerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{45} + return fileDescriptor_f80abaa17e25ccc8, []int{46} } func (m *PeerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3726,7 +3773,7 @@ func (m *RaftBatch) Reset() { *m = RaftBatch{} } func (m *RaftBatch) String() string { return proto.CompactTextString(m) } func (*RaftBatch) ProtoMessage() {} func (*RaftBatch) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{46} + return fileDescriptor_f80abaa17e25ccc8, []int{47} } func (m *RaftBatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3780,7 +3827,7 @@ func (m *SubscriptionRequest) Reset() { *m = SubscriptionRequest{} } func (m *SubscriptionRequest) String() string { return proto.CompactTextString(m) } func (*SubscriptionRequest) ProtoMessage() {} func (*SubscriptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{47} + return fileDescriptor_f80abaa17e25ccc8, []int{48} } func (m *SubscriptionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3827,7 +3874,7 @@ func (m *SubscriptionResponse) Reset() { *m = SubscriptionResponse{} } func (m *SubscriptionResponse) String() string { return proto.CompactTextString(m) } func (*SubscriptionResponse) ProtoMessage() {} func (*SubscriptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{48} + return fileDescriptor_f80abaa17e25ccc8, []int{49} } func (m *SubscriptionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3876,7 +3923,7 @@ func (m *Num) Reset() { *m = Num{} } func (m *Num) String() string { return proto.CompactTextString(m) } func (*Num) ProtoMessage() {} func (*Num) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{49} + return fileDescriptor_f80abaa17e25ccc8, []int{50} } func (m *Num) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3940,7 +3987,7 @@ func (m *AssignedIds) Reset() { *m = AssignedIds{} } func (m *AssignedIds) String() string { return proto.CompactTextString(m) } func (*AssignedIds) ProtoMessage() {} func (*AssignedIds) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{50} + return fileDescriptor_f80abaa17e25ccc8, []int{51} } func (m *AssignedIds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4002,7 +4049,7 @@ func (m *SnapshotMeta) Reset() { *m = SnapshotMeta{} } func (m *SnapshotMeta) String() string { return proto.CompactTextString(m) } func (*SnapshotMeta) ProtoMessage() {} func (*SnapshotMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{51} + return fileDescriptor_f80abaa17e25ccc8, []int{52} } func (m *SnapshotMeta) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4059,7 +4106,7 @@ func (m *Status) Reset() { *m = Status{} } func (m *Status) String() string { return proto.CompactTextString(m) } func (*Status) ProtoMessage() {} func (*Status) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{52} + return fileDescriptor_f80abaa17e25ccc8, []int{53} } func (m *Status) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4126,7 +4173,7 @@ func (m *BackupRequest) Reset() { *m = BackupRequest{} } func (m *BackupRequest) String() string { return proto.CompactTextString(m) } func (*BackupRequest) ProtoMessage() {} func (*BackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{53} + return fileDescriptor_f80abaa17e25ccc8, []int{54} } func (m *BackupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4239,7 +4286,7 @@ func (m *ExportRequest) Reset() { *m = ExportRequest{} } func (m *ExportRequest) String() string { return proto.CompactTextString(m) } func (*ExportRequest) ProtoMessage() {} func (*ExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{54} + return fileDescriptor_f80abaa17e25ccc8, []int{55} } func (m *ExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4313,7 +4360,7 @@ func (m *BackupKey) Reset() { *m = BackupKey{} } func (m *BackupKey) String() string { return proto.CompactTextString(m) } func (*BackupKey) ProtoMessage() {} func (*BackupKey) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{55} + return fileDescriptor_f80abaa17e25ccc8, []int{56} } func (m *BackupKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4399,7 +4446,7 @@ func (m *BackupPostingList) Reset() { *m = BackupPostingList{} } func (m *BackupPostingList) String() string { return proto.CompactTextString(m) } func (*BackupPostingList) ProtoMessage() {} func (*BackupPostingList) Descriptor() ([]byte, []int) { - return fileDescriptor_f80abaa17e25ccc8, []int{56} + return fileDescriptor_f80abaa17e25ccc8, []int{57} } func (m *BackupPostingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4510,6 +4557,7 @@ func init() { proto.RegisterType((*SchemaResult)(nil), "pb.SchemaResult") proto.RegisterType((*SchemaUpdate)(nil), "pb.SchemaUpdate") proto.RegisterType((*TypeUpdate)(nil), "pb.TypeUpdate") + proto.RegisterType((*MapHeader)(nil), "pb.MapHeader") proto.RegisterType((*MapEntry)(nil), "pb.MapEntry") proto.RegisterType((*MovePredicatePayload)(nil), "pb.MovePredicatePayload") proto.RegisterType((*TxnStatus)(nil), "pb.TxnStatus") @@ -4533,264 +4581,266 @@ func init() { func init() { proto.RegisterFile("pb.proto", fileDescriptor_f80abaa17e25ccc8) } var fileDescriptor_f80abaa17e25ccc8 = []byte{ - // 4111 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x3a, 0x3b, 0x70, 0x1c, 0x47, - 0x76, 0x98, 0xfd, 0xce, 0xbc, 0xdd, 0x05, 0x57, 0x23, 0x1e, 0xb5, 0x82, 0x74, 0x24, 0x34, 0xfa, - 0x41, 0xe4, 0x11, 0xa4, 0x20, 0xb9, 0x7c, 0x52, 0x95, 0x03, 0x10, 0x58, 0x52, 0x10, 0xc1, 0x05, - 0xae, 0x77, 0x41, 0xf9, 0x14, 0x78, 0xab, 0x31, 0xd3, 0x00, 0xe6, 0x30, 0x3b, 0x33, 0x9e, 0x9e, - 0x85, 0x17, 0xca, 0x5c, 0x2e, 0x3b, 0xb2, 0x23, 0x27, 0x17, 0xd9, 0x8e, 0x9d, 0xb8, 0xca, 0x91, - 0xcb, 0xae, 0x72, 0xe4, 0xc0, 0x76, 0xe4, 0xdc, 0x81, 0x5d, 0xb2, 0x33, 0x87, 0xae, 0x72, 0xec, - 0x7a, 0xaf, 0x7b, 0x7e, 0xcb, 0x25, 0x79, 0xba, 0xaa, 0x8b, 0xb6, 0xdf, 0xeb, 0xd7, 0xbf, 0xf7, - 0x7f, 0x6f, 0x16, 0xcc, 0xf8, 0x74, 0x3b, 0x4e, 0xa2, 0x34, 0xb2, 0x6b, 0xf1, 0xe9, 0x86, 0xc5, - 0x63, 0x5f, 0x81, 0x1b, 0x1f, 0x9f, 0xfb, 0xe9, 0xc5, 0xfc, 0x74, 0xdb, 0x8d, 0x66, 0x0f, 0xbc, - 0xf3, 0x84, 0xc7, 0x17, 0xf7, 0xfd, 0xe8, 0xc1, 0x29, 0xf7, 0xce, 0x45, 0xf2, 0x20, 0x3e, 0x7d, - 0x90, 0xad, 0x73, 0x36, 0xa0, 0x71, 0xe8, 0xcb, 0xd4, 0xb6, 0xa1, 0x31, 0xf7, 0x3d, 0x39, 0x30, - 0x36, 0xeb, 0x5b, 0x2d, 0x46, 0x63, 0xe7, 0x19, 0x58, 0x13, 0x2e, 0x2f, 0x9f, 0xf3, 0x60, 0x2e, - 0xec, 0x3e, 0xd4, 0xaf, 0x78, 0x30, 0x30, 0x36, 0x8d, 0xad, 0x2e, 0xc3, 0xa1, 0xbd, 0x0d, 0xe6, - 0x15, 0x0f, 0xa6, 0xe9, 0x75, 0x2c, 0x06, 0xb5, 0x4d, 0x63, 0x6b, 0x7d, 0xe7, 0xcd, 0xed, 0xf8, - 0x74, 0xfb, 0x38, 0x92, 0xa9, 0x1f, 0x9e, 0x6f, 0x3f, 0xe7, 0xc1, 0xe4, 0x3a, 0x16, 0xac, 0x7d, - 0xa5, 0x06, 0xce, 0x11, 0x74, 0xc6, 0x89, 0xfb, 0x78, 0x1e, 0xba, 0xa9, 0x1f, 0x85, 0x78, 0x62, - 0xc8, 0x67, 0x82, 0x76, 0xb4, 0x18, 0x8d, 0x11, 0xc7, 0x93, 0x73, 0x39, 0xa8, 0x6f, 0xd6, 0x11, - 0x87, 0x63, 0x7b, 0x00, 0x6d, 0x5f, 0xee, 0x45, 0xf3, 0x30, 0x1d, 0x34, 0x36, 0x8d, 0x2d, 0x93, - 0x65, 0xa0, 0xf3, 0x97, 0x75, 0x68, 0xfe, 0x6c, 0x2e, 0x92, 0x6b, 0x5a, 0x97, 0xa6, 0x49, 0xb6, - 0x17, 0x8e, 0xed, 0x9b, 0xd0, 0x0c, 0x78, 0x78, 0x2e, 0x07, 0x35, 0xda, 0x4c, 0x01, 0xf6, 0x3b, - 0x60, 0xf1, 0xb3, 0x54, 0x24, 0xd3, 0xb9, 0xef, 0x0d, 0xea, 0x9b, 0xc6, 0x56, 0x8b, 0x99, 0x84, - 0x38, 0xf1, 0x3d, 0xfb, 0x6d, 0x30, 0xbd, 0x68, 0xea, 0x96, 0xcf, 0xf2, 0x22, 0x3a, 0xcb, 0x7e, - 0x1f, 0xcc, 0xb9, 0xef, 0x4d, 0x03, 0x5f, 0xa6, 0x83, 0xe6, 0xa6, 0xb1, 0xd5, 0xd9, 0x31, 0xf1, - 0xb1, 0xc8, 0x3b, 0xd6, 0x9e, 0xfb, 0x1e, 0x31, 0xf1, 0x2e, 0x98, 0x32, 0x71, 0xa7, 0x67, 0xf3, - 0xd0, 0x1d, 0xb4, 0x88, 0xe8, 0x06, 0x12, 0x95, 0x5e, 0xcd, 0xda, 0x52, 0x01, 0xf8, 0xac, 0x44, - 0x5c, 0x89, 0x44, 0x8a, 0x41, 0x5b, 0x1d, 0xa5, 0x41, 0xfb, 0x21, 0x74, 0xce, 0xb8, 0x2b, 0xd2, - 0x69, 0xcc, 0x13, 0x3e, 0x1b, 0x98, 0xc5, 0x46, 0x8f, 0x11, 0x7d, 0x8c, 0x58, 0xc9, 0xe0, 0x2c, - 0x07, 0xec, 0xcf, 0xa0, 0x47, 0x90, 0x9c, 0x9e, 0xf9, 0x41, 0x2a, 0x92, 0x81, 0x45, 0x6b, 0xd6, - 0x69, 0x0d, 0x61, 0x26, 0x89, 0x10, 0xac, 0xab, 0x88, 0x14, 0xc6, 0xfe, 0x31, 0x80, 0x58, 0xc4, - 0x3c, 0xf4, 0xa6, 0x3c, 0x08, 0x06, 0x40, 0x77, 0xb0, 0x14, 0x66, 0x37, 0x08, 0xec, 0xb7, 0xf0, - 0x7e, 0xdc, 0x9b, 0xa6, 0x72, 0xd0, 0xdb, 0x34, 0xb6, 0x1a, 0xac, 0x85, 0xe0, 0x44, 0x22, 0x5f, - 0x5d, 0xee, 0x5e, 0x88, 0xc1, 0xfa, 0xa6, 0xb1, 0xd5, 0x64, 0x0a, 0x40, 0xec, 0x99, 0x9f, 0xc8, - 0x74, 0x70, 0x43, 0x61, 0x09, 0x70, 0x76, 0xc0, 0x22, 0xed, 0x21, 0xee, 0x7c, 0x08, 0xad, 0x2b, - 0x04, 0x94, 0x92, 0x75, 0x76, 0x7a, 0x78, 0xbd, 0x5c, 0xc1, 0x98, 0x9e, 0x74, 0x6e, 0x83, 0x79, - 0xc8, 0xc3, 0xf3, 0x4c, 0x2b, 0x51, 0x6c, 0xb4, 0xc0, 0x62, 0x34, 0x76, 0x7e, 0x59, 0x83, 0x16, - 0x13, 0x72, 0x1e, 0xa4, 0xf6, 0xc7, 0x00, 0x28, 0x94, 0x19, 0x4f, 0x13, 0x7f, 0xa1, 0x77, 0x2d, - 0xc4, 0x62, 0xcd, 0x7d, 0xef, 0x19, 0x4d, 0xd9, 0x0f, 0xa1, 0x4b, 0xbb, 0x67, 0xa4, 0xb5, 0xe2, - 0x02, 0xf9, 0xfd, 0x58, 0x87, 0x48, 0xf4, 0x8a, 0x5b, 0xd0, 0x22, 0x3d, 0x50, 0xba, 0xd8, 0x63, - 0x1a, 0xb2, 0x3f, 0x84, 0x75, 0x3f, 0x4c, 0x51, 0x4e, 0x6e, 0x3a, 0xf5, 0x84, 0xcc, 0x14, 0xa5, - 0x97, 0x63, 0xf7, 0x85, 0x4c, 0xed, 0x4f, 0x41, 0x31, 0x3b, 0x3b, 0xb0, 0x49, 0x07, 0xae, 0xe7, - 0x42, 0x94, 0xea, 0x44, 0xa2, 0xd1, 0x27, 0xde, 0x87, 0x0e, 0xbe, 0x2f, 0x5b, 0xd1, 0xa2, 0x15, + // 4137 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x3a, 0x4b, 0x70, 0x24, 0x47, + 0x56, 0xaa, 0xfe, 0x56, 0xbd, 0xee, 0xd6, 0xb4, 0xcb, 0xb3, 0xe3, 0xb6, 0xec, 0x9d, 0x91, 0xcb, + 0x1e, 0x5b, 0xb6, 0x77, 0x34, 0x63, 0xd9, 0x04, 0x6b, 0x47, 0x70, 0xd0, 0x48, 0x3d, 0x63, 0x79, + 0xa4, 0x96, 0x36, 0xbb, 0x35, 0x66, 0x7d, 0xa0, 0x23, 0x55, 0x95, 0x92, 0x6a, 0x55, 0x5d, 0x55, + 0x54, 0x56, 0x8b, 0x96, 0x6f, 0x04, 0x01, 0x27, 0x38, 0x71, 0xd9, 0x13, 0x70, 0xe6, 0x42, 0x04, + 0x27, 0x02, 0x22, 0x38, 0x71, 0x00, 0x4e, 0xdc, 0x39, 0x40, 0x18, 0x6e, 0x1c, 0x89, 0xe0, 0x4c, + 0xbc, 0x97, 0x59, 0xbf, 0x9e, 0x9e, 0xf1, 0x7a, 0x23, 0xf6, 0xd4, 0xf9, 0x5e, 0xbe, 0xfc, 0xbd, + 0xff, 0x7b, 0xd5, 0x60, 0xc6, 0x67, 0xdb, 0x71, 0x12, 0xa5, 0x91, 0x5d, 0x8b, 0xcf, 0x36, 0x2c, + 0x1e, 0xfb, 0x0a, 0xdc, 0xf8, 0xe0, 0xc2, 0x4f, 0x2f, 0xe7, 0x67, 0xdb, 0x6e, 0x34, 0x7b, 0xe8, + 0x5d, 0x24, 0x3c, 0xbe, 0x7c, 0xe0, 0x47, 0x0f, 0xcf, 0xb8, 0x77, 0x21, 0x92, 0x87, 0xf1, 0xd9, + 0xc3, 0x6c, 0x9d, 0xb3, 0x01, 0x8d, 0x43, 0x5f, 0xa6, 0xb6, 0x0d, 0x8d, 0xb9, 0xef, 0xc9, 0x81, + 0xb1, 0x59, 0xdf, 0x6a, 0x31, 0x1a, 0x3b, 0x47, 0x60, 0x4d, 0xb8, 0xbc, 0x7a, 0xce, 0x83, 0xb9, + 0xb0, 0xfb, 0x50, 0xbf, 0xe6, 0xc1, 0xc0, 0xd8, 0x34, 0xb6, 0xba, 0x0c, 0x87, 0xf6, 0x36, 0x98, + 0xd7, 0x3c, 0x98, 0xa6, 0x37, 0xb1, 0x18, 0xd4, 0x36, 0x8d, 0xad, 0xf5, 0x9d, 0xd7, 0xb7, 0xe3, + 0xb3, 0xed, 0x93, 0x48, 0xa6, 0x7e, 0x78, 0xb1, 0xfd, 0x9c, 0x07, 0x93, 0x9b, 0x58, 0xb0, 0xf6, + 0xb5, 0x1a, 0x38, 0xc7, 0xd0, 0x19, 0x27, 0xee, 0x93, 0x79, 0xe8, 0xa6, 0x7e, 0x14, 0xe2, 0x89, + 0x21, 0x9f, 0x09, 0xda, 0xd1, 0x62, 0x34, 0x46, 0x1c, 0x4f, 0x2e, 0xe4, 0xa0, 0xbe, 0x59, 0x47, + 0x1c, 0x8e, 0xed, 0x01, 0xb4, 0x7d, 0xb9, 0x17, 0xcd, 0xc3, 0x74, 0xd0, 0xd8, 0x34, 0xb6, 0x4c, + 0x96, 0x81, 0xce, 0x5f, 0xd6, 0xa1, 0xf9, 0xb3, 0xb9, 0x48, 0x6e, 0x68, 0x5d, 0x9a, 0x26, 0xd9, + 0x5e, 0x38, 0xb6, 0x6f, 0x43, 0x33, 0xe0, 0xe1, 0x85, 0x1c, 0xd4, 0x68, 0x33, 0x05, 0xd8, 0x6f, + 0x81, 0xc5, 0xcf, 0x53, 0x91, 0x4c, 0xe7, 0xbe, 0x37, 0xa8, 0x6f, 0x1a, 0x5b, 0x2d, 0x66, 0x12, + 0xe2, 0xd4, 0xf7, 0xec, 0x37, 0xc1, 0xf4, 0xa2, 0xa9, 0x5b, 0x3e, 0xcb, 0x8b, 0xe8, 0x2c, 0xfb, + 0x5d, 0x30, 0xe7, 0xbe, 0x37, 0x0d, 0x7c, 0x99, 0x0e, 0x9a, 0x9b, 0xc6, 0x56, 0x67, 0xc7, 0xc4, + 0xc7, 0x22, 0xef, 0x58, 0x7b, 0xee, 0x7b, 0xc4, 0xc4, 0x8f, 0xc0, 0x94, 0x89, 0x3b, 0x3d, 0x9f, + 0x87, 0xee, 0xa0, 0x45, 0x44, 0xb7, 0x90, 0xa8, 0xf4, 0x6a, 0xd6, 0x96, 0x0a, 0xc0, 0x67, 0x25, + 0xe2, 0x5a, 0x24, 0x52, 0x0c, 0xda, 0xea, 0x28, 0x0d, 0xda, 0x8f, 0xa0, 0x73, 0xce, 0x5d, 0x91, + 0x4e, 0x63, 0x9e, 0xf0, 0xd9, 0xc0, 0x2c, 0x36, 0x7a, 0x82, 0xe8, 0x13, 0xc4, 0x4a, 0x06, 0xe7, + 0x39, 0x60, 0x7f, 0x0a, 0x3d, 0x82, 0xe4, 0xf4, 0xdc, 0x0f, 0x52, 0x91, 0x0c, 0x2c, 0x5a, 0xb3, + 0x4e, 0x6b, 0x08, 0x33, 0x49, 0x84, 0x60, 0x5d, 0x45, 0xa4, 0x30, 0xf6, 0x8f, 0x01, 0xc4, 0x22, + 0xe6, 0xa1, 0x37, 0xe5, 0x41, 0x30, 0x00, 0xba, 0x83, 0xa5, 0x30, 0xbb, 0x41, 0x60, 0xbf, 0x81, + 0xf7, 0xe3, 0xde, 0x34, 0x95, 0x83, 0xde, 0xa6, 0xb1, 0xd5, 0x60, 0x2d, 0x04, 0x27, 0x12, 0xf9, + 0xea, 0x72, 0xf7, 0x52, 0x0c, 0xd6, 0x37, 0x8d, 0xad, 0x26, 0x53, 0x00, 0x62, 0xcf, 0xfd, 0x44, + 0xa6, 0x83, 0x5b, 0x0a, 0x4b, 0x80, 0xb3, 0x03, 0x16, 0x69, 0x0f, 0x71, 0xe7, 0x3e, 0xb4, 0xae, + 0x11, 0x50, 0x4a, 0xd6, 0xd9, 0xe9, 0xe1, 0xf5, 0x72, 0x05, 0x63, 0x7a, 0xd2, 0xb9, 0x0b, 0xe6, + 0x21, 0x0f, 0x2f, 0x32, 0xad, 0x44, 0xb1, 0xd1, 0x02, 0x8b, 0xd1, 0xd8, 0xf9, 0x65, 0x0d, 0x5a, + 0x4c, 0xc8, 0x79, 0x90, 0xda, 0x1f, 0x00, 0xa0, 0x50, 0x66, 0x3c, 0x4d, 0xfc, 0x85, 0xde, 0xb5, + 0x10, 0x8b, 0x35, 0xf7, 0xbd, 0x23, 0x9a, 0xb2, 0x1f, 0x41, 0x97, 0x76, 0xcf, 0x48, 0x6b, 0xc5, + 0x05, 0xf2, 0xfb, 0xb1, 0x0e, 0x91, 0xe8, 0x15, 0x77, 0xa0, 0x45, 0x7a, 0xa0, 0x74, 0xb1, 0xc7, + 0x34, 0x64, 0xdf, 0x87, 0x75, 0x3f, 0x4c, 0x51, 0x4e, 0x6e, 0x3a, 0xf5, 0x84, 0xcc, 0x14, 0xa5, + 0x97, 0x63, 0xf7, 0x85, 0x4c, 0xed, 0x4f, 0x40, 0x31, 0x3b, 0x3b, 0xb0, 0x49, 0x07, 0xae, 0xe7, + 0x42, 0x94, 0xea, 0x44, 0xa2, 0xd1, 0x27, 0x3e, 0x80, 0x0e, 0xbe, 0x2f, 0x5b, 0xd1, 0xa2, 0x15, 0x5d, 0x7a, 0x8d, 0x66, 0x07, 0x03, 0x24, 0xd0, 0xe4, 0xc8, 0x1a, 0x54, 0x46, 0xa5, 0x3c, 0x34, - 0x76, 0x86, 0xd0, 0x3c, 0x4a, 0x3c, 0x91, 0xac, 0xb4, 0x07, 0x1b, 0x1a, 0x9e, 0x90, 0x2e, 0x99, + 0x76, 0x86, 0xd0, 0x3c, 0x4e, 0x3c, 0x91, 0xac, 0xb4, 0x07, 0x1b, 0x1a, 0x9e, 0x90, 0x2e, 0x99, 0xaa, 0xc9, 0x68, 0x5c, 0xd8, 0x48, 0xbd, 0x64, 0x23, 0xce, 0x5f, 0x18, 0xd0, 0x19, 0x47, 0x49, - 0xfa, 0x4c, 0x48, 0xc9, 0xcf, 0x85, 0x7d, 0x07, 0x9a, 0x11, 0x6e, 0xab, 0x39, 0x6c, 0xe1, 0x9d, - 0xe8, 0x1c, 0xa6, 0xf0, 0x4b, 0x72, 0xa8, 0xbd, 0x5c, 0x0e, 0xa8, 0x3b, 0x64, 0x5d, 0x75, 0xad, - 0x3b, 0x64, 0x5b, 0xb7, 0xa0, 0x15, 0x9d, 0x9d, 0x49, 0xa1, 0x78, 0xd9, 0x64, 0x1a, 0x7a, 0xa9, - 0x0a, 0x3a, 0xbf, 0x05, 0x80, 0xf7, 0xfb, 0x81, 0x5a, 0xe0, 0x5c, 0x40, 0x87, 0xf1, 0xb3, 0x74, - 0x2f, 0x0a, 0x53, 0xb1, 0x48, 0xed, 0x75, 0xa8, 0xf9, 0x1e, 0xb1, 0xa8, 0xc5, 0x6a, 0xbe, 0x87, - 0x97, 0x3b, 0x4f, 0xa2, 0x79, 0x4c, 0x1c, 0xea, 0x31, 0x05, 0x10, 0x2b, 0x3d, 0x2f, 0xa1, 0x1b, - 0x23, 0x2b, 0x3d, 0x2f, 0xb1, 0xef, 0x40, 0x47, 0x86, 0x3c, 0x96, 0x17, 0x51, 0x8a, 0x97, 0x6b, - 0xd0, 0xe5, 0x20, 0x43, 0x4d, 0xa4, 0xf3, 0x3f, 0x06, 0xb4, 0x9e, 0x89, 0xd9, 0xa9, 0x48, 0x5e, - 0x38, 0xe5, 0x6d, 0x30, 0x69, 0xe3, 0xa9, 0xef, 0xe9, 0x83, 0xda, 0x04, 0x1f, 0x78, 0x2b, 0x8f, - 0xba, 0x05, 0xad, 0x40, 0x70, 0x64, 0xbe, 0xd2, 0x33, 0x0d, 0x21, 0x6f, 0xf8, 0x6c, 0xea, 0x09, - 0xee, 0x91, 0x3b, 0x32, 0x59, 0x8b, 0xcf, 0xf6, 0x05, 0xf7, 0xf0, 0x6e, 0x01, 0x97, 0xe9, 0x74, - 0x1e, 0x7b, 0x3c, 0x15, 0xe4, 0x86, 0x1a, 0xa8, 0x38, 0x32, 0x3d, 0x21, 0x8c, 0x7d, 0x17, 0xde, - 0x70, 0x83, 0xb9, 0x44, 0x1f, 0xe8, 0x87, 0x67, 0xd1, 0x34, 0x0a, 0x83, 0x6b, 0xe2, 0xaf, 0xc9, - 0x6e, 0xe8, 0x89, 0x83, 0xf0, 0x2c, 0x3a, 0x0a, 0x83, 0x6b, 0xfb, 0x03, 0x58, 0x3f, 0x8b, 0x12, - 0x57, 0x4c, 0xf3, 0x2b, 0xaf, 0x13, 0x61, 0x97, 0xb0, 0x4f, 0xd4, 0xbd, 0x9d, 0xbf, 0xab, 0x41, - 0x93, 0xc6, 0xf6, 0x43, 0x68, 0xcf, 0xe8, 0xd9, 0x99, 0x8d, 0xdf, 0x42, 0x39, 0xd0, 0xdc, 0xb6, - 0xe2, 0x87, 0x1c, 0x86, 0x69, 0x72, 0xcd, 0x32, 0x32, 0x5c, 0x91, 0xf2, 0xd3, 0x40, 0xa4, 0x52, - 0xeb, 0x4d, 0x69, 0xc5, 0x44, 0x4d, 0xe8, 0x15, 0x9a, 0x6c, 0x99, 0xf9, 0xf5, 0x65, 0xe6, 0xdb, - 0x1b, 0x60, 0xba, 0x17, 0xc2, 0xbd, 0x94, 0xf3, 0x99, 0x16, 0x4d, 0x0e, 0x6f, 0x3c, 0x86, 0x6e, - 0xf9, 0x1e, 0x18, 0xd5, 0x2e, 0xc5, 0x35, 0x89, 0xa7, 0xc1, 0x70, 0x68, 0x6f, 0x42, 0x93, 0xfc, - 0x00, 0x09, 0xa7, 0xb3, 0x03, 0x78, 0x1d, 0xb5, 0x84, 0xa9, 0x89, 0x2f, 0x6b, 0x3f, 0x35, 0x70, - 0x9f, 0xf2, 0xed, 0xca, 0xfb, 0x58, 0x2f, 0xdf, 0x47, 0x2d, 0x29, 0xed, 0xe3, 0x44, 0xd0, 0x3e, - 0xf4, 0x5d, 0x11, 0x4a, 0x8a, 0x7d, 0x73, 0x29, 0x72, 0x9b, 0xc5, 0x31, 0x3e, 0x65, 0xc6, 0x17, - 0xa3, 0xc8, 0x13, 0x92, 0xf6, 0x69, 0xb0, 0x1c, 0xc6, 0x39, 0xb1, 0x88, 0xfd, 0xe4, 0x7a, 0xa2, - 0x98, 0x50, 0x67, 0x39, 0x8c, 0xc1, 0x45, 0x84, 0x78, 0x98, 0x97, 0xc5, 0x31, 0x0d, 0x3a, 0x7f, - 0x55, 0x87, 0xee, 0xb7, 0x22, 0x89, 0x8e, 0x93, 0x28, 0x8e, 0x24, 0x0f, 0xec, 0xdd, 0x2a, 0x3b, - 0x95, 0xd8, 0x36, 0xf1, 0xb6, 0x65, 0xb2, 0xed, 0x71, 0xce, 0x5f, 0x25, 0x8e, 0x32, 0xc3, 0x1d, - 0x68, 0x29, 0x71, 0xae, 0xe0, 0x99, 0x9e, 0x41, 0x1a, 0x25, 0x40, 0xba, 0x6b, 0x95, 0x1f, 0x7a, - 0xc6, 0xbe, 0x0d, 0x30, 0xe3, 0x8b, 0x43, 0xc1, 0xa5, 0x38, 0xf0, 0x32, 0xab, 0x2a, 0x30, 0x9a, - 0x1b, 0x93, 0x45, 0x38, 0x91, 0xa4, 0xf4, 0x8a, 0x1b, 0x04, 0xdb, 0xef, 0x82, 0x35, 0xe3, 0x0b, - 0x34, 0xef, 0x03, 0x4f, 0x2b, 0x7d, 0x81, 0xb0, 0xdf, 0x83, 0x7a, 0xba, 0x08, 0xc9, 0x57, 0x62, - 0x28, 0xc5, 0x3c, 0x69, 0xb2, 0x08, 0xb5, 0x23, 0x60, 0x38, 0x97, 0x49, 0xd0, 0x2c, 0x24, 0xd8, - 0x87, 0xba, 0xeb, 0x7b, 0x14, 0x4b, 0x2d, 0x86, 0x43, 0xfb, 0x43, 0x68, 0x07, 0x4a, 0x5a, 0x14, - 0x2f, 0x3b, 0x3b, 0x1d, 0xe5, 0x66, 0x08, 0xc5, 0xb2, 0xb9, 0x8d, 0xdf, 0x81, 0x1b, 0x4b, 0xec, - 0x2a, 0xeb, 0x47, 0x4f, 0xed, 0x7e, 0xb3, 0xac, 0x1f, 0x8d, 0xb2, 0x4e, 0xfc, 0x47, 0x1d, 0x6e, - 0x68, 0x25, 0xbd, 0xf0, 0xe3, 0x71, 0x8a, 0x46, 0x3b, 0x80, 0x36, 0xf9, 0x4a, 0xad, 0x1f, 0x0d, - 0x96, 0x81, 0xf6, 0x6f, 0x43, 0x8b, 0x8c, 0x33, 0xb3, 0x9f, 0x3b, 0x05, 0xf3, 0xf3, 0xe5, 0xca, - 0x9e, 0xb4, 0xe4, 0x34, 0xb9, 0xfd, 0x39, 0x34, 0xbf, 0x13, 0x49, 0xa4, 0x7c, 0x7f, 0x67, 0xe7, - 0xf6, 0xaa, 0x75, 0xa8, 0x02, 0x7a, 0x99, 0x22, 0xfe, 0x0d, 0xca, 0xe8, 0x03, 0xf4, 0xf6, 0xb3, - 0xe8, 0x4a, 0x78, 0x83, 0x36, 0xdd, 0xa8, 0xac, 0x46, 0xd9, 0x54, 0x26, 0x14, 0x73, 0xa5, 0x50, - 0xac, 0x57, 0x08, 0x65, 0x1f, 0x3a, 0x25, 0x2e, 0xac, 0x10, 0xc8, 0x9d, 0xaa, 0xc1, 0x5a, 0xb9, - 0x1f, 0x2a, 0xdb, 0xfd, 0x3e, 0x40, 0xc1, 0x93, 0x5f, 0xd7, 0x7b, 0x38, 0x7f, 0x68, 0xc0, 0x8d, - 0xbd, 0x28, 0x0c, 0x05, 0xe5, 0x84, 0x4a, 0xc2, 0x85, 0x11, 0x19, 0x2f, 0x35, 0xa2, 0x4f, 0xa0, - 0x29, 0x91, 0x58, 0xef, 0xfe, 0xe6, 0x0a, 0x91, 0x31, 0x45, 0x81, 0x5e, 0x72, 0xc6, 0x17, 0xd3, - 0x58, 0x84, 0x9e, 0x1f, 0x9e, 0x67, 0x5e, 0x72, 0xc6, 0x17, 0xc7, 0x0a, 0xe3, 0xfc, 0xa3, 0x01, - 0xf0, 0x95, 0xe0, 0x41, 0x7a, 0x81, 0xde, 0x1e, 0xe5, 0xe6, 0x87, 0x32, 0xe5, 0xa1, 0x9b, 0x65, - 0xe4, 0x39, 0x8c, 0xca, 0x87, 0xb1, 0x48, 0x48, 0xe5, 0x84, 0x2c, 0x96, 0x81, 0x18, 0x9d, 0xf0, - 0xb8, 0xb9, 0xd4, 0x31, 0x4b, 0x43, 0x45, 0x28, 0x6d, 0x10, 0x5a, 0x87, 0xd2, 0x01, 0xb4, 0x31, - 0xc3, 0xf5, 0xa3, 0x90, 0x54, 0xc3, 0x62, 0x19, 0x88, 0xfb, 0xcc, 0xe3, 0xd4, 0x9f, 0xa9, 0x78, - 0x55, 0x67, 0x1a, 0xc2, 0x5b, 0x61, 0xe4, 0x1a, 0xba, 0x17, 0x11, 0x19, 0x6f, 0x9d, 0xe5, 0xb0, - 0xf3, 0x0f, 0x06, 0xb4, 0x94, 0x03, 0xa9, 0xc4, 0x54, 0xa3, 0x1a, 0x53, 0xdf, 0x05, 0x2b, 0x4e, - 0x84, 0xe7, 0xbb, 0x19, 0xdb, 0x2c, 0x56, 0x20, 0x28, 0x6b, 0xc5, 0x48, 0x46, 0xd7, 0x37, 0x99, - 0x02, 0x10, 0x2b, 0x63, 0xee, 0x0a, 0x7d, 0xa4, 0x02, 0xf0, 0x8e, 0x4a, 0x09, 0x49, 0xf9, 0x4c, - 0xa6, 0x21, 0xac, 0x28, 0x28, 0x4b, 0xa1, 0x38, 0x6a, 0xd1, 0x94, 0x89, 0x08, 0x0a, 0xa0, 0x6f, - 0x41, 0x1b, 0x89, 0xd0, 0xb3, 0x82, 0x4a, 0x61, 0x10, 0x9c, 0x48, 0xe7, 0xaf, 0x6b, 0xd0, 0xdd, - 0xf7, 0x13, 0xe1, 0xa6, 0xc2, 0x1b, 0x7a, 0xe7, 0xb4, 0xbd, 0x08, 0x53, 0x3f, 0xbd, 0xd6, 0xb9, - 0x82, 0x86, 0xf2, 0x54, 0xae, 0x56, 0x2d, 0x6d, 0x94, 0x96, 0xd5, 0xa9, 0x1a, 0x53, 0x80, 0xbd, - 0x03, 0xa0, 0x92, 0x5c, 0xaa, 0xc8, 0x1a, 0x2f, 0xaf, 0xc8, 0x2c, 0x22, 0xc3, 0x21, 0x72, 0x4e, - 0xad, 0xf1, 0x55, 0x1e, 0xd1, 0xa2, 0x72, 0x6d, 0x8e, 0x96, 0x4c, 0xb9, 0xe1, 0xa9, 0x08, 0x48, - 0x24, 0x94, 0x1b, 0x9e, 0x8a, 0x20, 0xcf, 0xc8, 0xdb, 0xea, 0x3a, 0x38, 0xb6, 0xdf, 0x87, 0x5a, - 0x14, 0x13, 0x57, 0xf4, 0x81, 0xe5, 0x87, 0x6d, 0x1f, 0xc5, 0xac, 0x16, 0xc5, 0xa8, 0xdf, 0xaa, - 0xfc, 0x18, 0x58, 0xda, 0xba, 0xd1, 0x0b, 0x53, 0x32, 0xcc, 0xf4, 0x8c, 0x73, 0x0b, 0x6a, 0x47, - 0xb1, 0xdd, 0x86, 0xfa, 0x78, 0x38, 0xe9, 0xaf, 0xe1, 0x60, 0x7f, 0x78, 0xd8, 0x37, 0x9c, 0xef, - 0x6b, 0x60, 0x3d, 0x9b, 0xa7, 0x1c, 0xad, 0x45, 0xbe, 0x4a, 0xda, 0x6f, 0x83, 0x29, 0x53, 0x9e, - 0x50, 0x24, 0x53, 0x7e, 0xb5, 0x4d, 0xf0, 0x44, 0xda, 0x1f, 0x41, 0x53, 0x78, 0xe7, 0x22, 0x73, - 0x77, 0xfd, 0xe5, 0x7b, 0x32, 0x35, 0x6d, 0x6f, 0x41, 0x4b, 0xba, 0x17, 0x62, 0xc6, 0x07, 0x8d, - 0x82, 0x70, 0x4c, 0x18, 0x95, 0x40, 0x31, 0x3d, 0x6f, 0x7f, 0x00, 0x4d, 0xe4, 0xb4, 0xd4, 0xa9, - 0x3a, 0x25, 0xf7, 0xc8, 0x54, 0x4d, 0xa6, 0x26, 0xed, 0xfb, 0xd0, 0xf6, 0x92, 0x28, 0x9e, 0x46, - 0x31, 0xf1, 0x6c, 0x7d, 0xe7, 0x26, 0x59, 0x6d, 0xf6, 0x9a, 0xed, 0xfd, 0x24, 0x8a, 0x8f, 0x62, - 0xd6, 0xf2, 0xe8, 0x17, 0xab, 0x32, 0x22, 0x57, 0xf2, 0x55, 0x6e, 0xce, 0x42, 0x8c, 0xaa, 0xc2, - 0xb7, 0xc0, 0x9c, 0x89, 0x94, 0x7b, 0x3c, 0xe5, 0xda, 0xdb, 0x75, 0x95, 0x13, 0x50, 0x38, 0x96, - 0xcf, 0x3a, 0x0f, 0xa0, 0xa5, 0xb6, 0xb6, 0x4d, 0x68, 0x8c, 0x8e, 0x46, 0x43, 0xc5, 0xd0, 0xdd, - 0xc3, 0xc3, 0xbe, 0x81, 0xa8, 0xfd, 0xdd, 0xc9, 0x6e, 0xbf, 0x86, 0xa3, 0xc9, 0xcf, 0x8f, 0x87, - 0xfd, 0xba, 0xf3, 0xaf, 0x06, 0x98, 0xd9, 0x3e, 0xf6, 0x97, 0x00, 0x68, 0x25, 0xd3, 0x0b, 0x3f, - 0xcc, 0x93, 0x82, 0x77, 0xca, 0x27, 0x6d, 0x1f, 0x27, 0xc2, 0xfb, 0x0a, 0x67, 0x55, 0x78, 0x20, - 0xa3, 0x22, 0x78, 0x63, 0x0c, 0xeb, 0xd5, 0xc9, 0x15, 0xd9, 0xd1, 0xbd, 0xb2, 0x9f, 0x5c, 0xdf, - 0xf9, 0x51, 0x65, 0x6b, 0x5c, 0x49, 0x8a, 0x5a, 0x72, 0x99, 0xf7, 0xc1, 0xcc, 0xd0, 0x76, 0x07, - 0xda, 0xfb, 0xc3, 0xc7, 0xbb, 0x27, 0x87, 0xa8, 0x24, 0x00, 0xad, 0xf1, 0xc1, 0xe8, 0xc9, 0xe1, - 0x50, 0x3d, 0xeb, 0xf0, 0x60, 0x3c, 0xe9, 0xd7, 0x9c, 0x3f, 0x37, 0xc0, 0xcc, 0x62, 0xb0, 0xfd, - 0x09, 0x06, 0x4f, 0x0a, 0xf5, 0xda, 0xb7, 0x52, 0x31, 0x5d, 0x2a, 0x05, 0x58, 0x36, 0x8f, 0x4a, - 0xef, 0x87, 0x9e, 0x58, 0x64, 0x51, 0x99, 0x80, 0x72, 0x21, 0x52, 0xaf, 0xd4, 0xc2, 0x58, 0x53, - 0x45, 0xa1, 0xd0, 0x49, 0x16, 0x8d, 0x49, 0x07, 0xfd, 0xd0, 0x25, 0x9b, 0x6f, 0x6a, 0x1d, 0x44, - 0x78, 0x22, 0x9d, 0x7f, 0xa9, 0x81, 0x99, 0x27, 0x5e, 0xf7, 0xc0, 0x9a, 0x65, 0x5a, 0xa0, 0x1d, - 0x7a, 0xaf, 0xa2, 0x1a, 0xac, 0x98, 0xb7, 0x6f, 0x41, 0xed, 0xf2, 0x4a, 0x6b, 0x64, 0x0b, 0xa9, - 0x9e, 0x3e, 0x67, 0xb5, 0xcb, 0xab, 0x22, 0x22, 0x34, 0x5f, 0x1b, 0x11, 0x3e, 0x86, 0x1b, 0x6e, - 0x20, 0x78, 0x38, 0x2d, 0xfc, 0xa1, 0xb2, 0xec, 0x75, 0x42, 0x1f, 0xe7, 0x4e, 0x51, 0x4b, 0xab, - 0x5d, 0x48, 0xeb, 0x43, 0x68, 0x7a, 0x22, 0x48, 0x79, 0xb9, 0x17, 0x71, 0x94, 0x70, 0x37, 0x10, - 0xfb, 0x88, 0x66, 0x6a, 0x16, 0x95, 0x33, 0xcb, 0x0a, 0xcb, 0xca, 0x99, 0xc9, 0x81, 0xe5, 0xb3, - 0x05, 0x9b, 0xa1, 0xcc, 0xe6, 0x7b, 0xf0, 0x86, 0x58, 0xc4, 0x64, 0x91, 0xd3, 0x3c, 0x83, 0xef, - 0x10, 0x45, 0x3f, 0x9b, 0xd8, 0xd3, 0x78, 0xe7, 0x53, 0xa8, 0x3f, 0x7d, 0x3e, 0xd6, 0x8c, 0x31, + 0x7a, 0x24, 0xa4, 0xe4, 0x17, 0xc2, 0xbe, 0x07, 0xcd, 0x08, 0xb7, 0xd5, 0x1c, 0xb6, 0xf0, 0x4e, + 0x74, 0x0e, 0x53, 0xf8, 0x25, 0x39, 0xd4, 0x5e, 0x2e, 0x07, 0xd4, 0x1d, 0xb2, 0xae, 0xba, 0xd6, + 0x1d, 0xb2, 0xad, 0x3b, 0xd0, 0x8a, 0xce, 0xcf, 0xa5, 0x50, 0xbc, 0x6c, 0x32, 0x0d, 0xbd, 0x54, + 0x05, 0x9d, 0xdf, 0x02, 0xc0, 0xfb, 0xfd, 0x40, 0x2d, 0x70, 0x2e, 0xa1, 0xc3, 0xf8, 0x79, 0xba, + 0x17, 0x85, 0xa9, 0x58, 0xa4, 0xf6, 0x3a, 0xd4, 0x7c, 0x8f, 0x58, 0xd4, 0x62, 0x35, 0xdf, 0xc3, + 0xcb, 0x5d, 0x24, 0xd1, 0x3c, 0x26, 0x0e, 0xf5, 0x98, 0x02, 0x88, 0x95, 0x9e, 0x97, 0xd0, 0x8d, + 0x91, 0x95, 0x9e, 0x97, 0xd8, 0xf7, 0xa0, 0x23, 0x43, 0x1e, 0xcb, 0xcb, 0x28, 0xc5, 0xcb, 0x35, + 0xe8, 0x72, 0x90, 0xa1, 0x26, 0xd2, 0xf9, 0x1f, 0x03, 0x5a, 0x47, 0x62, 0x76, 0x26, 0x92, 0x17, + 0x4e, 0x79, 0x13, 0x4c, 0xda, 0x78, 0xea, 0x7b, 0xfa, 0xa0, 0x36, 0xc1, 0x07, 0xde, 0xca, 0xa3, + 0xee, 0x40, 0x2b, 0x10, 0x1c, 0x99, 0xaf, 0xf4, 0x4c, 0x43, 0xc8, 0x1b, 0x3e, 0x9b, 0x7a, 0x82, + 0x7b, 0xe4, 0x8e, 0x4c, 0xd6, 0xe2, 0xb3, 0x7d, 0xc1, 0x3d, 0xbc, 0x5b, 0xc0, 0x65, 0x3a, 0x9d, + 0xc7, 0x1e, 0x4f, 0x05, 0xb9, 0xa1, 0x06, 0x2a, 0x8e, 0x4c, 0x4f, 0x09, 0x63, 0x7f, 0x04, 0xaf, + 0xb9, 0xc1, 0x5c, 0xa2, 0x0f, 0xf4, 0xc3, 0xf3, 0x68, 0x1a, 0x85, 0xc1, 0x0d, 0xf1, 0xd7, 0x64, + 0xb7, 0xf4, 0xc4, 0x41, 0x78, 0x1e, 0x1d, 0x87, 0xc1, 0x8d, 0xfd, 0x1e, 0xac, 0x9f, 0x47, 0x89, + 0x2b, 0xa6, 0xf9, 0x95, 0xd7, 0x89, 0xb0, 0x4b, 0xd8, 0xa7, 0xea, 0xde, 0xce, 0xdf, 0xd5, 0xa0, + 0x49, 0x63, 0xfb, 0x11, 0xb4, 0x67, 0xf4, 0xec, 0xcc, 0xc6, 0xef, 0xa0, 0x1c, 0x68, 0x6e, 0x5b, + 0xf1, 0x43, 0x0e, 0xc3, 0x34, 0xb9, 0x61, 0x19, 0x19, 0xae, 0x48, 0xf9, 0x59, 0x20, 0x52, 0xa9, + 0xf5, 0xa6, 0xb4, 0x62, 0xa2, 0x26, 0xf4, 0x0a, 0x4d, 0xb6, 0xcc, 0xfc, 0xfa, 0x32, 0xf3, 0xed, + 0x0d, 0x30, 0xdd, 0x4b, 0xe1, 0x5e, 0xc9, 0xf9, 0x4c, 0x8b, 0x26, 0x87, 0x37, 0x9e, 0x40, 0xb7, + 0x7c, 0x0f, 0x8c, 0x6a, 0x57, 0xe2, 0x86, 0xc4, 0xd3, 0x60, 0x38, 0xb4, 0x37, 0xa1, 0x49, 0x7e, + 0x80, 0x84, 0xd3, 0xd9, 0x01, 0xbc, 0x8e, 0x5a, 0xc2, 0xd4, 0xc4, 0x17, 0xb5, 0x9f, 0x1a, 0xb8, + 0x4f, 0xf9, 0x76, 0xe5, 0x7d, 0xac, 0x97, 0xef, 0xa3, 0x96, 0x94, 0xf6, 0x71, 0x22, 0x68, 0x1f, + 0xfa, 0xae, 0x08, 0x25, 0xc5, 0xbe, 0xb9, 0x14, 0xb9, 0xcd, 0xe2, 0x18, 0x9f, 0x32, 0xe3, 0x8b, + 0x51, 0xe4, 0x09, 0x49, 0xfb, 0x34, 0x58, 0x0e, 0xe3, 0x9c, 0x58, 0xc4, 0x7e, 0x72, 0x33, 0x51, + 0x4c, 0xa8, 0xb3, 0x1c, 0xc6, 0xe0, 0x22, 0x42, 0x3c, 0xcc, 0xcb, 0xe2, 0x98, 0x06, 0x9d, 0xbf, + 0xaa, 0x43, 0xf7, 0x1b, 0x91, 0x44, 0x27, 0x49, 0x14, 0x47, 0x92, 0x07, 0xf6, 0x6e, 0x95, 0x9d, + 0x4a, 0x6c, 0x9b, 0x78, 0xdb, 0x32, 0xd9, 0xf6, 0x38, 0xe7, 0xaf, 0x12, 0x47, 0x99, 0xe1, 0x0e, + 0xb4, 0x94, 0x38, 0x57, 0xf0, 0x4c, 0xcf, 0x20, 0x8d, 0x12, 0x20, 0xdd, 0xb5, 0xca, 0x0f, 0x3d, + 0x63, 0xdf, 0x05, 0x98, 0xf1, 0xc5, 0xa1, 0xe0, 0x52, 0x1c, 0x78, 0x99, 0x55, 0x15, 0x18, 0xcd, + 0x8d, 0xc9, 0x22, 0x9c, 0x48, 0x52, 0x7a, 0xc5, 0x0d, 0x82, 0xed, 0xb7, 0xc1, 0x9a, 0xf1, 0x05, + 0x9a, 0xf7, 0x81, 0xa7, 0x95, 0xbe, 0x40, 0xd8, 0xef, 0x40, 0x3d, 0x5d, 0x84, 0xe4, 0x2b, 0x31, + 0x94, 0x62, 0x9e, 0x34, 0x59, 0x84, 0xda, 0x11, 0x30, 0x9c, 0xcb, 0x24, 0x68, 0x16, 0x12, 0xec, + 0x43, 0xdd, 0xf5, 0x3d, 0x8a, 0xa5, 0x16, 0xc3, 0xa1, 0x7d, 0x1f, 0xda, 0x81, 0x92, 0x16, 0xc5, + 0xcb, 0xce, 0x4e, 0x47, 0xb9, 0x19, 0x42, 0xb1, 0x6c, 0x6e, 0xe3, 0x77, 0xe0, 0xd6, 0x12, 0xbb, + 0xca, 0xfa, 0xd1, 0x53, 0xbb, 0xdf, 0x2e, 0xeb, 0x47, 0xa3, 0xac, 0x13, 0xff, 0x51, 0x87, 0x5b, + 0x5a, 0x49, 0x2f, 0xfd, 0x78, 0x9c, 0xa2, 0xd1, 0x0e, 0xa0, 0x4d, 0xbe, 0x52, 0xeb, 0x47, 0x83, + 0x65, 0xa0, 0xfd, 0xdb, 0xd0, 0x22, 0xe3, 0xcc, 0xec, 0xe7, 0x5e, 0xc1, 0xfc, 0x7c, 0xb9, 0xb2, + 0x27, 0x2d, 0x39, 0x4d, 0x6e, 0x7f, 0x06, 0xcd, 0x6f, 0x45, 0x12, 0x29, 0xdf, 0xdf, 0xd9, 0xb9, + 0xbb, 0x6a, 0x1d, 0xaa, 0x80, 0x5e, 0xa6, 0x88, 0x7f, 0x83, 0x32, 0x7a, 0x0f, 0xbd, 0xfd, 0x2c, + 0xba, 0x16, 0xde, 0xa0, 0x4d, 0x37, 0x2a, 0xab, 0x51, 0x36, 0x95, 0x09, 0xc5, 0x5c, 0x29, 0x14, + 0xeb, 0x15, 0x42, 0xd9, 0x87, 0x4e, 0x89, 0x0b, 0x2b, 0x04, 0x72, 0xaf, 0x6a, 0xb0, 0x56, 0xee, + 0x87, 0xca, 0x76, 0xbf, 0x0f, 0x50, 0xf0, 0xe4, 0xd7, 0xf5, 0x1e, 0xce, 0x1f, 0x1a, 0x70, 0x6b, + 0x2f, 0x0a, 0x43, 0x41, 0x39, 0xa1, 0x92, 0x70, 0x61, 0x44, 0xc6, 0x4b, 0x8d, 0xe8, 0x43, 0x68, + 0x4a, 0x24, 0xd6, 0xbb, 0xbf, 0xbe, 0x42, 0x64, 0x4c, 0x51, 0xa0, 0x97, 0x9c, 0xf1, 0xc5, 0x34, + 0x16, 0xa1, 0xe7, 0x87, 0x17, 0x99, 0x97, 0x9c, 0xf1, 0xc5, 0x89, 0xc2, 0x38, 0xff, 0x68, 0x00, + 0x7c, 0x29, 0x78, 0x90, 0x5e, 0xa2, 0xb7, 0x47, 0xb9, 0xf9, 0xa1, 0x4c, 0x79, 0xe8, 0x66, 0x19, + 0x79, 0x0e, 0xa3, 0xf2, 0x61, 0x2c, 0x12, 0x52, 0x39, 0x21, 0x8b, 0x65, 0x20, 0x46, 0x27, 0x3c, + 0x6e, 0x2e, 0x75, 0xcc, 0xd2, 0x50, 0x11, 0x4a, 0x1b, 0x84, 0xd6, 0xa1, 0x74, 0x00, 0x6d, 0xcc, + 0x70, 0xfd, 0x28, 0x24, 0xd5, 0xb0, 0x58, 0x06, 0xe2, 0x3e, 0xf3, 0x38, 0xf5, 0x67, 0x2a, 0x5e, + 0xd5, 0x99, 0x86, 0xf0, 0x56, 0x18, 0xb9, 0x86, 0xee, 0x65, 0x44, 0xc6, 0x5b, 0x67, 0x39, 0xec, + 0xfc, 0x83, 0x01, 0x2d, 0xe5, 0x40, 0x2a, 0x31, 0xd5, 0xa8, 0xc6, 0xd4, 0xb7, 0xc1, 0x8a, 0x13, + 0xe1, 0xf9, 0x6e, 0xc6, 0x36, 0x8b, 0x15, 0x08, 0xca, 0x5a, 0x31, 0x92, 0xd1, 0xf5, 0x4d, 0xa6, + 0x00, 0xc4, 0xca, 0x98, 0xbb, 0x42, 0x1f, 0xa9, 0x00, 0xbc, 0xa3, 0x52, 0x42, 0x52, 0x3e, 0x93, + 0x69, 0x08, 0x2b, 0x0a, 0xca, 0x52, 0x28, 0x8e, 0x5a, 0x34, 0x65, 0x22, 0x82, 0x02, 0xe8, 0x1b, + 0xd0, 0x46, 0x22, 0xf4, 0xac, 0xa0, 0x52, 0x18, 0x04, 0x27, 0xd2, 0xf9, 0xeb, 0x1a, 0x74, 0xf7, + 0xfd, 0x44, 0xb8, 0xa9, 0xf0, 0x86, 0xde, 0x05, 0x6d, 0x2f, 0xc2, 0xd4, 0x4f, 0x6f, 0x74, 0xae, + 0xa0, 0xa1, 0x3c, 0x95, 0xab, 0x55, 0x4b, 0x1b, 0xa5, 0x65, 0x75, 0xaa, 0xc6, 0x14, 0x60, 0xef, + 0x00, 0xa8, 0x24, 0x97, 0x2a, 0xb2, 0xc6, 0xcb, 0x2b, 0x32, 0x8b, 0xc8, 0x70, 0x88, 0x9c, 0x53, + 0x6b, 0x7c, 0x95, 0x47, 0xb4, 0xa8, 0x5c, 0x9b, 0xa3, 0x25, 0x53, 0x6e, 0x78, 0x26, 0x02, 0x12, + 0x09, 0xe5, 0x86, 0x67, 0x22, 0xc8, 0x33, 0xf2, 0xb6, 0xba, 0x0e, 0x8e, 0xed, 0x77, 0xa1, 0x16, + 0xc5, 0xc4, 0x15, 0x7d, 0x60, 0xf9, 0x61, 0xdb, 0xc7, 0x31, 0xab, 0x45, 0x31, 0xea, 0xb7, 0x2a, + 0x3f, 0x06, 0x96, 0xb6, 0x6e, 0xf4, 0xc2, 0x94, 0x0c, 0x33, 0x3d, 0xe3, 0xdc, 0x81, 0xda, 0x71, + 0x6c, 0xb7, 0xa1, 0x3e, 0x1e, 0x4e, 0xfa, 0x6b, 0x38, 0xd8, 0x1f, 0x1e, 0xf6, 0x0d, 0xe7, 0xbb, + 0x1a, 0x58, 0x47, 0xf3, 0x94, 0xa3, 0xb5, 0xc8, 0x57, 0x49, 0xfb, 0x4d, 0x30, 0x65, 0xca, 0x13, + 0x8a, 0x64, 0xca, 0xaf, 0xb6, 0x09, 0x9e, 0x48, 0xfb, 0x7d, 0x68, 0x0a, 0xef, 0x42, 0x64, 0xee, + 0xae, 0xbf, 0x7c, 0x4f, 0xa6, 0xa6, 0xed, 0x2d, 0x68, 0x49, 0xf7, 0x52, 0xcc, 0xf8, 0xa0, 0x51, + 0x10, 0x8e, 0x09, 0xa3, 0x12, 0x28, 0xa6, 0xe7, 0xed, 0xf7, 0xa0, 0x89, 0x9c, 0x96, 0x3a, 0x55, + 0xa7, 0xe4, 0x1e, 0x99, 0xaa, 0xc9, 0xd4, 0xa4, 0xfd, 0x00, 0xda, 0x5e, 0x12, 0xc5, 0xd3, 0x28, + 0x26, 0x9e, 0xad, 0xef, 0xdc, 0x26, 0xab, 0xcd, 0x5e, 0xb3, 0xbd, 0x9f, 0x44, 0xf1, 0x71, 0xcc, + 0x5a, 0x1e, 0xfd, 0x62, 0x55, 0x46, 0xe4, 0x4a, 0xbe, 0xca, 0xcd, 0x59, 0x88, 0x51, 0x55, 0xf8, + 0x16, 0x98, 0x33, 0x91, 0x72, 0x8f, 0xa7, 0x5c, 0x7b, 0xbb, 0xae, 0x72, 0x02, 0x0a, 0xc7, 0xf2, + 0x59, 0xe7, 0x21, 0xb4, 0xd4, 0xd6, 0xb6, 0x09, 0x8d, 0xd1, 0xf1, 0x68, 0xa8, 0x18, 0xba, 0x7b, + 0x78, 0xd8, 0x37, 0x10, 0xb5, 0xbf, 0x3b, 0xd9, 0xed, 0xd7, 0x70, 0x34, 0xf9, 0xf9, 0xc9, 0xb0, + 0x5f, 0x77, 0xfe, 0xd5, 0x00, 0x33, 0xdb, 0xc7, 0xfe, 0x02, 0x00, 0xad, 0x64, 0x7a, 0xe9, 0x87, + 0x79, 0x52, 0xf0, 0x56, 0xf9, 0xa4, 0xed, 0x93, 0x44, 0x78, 0x5f, 0xe2, 0xac, 0x0a, 0x0f, 0x64, + 0x54, 0x04, 0x6f, 0x8c, 0x61, 0xbd, 0x3a, 0xb9, 0x22, 0x3b, 0xfa, 0xb8, 0xec, 0x27, 0xd7, 0x77, + 0x7e, 0x54, 0xd9, 0x1a, 0x57, 0x92, 0xa2, 0x96, 0x5c, 0xe6, 0x03, 0x30, 0x33, 0xb4, 0xdd, 0x81, + 0xf6, 0xfe, 0xf0, 0xc9, 0xee, 0xe9, 0x21, 0x2a, 0x09, 0x40, 0x6b, 0x7c, 0x30, 0x7a, 0x7a, 0x38, + 0x54, 0xcf, 0x3a, 0x3c, 0x18, 0x4f, 0xfa, 0x35, 0xe7, 0xcf, 0x0d, 0x30, 0xb3, 0x18, 0x6c, 0x7f, + 0x88, 0xc1, 0x93, 0x42, 0xbd, 0xf6, 0xad, 0x54, 0x4c, 0x97, 0x4a, 0x01, 0x96, 0xcd, 0xa3, 0xd2, + 0xfb, 0xa1, 0x27, 0x16, 0x59, 0x54, 0x26, 0xa0, 0x5c, 0x88, 0xd4, 0x2b, 0xb5, 0x30, 0xd6, 0x54, + 0x51, 0x28, 0x74, 0x92, 0x45, 0x63, 0xd2, 0x41, 0x3f, 0x74, 0xc9, 0xe6, 0x9b, 0x5a, 0x07, 0x11, + 0x9e, 0x48, 0xe7, 0x5f, 0x6a, 0x60, 0xe6, 0x89, 0xd7, 0xc7, 0x60, 0xcd, 0x32, 0x2d, 0xd0, 0x0e, + 0xbd, 0x57, 0x51, 0x0d, 0x56, 0xcc, 0xdb, 0x77, 0xa0, 0x76, 0x75, 0xad, 0x35, 0xb2, 0x85, 0x54, + 0xcf, 0x9e, 0xb3, 0xda, 0xd5, 0x75, 0x11, 0x11, 0x9a, 0xdf, 0x1b, 0x11, 0x3e, 0x80, 0x5b, 0x6e, + 0x20, 0x78, 0x38, 0x2d, 0xfc, 0xa1, 0xb2, 0xec, 0x75, 0x42, 0x9f, 0xe4, 0x4e, 0x51, 0x4b, 0xab, + 0x5d, 0x48, 0xeb, 0x3e, 0x34, 0x3d, 0x11, 0xa4, 0xbc, 0xdc, 0x8b, 0x38, 0x4e, 0xb8, 0x1b, 0x88, + 0x7d, 0x44, 0x33, 0x35, 0x8b, 0xca, 0x99, 0x65, 0x85, 0x65, 0xe5, 0xcc, 0xe4, 0xc0, 0xf2, 0xd9, + 0x82, 0xcd, 0x50, 0x66, 0xf3, 0xc7, 0xf0, 0x9a, 0x58, 0xc4, 0x64, 0x91, 0xd3, 0x3c, 0x83, 0xef, + 0x10, 0x45, 0x3f, 0x9b, 0xd8, 0xd3, 0x78, 0xe7, 0x13, 0xa8, 0x3f, 0x7b, 0x3e, 0xd6, 0x8c, 0x31, 0x5e, 0x60, 0x4c, 0x26, 0x99, 0x5a, 0x21, 0x19, 0xe7, 0xff, 0xea, 0xd0, 0xd6, 0xbe, 0x10, 0x1f, - 0x39, 0xcf, 0xeb, 0x32, 0x1c, 0x56, 0x13, 0xb2, 0xdc, 0xa9, 0x96, 0x9b, 0x5c, 0xf5, 0xd7, 0x37, - 0xb9, 0xec, 0x2f, 0xa1, 0x1b, 0xab, 0xb9, 0xb2, 0x1b, 0x7e, 0xab, 0xbc, 0x46, 0xff, 0xd2, 0xba, - 0x4e, 0x5c, 0x00, 0xa8, 0x39, 0xd4, 0x01, 0x48, 0xf9, 0x39, 0xc9, 0xb3, 0xcb, 0xda, 0x08, 0x4f, - 0xf8, 0xf9, 0x4b, 0x9c, 0xf1, 0xaf, 0xe0, 0x53, 0xb1, 0xfe, 0x8c, 0xe2, 0x41, 0x97, 0xfc, 0x24, - 0xfa, 0xe1, 0xb2, 0x8b, 0xec, 0x55, 0x5d, 0xe4, 0x3b, 0x60, 0xb9, 0xd1, 0x6c, 0xe6, 0xd3, 0xdc, - 0xba, 0xae, 0x9c, 0x08, 0x31, 0x91, 0xce, 0x9f, 0x18, 0xd0, 0xd6, 0xaf, 0x7d, 0xc1, 0x00, 0x1f, - 0x1d, 0x8c, 0x76, 0xd9, 0xcf, 0xfb, 0x06, 0x3a, 0x98, 0x83, 0xd1, 0xa4, 0x5f, 0xb3, 0x2d, 0x68, - 0x3e, 0x3e, 0x3c, 0xda, 0x9d, 0xf4, 0xeb, 0x68, 0x94, 0x8f, 0x8e, 0x8e, 0x0e, 0xfb, 0x0d, 0xbb, - 0x0b, 0xe6, 0xfe, 0xee, 0x64, 0x38, 0x39, 0x78, 0x36, 0xec, 0x37, 0x91, 0xf6, 0xc9, 0xf0, 0xa8, - 0xdf, 0xc2, 0xc1, 0xc9, 0xc1, 0x7e, 0xbf, 0x8d, 0xf3, 0xc7, 0xbb, 0xe3, 0xf1, 0x37, 0x47, 0x6c, - 0xbf, 0x6f, 0x92, 0x61, 0x4f, 0xd8, 0xc1, 0xe8, 0x49, 0xdf, 0xc2, 0xf1, 0xd1, 0xa3, 0xaf, 0x87, - 0x7b, 0x93, 0x3e, 0x38, 0x9f, 0x42, 0xa7, 0xc4, 0x41, 0x5c, 0xcd, 0x86, 0x8f, 0xfb, 0x6b, 0x78, - 0xe4, 0xf3, 0xdd, 0xc3, 0x13, 0xf4, 0x03, 0xeb, 0x00, 0x34, 0x9c, 0x1e, 0xee, 0x8e, 0x9e, 0xf4, - 0x6b, 0xce, 0xcf, 0xc0, 0x3c, 0xf1, 0xbd, 0x47, 0x41, 0xe4, 0x5e, 0xa2, 0x62, 0x9c, 0x72, 0x29, + 0x39, 0xcf, 0xeb, 0x32, 0x1c, 0x56, 0x13, 0xb2, 0xdc, 0xa9, 0x96, 0x9b, 0x5c, 0xf5, 0xef, 0x6f, + 0x72, 0xd9, 0x5f, 0x40, 0x37, 0x56, 0x73, 0x65, 0x37, 0xfc, 0x46, 0x79, 0x8d, 0xfe, 0xa5, 0x75, + 0x9d, 0xb8, 0x00, 0x50, 0x73, 0xa8, 0x03, 0x90, 0xf2, 0x0b, 0x92, 0x67, 0x97, 0xb5, 0x11, 0x9e, + 0xf0, 0x8b, 0x97, 0x38, 0xe3, 0x5f, 0xc1, 0xa7, 0x62, 0xfd, 0x19, 0xc5, 0x83, 0x2e, 0xf9, 0x49, + 0xf4, 0xc3, 0x65, 0x17, 0xd9, 0xab, 0xba, 0xc8, 0xb7, 0xc0, 0x72, 0xa3, 0xd9, 0xcc, 0xa7, 0xb9, + 0x75, 0x5d, 0x39, 0x11, 0x62, 0x22, 0x9d, 0x3f, 0x31, 0xa0, 0xad, 0x5f, 0xfb, 0x82, 0x01, 0x3e, + 0x3e, 0x18, 0xed, 0xb2, 0x9f, 0xf7, 0x0d, 0x74, 0x30, 0x07, 0xa3, 0x49, 0xbf, 0x66, 0x5b, 0xd0, + 0x7c, 0x72, 0x78, 0xbc, 0x3b, 0xe9, 0xd7, 0xd1, 0x28, 0x1f, 0x1f, 0x1f, 0x1f, 0xf6, 0x1b, 0x76, + 0x17, 0xcc, 0xfd, 0xdd, 0xc9, 0x70, 0x72, 0x70, 0x34, 0xec, 0x37, 0x91, 0xf6, 0xe9, 0xf0, 0xb8, + 0xdf, 0xc2, 0xc1, 0xe9, 0xc1, 0x7e, 0xbf, 0x8d, 0xf3, 0x27, 0xbb, 0xe3, 0xf1, 0xd7, 0xc7, 0x6c, + 0xbf, 0x6f, 0x92, 0x61, 0x4f, 0xd8, 0xc1, 0xe8, 0x69, 0xdf, 0xc2, 0xf1, 0xf1, 0xe3, 0xaf, 0x86, + 0x7b, 0x93, 0x3e, 0x38, 0x9f, 0x40, 0xa7, 0xc4, 0x41, 0x5c, 0xcd, 0x86, 0x4f, 0xfa, 0x6b, 0x78, + 0xe4, 0xf3, 0xdd, 0xc3, 0x53, 0xf4, 0x03, 0xeb, 0x00, 0x34, 0x9c, 0x1e, 0xee, 0x8e, 0x9e, 0xf6, + 0x6b, 0xce, 0xcf, 0xc0, 0x3c, 0xf5, 0xbd, 0xc7, 0x41, 0xe4, 0x5e, 0xa1, 0x62, 0x9c, 0x71, 0x29, 0x74, 0xd2, 0x46, 0x63, 0x8c, 0xbd, 0xa4, 0xc1, 0x52, 0xcb, 0x5e, 0x43, 0xc8, 0xab, 0x70, 0x3e, - 0x9b, 0x52, 0x63, 0xb4, 0xae, 0x22, 0x4d, 0x38, 0x9f, 0x9d, 0xf8, 0x9e, 0x74, 0x46, 0xd0, 0x3e, - 0xf1, 0xbd, 0x63, 0xee, 0x5e, 0xa2, 0xcb, 0x3e, 0xc5, 0xad, 0xa7, 0xd2, 0xff, 0x4e, 0xe8, 0x88, - 0x64, 0x11, 0x66, 0xec, 0x7f, 0x27, 0xec, 0x0f, 0xa0, 0x45, 0x40, 0x96, 0xa0, 0x93, 0x4d, 0x64, - 0xd7, 0x61, 0x7a, 0xce, 0xf9, 0x53, 0x23, 0x7f, 0x16, 0x75, 0xbe, 0xee, 0x40, 0x23, 0xe6, 0xee, - 0xa5, 0x76, 0x58, 0x1d, 0xbd, 0x06, 0xcf, 0x63, 0x34, 0x61, 0x7f, 0x0c, 0xa6, 0xd6, 0x9d, 0x6c, + 0x9b, 0x52, 0x63, 0xb4, 0xae, 0x22, 0x4d, 0x38, 0x9f, 0x9d, 0xfa, 0x9e, 0x74, 0x46, 0xd0, 0x3e, + 0xf5, 0xbd, 0x13, 0xee, 0x5e, 0xa1, 0xcb, 0x3e, 0xc3, 0xad, 0xa7, 0xd2, 0xff, 0x56, 0xe8, 0x88, + 0x64, 0x11, 0x66, 0xec, 0x7f, 0x2b, 0xec, 0xf7, 0xa0, 0x45, 0x40, 0x96, 0xa0, 0x93, 0x4d, 0x64, + 0xd7, 0x61, 0x7a, 0xce, 0xf9, 0x53, 0x23, 0x7f, 0x16, 0x75, 0xbe, 0xee, 0x41, 0x23, 0xe6, 0xee, + 0x95, 0x76, 0x58, 0x1d, 0xbd, 0x06, 0xcf, 0x63, 0x34, 0x61, 0x7f, 0x00, 0xa6, 0xd6, 0x9d, 0x6c, 0xe3, 0x4e, 0x49, 0xc9, 0x58, 0x3e, 0x59, 0x95, 0x6a, 0xbd, 0x2a, 0x55, 0x4a, 0xe0, 0xe2, 0xc0, - 0xa7, 0x26, 0x46, 0x1d, 0x1d, 0x9b, 0x82, 0x9c, 0xcf, 0x01, 0x8a, 0x66, 0xe3, 0x0a, 0xff, 0x7d, - 0x13, 0x9a, 0x3c, 0xf0, 0x79, 0x96, 0x10, 0x2a, 0xc0, 0x19, 0x41, 0xa7, 0xd4, 0xa2, 0x44, 0xf6, - 0xf1, 0x20, 0x98, 0x5e, 0x8a, 0x6b, 0x49, 0x6b, 0x4d, 0xd6, 0xe6, 0x41, 0xf0, 0x54, 0x5c, 0x4b, + 0xa7, 0x26, 0x46, 0x1d, 0x1d, 0x9b, 0x82, 0x9c, 0xcf, 0x00, 0x8a, 0x66, 0xe3, 0x0a, 0xff, 0x7d, + 0x1b, 0x9a, 0x3c, 0xf0, 0x79, 0x96, 0x10, 0x2a, 0xc0, 0x19, 0x41, 0xa7, 0xd4, 0xa2, 0x44, 0xf6, + 0xf1, 0x20, 0x98, 0x5e, 0x89, 0x1b, 0x49, 0x6b, 0x4d, 0xd6, 0xe6, 0x41, 0xf0, 0x4c, 0xdc, 0x48, 0x8c, 0x9d, 0xaa, 0xbb, 0x59, 0x5b, 0x6a, 0x8c, 0xd1, 0x52, 0xa6, 0x26, 0x9d, 0x9f, 0x40, 0x4b, - 0x75, 0xcb, 0x4a, 0x9a, 0x6e, 0xbc, 0x34, 0x7b, 0xf8, 0x42, 0xdf, 0x99, 0x7a, 0x6b, 0xf6, 0x3d, - 0xdd, 0x45, 0x95, 0xaa, 0x67, 0x6b, 0x14, 0x25, 0x85, 0x22, 0xd2, 0x0d, 0x54, 0x22, 0x76, 0xf6, - 0xc1, 0x7c, 0x65, 0x5f, 0x5a, 0x33, 0xa0, 0x56, 0x30, 0x60, 0x45, 0xa7, 0xda, 0xf9, 0x05, 0x40, - 0xd1, 0x6d, 0xd5, 0x86, 0xa7, 0x76, 0x41, 0xc3, 0xbb, 0x0b, 0xa6, 0x7b, 0xe1, 0x07, 0x5e, 0x22, - 0xc2, 0xca, 0xab, 0x8b, 0xfe, 0x6c, 0x3e, 0x6f, 0x6f, 0x42, 0x83, 0x9a, 0xc8, 0xf5, 0xc2, 0x8b, - 0xe6, 0x1d, 0x64, 0x9a, 0x71, 0x16, 0xd0, 0x53, 0x49, 0x09, 0x13, 0xbf, 0x3f, 0x17, 0xf2, 0x95, - 0x39, 0xf0, 0x6d, 0x15, 0xcc, 0xc9, 0xbb, 0x67, 0xed, 0xf0, 0x12, 0x06, 0x95, 0xe0, 0xcc, 0x17, - 0x81, 0x97, 0xbd, 0x46, 0x43, 0x28, 0x64, 0x95, 0xe0, 0x34, 0x54, 0x77, 0x90, 0x00, 0xe7, 0x8f, - 0x6a, 0x00, 0xea, 0xe8, 0x51, 0xe4, 0x89, 0x6a, 0x82, 0x6d, 0x2c, 0x27, 0xd8, 0x36, 0x34, 0xf2, - 0xef, 0x03, 0x16, 0xa3, 0x71, 0xe1, 0xfc, 0x75, 0xd2, 0xad, 0x9c, 0xff, 0xbb, 0x60, 0xa5, 0xd1, - 0xa5, 0x08, 0xfd, 0xef, 0xa8, 0xd7, 0x85, 0x07, 0x16, 0x88, 0x72, 0xb7, 0xbc, 0x59, 0xed, 0x96, - 0xe7, 0x2d, 0xc5, 0x96, 0xda, 0x4d, 0xb5, 0x14, 0x57, 0x74, 0x47, 0x55, 0x91, 0x21, 0x45, 0x92, - 0x66, 0x09, 0xbc, 0x82, 0xf2, 0x94, 0xd6, 0xd2, 0xb4, 0x98, 0xd2, 0xde, 0x81, 0x4e, 0x18, 0x4d, - 0xdd, 0x28, 0x3c, 0x0b, 0x7c, 0x37, 0xd5, 0xdd, 0x71, 0x08, 0xa3, 0x3d, 0x8d, 0x71, 0xbe, 0x84, - 0x6e, 0xc6, 0x7f, 0x6a, 0x42, 0xde, 0xcd, 0xd3, 0x46, 0xa3, 0x90, 0x6d, 0xc1, 0xa6, 0x47, 0xb5, - 0x81, 0x91, 0x25, 0x8e, 0xce, 0xff, 0xd6, 0xb3, 0xc5, 0xba, 0x25, 0xf7, 0x6a, 0x1e, 0x56, 0xf3, - 0xfa, 0xda, 0xaf, 0x94, 0xd7, 0xff, 0x14, 0x2c, 0x8f, 0x92, 0x5b, 0xff, 0x2a, 0x8b, 0x5b, 0x1b, - 0xcb, 0x89, 0xac, 0x4e, 0x7f, 0xfd, 0x2b, 0xc1, 0x0a, 0xe2, 0xd7, 0xc8, 0x21, 0xe7, 0x76, 0x73, - 0x15, 0xb7, 0x5b, 0xbf, 0x26, 0xb7, 0xdf, 0x83, 0x6e, 0x18, 0x85, 0xd3, 0x70, 0x1e, 0x04, 0x58, - 0xd0, 0x69, 0x76, 0x77, 0xc2, 0x28, 0x1c, 0x69, 0x94, 0x7d, 0x17, 0xde, 0x28, 0x93, 0x28, 0xa3, - 0xee, 0xa8, 0xae, 0x65, 0x89, 0x8e, 0x4c, 0x7f, 0x0b, 0xfa, 0xd1, 0xe9, 0x2f, 0x84, 0x9b, 0x12, - 0xc7, 0xa6, 0x64, 0xcd, 0x5d, 0x95, 0xea, 0x28, 0x3c, 0xb2, 0x68, 0x84, 0x76, 0xbd, 0x24, 0xe6, - 0xde, 0x0b, 0x62, 0xfe, 0x02, 0xac, 0x9c, 0x4b, 0xa5, 0x44, 0xda, 0x82, 0xe6, 0xc1, 0x68, 0x7f, - 0xf8, 0xbb, 0x7d, 0x03, 0x63, 0x21, 0x1b, 0x3e, 0x1f, 0xb2, 0xf1, 0xb0, 0x5f, 0xc3, 0x38, 0xb5, - 0x3f, 0x3c, 0x1c, 0x4e, 0x86, 0xfd, 0xfa, 0xd7, 0x0d, 0xb3, 0xdd, 0x37, 0xa9, 0x27, 0x17, 0xf8, - 0xae, 0x9f, 0x3a, 0x63, 0x80, 0xa2, 0x3a, 0x40, 0xaf, 0x5c, 0x5c, 0x4e, 0x17, 0xdc, 0x69, 0x76, - 0xad, 0xad, 0xdc, 0x20, 0x6b, 0x2f, 0xab, 0x41, 0xd4, 0xbc, 0x73, 0x02, 0xe6, 0x33, 0x1e, 0xbf, - 0x90, 0x65, 0x77, 0xf3, 0x0e, 0xd6, 0x5c, 0xb7, 0x99, 0x75, 0x92, 0xf3, 0x21, 0xb4, 0x75, 0x60, - 0xd0, 0xbe, 0xa5, 0x12, 0x34, 0xb2, 0x39, 0xe7, 0x6f, 0x0d, 0xb8, 0xf9, 0x2c, 0xba, 0x12, 0x79, - 0x52, 0x78, 0xcc, 0xaf, 0x83, 0x88, 0x7b, 0xaf, 0xd1, 0xd4, 0x1f, 0x03, 0xc8, 0x68, 0x4e, 0xfd, - 0xe2, 0xbc, 0xbb, 0x6d, 0x29, 0xcc, 0x13, 0xfd, 0x79, 0x4d, 0xc8, 0x94, 0x26, 0x75, 0x38, 0x45, - 0x18, 0xa7, 0x7e, 0x04, 0xad, 0x74, 0x11, 0x16, 0xcd, 0xf4, 0x66, 0x4a, 0x1d, 0xa3, 0x95, 0x19, - 0x61, 0xf3, 0x25, 0x19, 0xe1, 0x1e, 0x58, 0x93, 0x05, 0x75, 0x53, 0xe6, 0xb2, 0x92, 0xe6, 0x18, - 0xaf, 0x48, 0x73, 0x6a, 0x4b, 0x69, 0xce, 0x7f, 0x1b, 0xd0, 0x29, 0xa5, 0xb6, 0xf6, 0x7b, 0xd0, - 0x48, 0x17, 0x61, 0xf5, 0x93, 0x55, 0x76, 0x08, 0xa3, 0x29, 0xd4, 0xde, 0x19, 0x5f, 0x4c, 0xb9, - 0x94, 0xfe, 0x79, 0x28, 0x3c, 0xbd, 0x65, 0x67, 0xc6, 0x17, 0xbb, 0x1a, 0x65, 0x1f, 0xc2, 0x0d, - 0xe5, 0x9c, 0xb3, 0x47, 0x64, 0x65, 0xe8, 0xfb, 0x4b, 0xa9, 0xb4, 0xea, 0x38, 0x65, 0x4f, 0xd2, - 0xb5, 0xd5, 0xfa, 0x79, 0x05, 0xb9, 0xb1, 0x0b, 0x6f, 0xae, 0x20, 0xfb, 0x41, 0x3d, 0xc6, 0x3b, - 0xd0, 0x9b, 0x2c, 0xc2, 0x89, 0x3f, 0x13, 0x32, 0xe5, 0xb3, 0x98, 0xd2, 0x44, 0x1d, 0x5c, 0x1b, - 0xac, 0x96, 0x4a, 0xe7, 0x23, 0xe8, 0x1e, 0x0b, 0x91, 0x30, 0x21, 0xe3, 0x28, 0x54, 0x29, 0x92, - 0xee, 0xf4, 0xa8, 0x48, 0xae, 0x21, 0xe7, 0xf7, 0xc0, 0xc2, 0x42, 0xea, 0x11, 0x4f, 0xdd, 0x8b, - 0x1f, 0x52, 0x68, 0x7d, 0x04, 0xed, 0x58, 0xe9, 0x94, 0xae, 0x7d, 0xba, 0x14, 0xd1, 0xb5, 0x9e, - 0xb1, 0x6c, 0xd2, 0xf9, 0x14, 0xde, 0x1c, 0xcf, 0x4f, 0xa5, 0x9b, 0xf8, 0x31, 0x45, 0x3f, 0x1d, - 0xed, 0x36, 0xc0, 0x8c, 0x13, 0x71, 0xe6, 0x2f, 0xf4, 0xd7, 0xc4, 0x2e, 0xcb, 0x61, 0xe7, 0x73, - 0xb8, 0x59, 0x5d, 0xa2, 0x9f, 0xf0, 0x2e, 0xd4, 0x2f, 0xaf, 0x64, 0xb9, 0xbd, 0xf6, 0xf4, 0x39, - 0x7d, 0x22, 0x42, 0xb4, 0xc3, 0xa0, 0x3e, 0x9a, 0xcf, 0xca, 0x9f, 0xb9, 0x1b, 0xea, 0x33, 0x77, - 0xa5, 0xbf, 0x53, 0x5b, 0xea, 0xef, 0xbc, 0x0b, 0xd6, 0x59, 0x94, 0xfc, 0x01, 0x4f, 0x3c, 0xe1, - 0xe9, 0x78, 0x56, 0x20, 0x9c, 0x6f, 0xa1, 0x93, 0xa9, 0xc0, 0x81, 0x47, 0x5d, 0x79, 0xd2, 0xc1, - 0x03, 0xaf, 0xa2, 0x92, 0xaa, 0xd7, 0x22, 0x42, 0xef, 0x20, 0xd3, 0x1d, 0x05, 0x54, 0x4f, 0xd6, - 0xcd, 0xd4, 0xec, 0x64, 0xe7, 0x31, 0x74, 0xb3, 0xc2, 0x0a, 0x0b, 0x67, 0xd2, 0xea, 0xc0, 0x17, - 0x61, 0x49, 0xe3, 0x4d, 0x85, 0x98, 0xc8, 0x57, 0x7c, 0x74, 0x72, 0xb6, 0xa1, 0xa5, 0x4d, 0xc6, - 0x86, 0x86, 0x1b, 0x79, 0xca, 0xac, 0x9b, 0x8c, 0xc6, 0xc8, 0x8e, 0x99, 0x3c, 0xcf, 0x12, 0x9f, - 0x99, 0x3c, 0x77, 0xfe, 0xbe, 0x06, 0xbd, 0x47, 0xdc, 0xbd, 0x9c, 0xc7, 0x99, 0x2c, 0x4a, 0xd5, - 0xb1, 0x51, 0xa9, 0x8e, 0xcb, 0x95, 0x70, 0xad, 0x52, 0x09, 0x57, 0x2e, 0x54, 0xaf, 0x66, 0x2b, - 0x6f, 0x41, 0x7b, 0x1e, 0xfa, 0x8b, 0xcc, 0x17, 0x58, 0xac, 0x85, 0xe0, 0x44, 0xda, 0x9b, 0xd0, - 0x41, 0x77, 0xe1, 0x87, 0x54, 0x13, 0xeb, 0x16, 0x62, 0x19, 0x85, 0xfe, 0x87, 0xbb, 0xae, 0x90, - 0x12, 0x73, 0x4e, 0x5d, 0x2a, 0x59, 0x0a, 0xf3, 0x54, 0x5c, 0x93, 0x7b, 0x12, 0x6e, 0x22, 0xd2, - 0x69, 0x51, 0xdf, 0x5a, 0x0a, 0x83, 0xd3, 0xef, 0x43, 0x4f, 0x0a, 0x29, 0xfd, 0x28, 0x9c, 0x52, - 0xc0, 0xd3, 0xdd, 0x97, 0xae, 0x46, 0x4e, 0x10, 0x87, 0x02, 0xe7, 0x61, 0x14, 0x5e, 0xcf, 0xa2, - 0xb9, 0xd4, 0x31, 0xac, 0x40, 0x2c, 0x65, 0x5a, 0xb0, 0x9c, 0x69, 0x39, 0x29, 0xf4, 0x86, 0x8b, - 0x98, 0x3e, 0x5d, 0xbe, 0x36, 0x6b, 0x2b, 0xb1, 0xb5, 0x56, 0x61, 0x6b, 0x89, 0x41, 0x75, 0xdd, - 0x2d, 0x55, 0x0c, 0xc2, 0x3c, 0x2e, 0x4a, 0x66, 0x3c, 0xcd, 0x18, 0xa7, 0x20, 0xe7, 0xcf, 0x6a, - 0x60, 0x29, 0x91, 0xe1, 0x33, 0x3f, 0xd1, 0x29, 0x99, 0x51, 0x74, 0x5e, 0xf2, 0xc9, 0xed, 0xa7, - 0xe2, 0x9a, 0x52, 0x09, 0x95, 0xa9, 0xad, 0xea, 0x3d, 0xea, 0x98, 0xa2, 0x0a, 0x09, 0x8a, 0x29, - 0xef, 0x80, 0xa5, 0x5c, 0x2d, 0xe2, 0xf5, 0x07, 0x37, 0x42, 0x9c, 0xf8, 0xf4, 0x4d, 0x33, 0x15, - 0xc9, 0x4c, 0x4b, 0x8b, 0xc6, 0xd5, 0x94, 0xad, 0xa7, 0x93, 0x08, 0xe7, 0x02, 0xda, 0xfa, 0x74, - 0x8c, 0xa9, 0x27, 0xa3, 0xa7, 0xa3, 0xa3, 0x6f, 0x46, 0xfd, 0xb5, 0xbc, 0x57, 0x65, 0x14, 0x51, - 0xb7, 0x56, 0x8e, 0xba, 0x75, 0xc4, 0xef, 0x1d, 0x9d, 0x8c, 0x26, 0xfd, 0x86, 0xdd, 0x03, 0x8b, - 0x86, 0x53, 0x36, 0x7c, 0xde, 0x6f, 0x52, 0x0d, 0xb9, 0xf7, 0xd5, 0xf0, 0xd9, 0x6e, 0xbf, 0x95, - 0x77, 0xba, 0xda, 0xce, 0x1f, 0x1b, 0xf0, 0x86, 0x7a, 0x72, 0xb9, 0xe2, 0x2a, 0xff, 0x03, 0xa6, - 0xa1, 0xfe, 0x01, 0xf3, 0x9b, 0x2d, 0xb2, 0x76, 0xfe, 0xc9, 0x80, 0x06, 0x3a, 0x47, 0xfb, 0x3e, - 0x58, 0x5f, 0x09, 0x9e, 0xa4, 0xa7, 0x82, 0xa7, 0x76, 0xc5, 0x11, 0x6e, 0x50, 0x1e, 0x59, 0xf4, - 0xe9, 0x9d, 0xb5, 0x87, 0x86, 0xbd, 0xad, 0xbe, 0x63, 0x67, 0x9f, 0xe7, 0x7b, 0x99, 0x93, 0x25, - 0x27, 0xbc, 0x51, 0x59, 0xef, 0xac, 0x6d, 0x11, 0xfd, 0xd7, 0x91, 0x1f, 0xee, 0xa9, 0x8f, 0xbb, - 0xf6, 0xb2, 0x53, 0x5e, 0x5e, 0x61, 0xdf, 0x87, 0xd6, 0x81, 0x44, 0xef, 0xff, 0x22, 0x29, 0x65, - 0x22, 0xe5, 0xc0, 0xe0, 0xac, 0xed, 0xfc, 0x4d, 0x1d, 0x1a, 0xdf, 0x8a, 0x24, 0xb2, 0x7f, 0x02, - 0x6d, 0xfd, 0x55, 0xc3, 0x2e, 0x7d, 0xbd, 0xd8, 0xa0, 0x5c, 0x75, 0xe9, 0x73, 0x07, 0x9d, 0xd2, - 0x57, 0xc9, 0x4c, 0xd1, 0xaf, 0xb2, 0x8b, 0x8f, 0x2e, 0x2f, 0x5c, 0xea, 0x0b, 0xe8, 0x8f, 0xd3, - 0x44, 0xf0, 0x59, 0x89, 0xbc, 0xca, 0xaa, 0x55, 0xcd, 0x2f, 0xe2, 0xd7, 0x3d, 0x68, 0xa9, 0x10, - 0xbb, 0xb4, 0x60, 0xb9, 0x8f, 0x45, 0xc4, 0x1f, 0x43, 0x67, 0x7c, 0x11, 0xcd, 0x03, 0x6f, 0x2c, - 0x92, 0x2b, 0x61, 0x97, 0xbe, 0x53, 0x6e, 0x94, 0xc6, 0xce, 0x9a, 0xbd, 0x05, 0xa0, 0x9c, 0xfb, - 0x09, 0x6a, 0x4a, 0x1b, 0xe7, 0x46, 0xf3, 0x99, 0xda, 0xb4, 0xe4, 0xf5, 0x15, 0x65, 0x29, 0xd2, - 0xbe, 0x8a, 0xf2, 0x33, 0xe8, 0xed, 0x91, 0xd6, 0x1c, 0x25, 0xbb, 0xa7, 0x51, 0x92, 0xda, 0xcb, - 0xdf, 0x2a, 0x37, 0x96, 0x11, 0xce, 0x9a, 0xfd, 0x10, 0xcc, 0x49, 0x72, 0xad, 0xe8, 0xdf, 0xd0, - 0x09, 0x4a, 0x71, 0xde, 0x8a, 0x57, 0xee, 0xfc, 0x7b, 0x1d, 0x5a, 0xdf, 0x44, 0xc9, 0xa5, 0x48, - 0xb0, 0x6e, 0xa1, 0x86, 0xa3, 0x56, 0xa3, 0xbc, 0xf9, 0xb8, 0xea, 0xa0, 0x0f, 0xc0, 0x22, 0xa6, - 0x4c, 0xb8, 0xbc, 0x54, 0xa2, 0xa2, 0x7f, 0x5f, 0x29, 0xbe, 0xa8, 0x3a, 0x88, 0xe4, 0xba, 0xae, - 0x04, 0x95, 0xf7, 0x5f, 0x2b, 0x5d, 0xc0, 0x8d, 0xb6, 0x8a, 0xbc, 0x63, 0x54, 0xcd, 0x87, 0x06, - 0xba, 0xa3, 0xb1, 0x7a, 0x29, 0x12, 0x15, 0xff, 0x3a, 0x51, 0x9a, 0x5f, 0xfc, 0xcd, 0xc3, 0x59, - 0xb3, 0x1f, 0x40, 0x4b, 0x25, 0xc1, 0xea, 0x99, 0x95, 0xfa, 0x77, 0xa3, 0x5f, 0x46, 0xe9, 0x05, - 0x9f, 0x40, 0x4b, 0xd9, 0xb9, 0x5a, 0x50, 0x09, 0x5b, 0xea, 0xd6, 0x2a, 0xf4, 0x29, 0x52, 0xe5, - 0x99, 0x15, 0x69, 0xc5, 0x4b, 0x2f, 0x91, 0xde, 0x87, 0x3e, 0x13, 0xae, 0xf0, 0x4b, 0xe9, 0xb1, - 0x9d, 0x3d, 0x6a, 0x85, 0xf5, 0x7d, 0x01, 0xbd, 0x4a, 0x2a, 0x6d, 0x0f, 0x88, 0xd1, 0x2b, 0xb2, - 0xeb, 0x17, 0x74, 0xfe, 0x73, 0xb0, 0x74, 0x26, 0x73, 0x2a, 0x6c, 0xea, 0x21, 0xae, 0xc8, 0x85, - 0x36, 0x4a, 0xa9, 0x0c, 0x6a, 0xf0, 0xa3, 0xfe, 0x3f, 0x7f, 0x7f, 0xdb, 0xf8, 0xb7, 0xef, 0x6f, - 0x1b, 0xff, 0xf9, 0xfd, 0x6d, 0xe3, 0x97, 0xff, 0x75, 0x7b, 0xed, 0xb4, 0x45, 0xff, 0xf5, 0xfb, - 0xec, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xc1, 0xfa, 0x1e, 0x2f, 0x28, 0x00, 0x00, + 0x75, 0xcb, 0x4a, 0x9a, 0x6e, 0xbc, 0x34, 0x7b, 0xf8, 0x5c, 0xdf, 0x99, 0x7a, 0x6b, 0xf6, 0xc7, + 0xba, 0x8b, 0x2a, 0x55, 0xcf, 0xd6, 0x28, 0x4a, 0x0a, 0x45, 0xa4, 0x1b, 0xa8, 0x44, 0xec, 0xec, + 0x83, 0xf9, 0xca, 0xbe, 0xb4, 0x66, 0x40, 0xad, 0x60, 0xc0, 0x8a, 0x4e, 0xb5, 0xf3, 0x0b, 0x80, + 0xa2, 0xdb, 0xaa, 0x0d, 0x4f, 0xed, 0x82, 0x86, 0xf7, 0x11, 0x98, 0xee, 0xa5, 0x1f, 0x78, 0x89, + 0x08, 0x2b, 0xaf, 0x2e, 0xfa, 0xb3, 0xf9, 0xbc, 0xbd, 0x09, 0x0d, 0x6a, 0x22, 0xd7, 0x0b, 0x2f, + 0x9a, 0x77, 0x90, 0x69, 0xc6, 0x59, 0x40, 0x4f, 0x25, 0x25, 0x4c, 0xfc, 0xfe, 0x5c, 0xc8, 0x57, + 0xe6, 0xc0, 0x77, 0x55, 0x30, 0x27, 0xef, 0x9e, 0xb5, 0xc3, 0x4b, 0x18, 0x54, 0x82, 0x73, 0x5f, + 0x04, 0x5e, 0xf6, 0x1a, 0x0d, 0xa1, 0x90, 0x55, 0x82, 0xd3, 0x50, 0xdd, 0x41, 0x02, 0x9c, 0x3f, + 0xaa, 0x01, 0xa8, 0xa3, 0x47, 0x91, 0x27, 0xaa, 0x09, 0xb6, 0xb1, 0x9c, 0x60, 0xdb, 0xd0, 0xc8, + 0xbf, 0x0f, 0x58, 0x8c, 0xc6, 0x85, 0xf3, 0xd7, 0x49, 0xb7, 0x72, 0xfe, 0x6f, 0x83, 0x95, 0x46, + 0x57, 0x22, 0xf4, 0xbf, 0xa5, 0x5e, 0x17, 0x1e, 0x58, 0x20, 0xca, 0xdd, 0xf2, 0x66, 0xb5, 0x5b, + 0x9e, 0xb7, 0x14, 0x5b, 0x6a, 0x37, 0xd5, 0x52, 0x5c, 0xd1, 0x1d, 0x55, 0x45, 0x86, 0x14, 0x49, + 0x9a, 0x25, 0xf0, 0x0a, 0xca, 0x53, 0x5a, 0x4b, 0xd3, 0x62, 0x4a, 0x7b, 0x0f, 0x3a, 0x61, 0x34, + 0x75, 0xa3, 0xf0, 0x3c, 0xf0, 0xdd, 0x54, 0x77, 0xc7, 0x21, 0x8c, 0xf6, 0x34, 0xc6, 0xf9, 0x02, + 0xba, 0x19, 0xff, 0xa9, 0x09, 0xf9, 0x51, 0x9e, 0x36, 0x1a, 0x85, 0x6c, 0x0b, 0x36, 0x3d, 0xae, + 0x0d, 0x8c, 0x2c, 0x71, 0x74, 0xfe, 0xb7, 0x9e, 0x2d, 0xd6, 0x2d, 0xb9, 0x57, 0xf3, 0xb0, 0x9a, + 0xd7, 0xd7, 0x7e, 0xa5, 0xbc, 0xfe, 0xa7, 0x60, 0x79, 0x94, 0xdc, 0xfa, 0xd7, 0x59, 0xdc, 0xda, + 0x58, 0x4e, 0x64, 0x75, 0xfa, 0xeb, 0x5f, 0x0b, 0x56, 0x10, 0x7f, 0x8f, 0x1c, 0x72, 0x6e, 0x37, + 0x57, 0x71, 0xbb, 0xf5, 0x6b, 0x72, 0xfb, 0x1d, 0xe8, 0x86, 0x51, 0x38, 0x0d, 0xe7, 0x41, 0x80, + 0x05, 0x9d, 0x66, 0x77, 0x27, 0x8c, 0xc2, 0x91, 0x46, 0xd9, 0x1f, 0xc1, 0x6b, 0x65, 0x12, 0x65, + 0xd4, 0x1d, 0xd5, 0xb5, 0x2c, 0xd1, 0x91, 0xe9, 0x6f, 0x41, 0x3f, 0x3a, 0xfb, 0x85, 0x70, 0x53, + 0xe2, 0xd8, 0x94, 0xac, 0xb9, 0xab, 0x52, 0x1d, 0x85, 0x47, 0x16, 0x8d, 0xd0, 0xae, 0x97, 0xc4, + 0xdc, 0x7b, 0x41, 0xcc, 0x9f, 0x83, 0x95, 0x73, 0xa9, 0x94, 0x48, 0x5b, 0xd0, 0x3c, 0x18, 0xed, + 0x0f, 0x7f, 0xb7, 0x6f, 0x60, 0x2c, 0x64, 0xc3, 0xe7, 0x43, 0x36, 0x1e, 0xf6, 0x6b, 0x18, 0xa7, + 0xf6, 0x87, 0x87, 0xc3, 0xc9, 0xb0, 0x5f, 0xff, 0xaa, 0x61, 0xb6, 0xfb, 0x26, 0xf5, 0xe4, 0x02, + 0xdf, 0xf5, 0x53, 0x67, 0x0c, 0x50, 0x54, 0x07, 0xe8, 0x95, 0x8b, 0xcb, 0xe9, 0x82, 0x3b, 0xcd, + 0xae, 0xb5, 0x95, 0x1b, 0x64, 0xed, 0x65, 0x35, 0x88, 0x9a, 0x77, 0x76, 0xc0, 0x3a, 0xe2, 0xf1, + 0x97, 0xaa, 0x27, 0x7c, 0x1f, 0xd6, 0x63, 0x9e, 0xa4, 0x3e, 0xba, 0x89, 0xcc, 0xeb, 0xd6, 0xb7, + 0xba, 0xac, 0x97, 0x63, 0xd1, 0xf7, 0x3a, 0xa7, 0x60, 0x1e, 0xf1, 0xf8, 0x85, 0xcc, 0xbc, 0x9b, + 0x77, 0xbd, 0xe6, 0xba, 0x35, 0xad, 0x13, 0xa3, 0xfb, 0xd0, 0xd6, 0xc1, 0x44, 0xfb, 0xa3, 0x4a, + 0xa0, 0xc9, 0xe6, 0x9c, 0xbf, 0x35, 0xe0, 0xf6, 0x51, 0x74, 0x2d, 0xf2, 0x44, 0xf2, 0x84, 0xdf, + 0x04, 0x11, 0xf7, 0xbe, 0x47, 0xbb, 0x7f, 0x0c, 0x20, 0xa3, 0x39, 0xf5, 0x98, 0xf3, 0x8e, 0xb8, + 0xa5, 0x30, 0x4f, 0xf5, 0x27, 0x39, 0x21, 0x53, 0x9a, 0xd4, 0x21, 0x18, 0x61, 0x9c, 0xfa, 0x11, + 0xb4, 0xd2, 0x45, 0x58, 0x34, 0xe0, 0x9b, 0x29, 0x75, 0x99, 0x56, 0x66, 0x91, 0xcd, 0x97, 0x64, + 0x91, 0x7b, 0x60, 0x4d, 0x16, 0xd4, 0x81, 0x99, 0xcb, 0x4a, 0x6a, 0x64, 0xbc, 0x22, 0x35, 0xaa, + 0x2d, 0xa5, 0x46, 0xff, 0x6d, 0x40, 0xa7, 0x94, 0x0e, 0xdb, 0xef, 0x40, 0x23, 0x5d, 0x84, 0xd5, + 0xcf, 0x5c, 0xd9, 0x21, 0x8c, 0xa6, 0x50, 0xe3, 0x67, 0x7c, 0x31, 0xe5, 0x52, 0xfa, 0x17, 0xa1, + 0xf0, 0xf4, 0x96, 0x9d, 0x19, 0x5f, 0xec, 0x6a, 0x94, 0x7d, 0x08, 0xb7, 0x94, 0x43, 0xcf, 0x1e, + 0x91, 0x95, 0xae, 0xef, 0x2e, 0xa5, 0xdf, 0xaa, 0x4b, 0x95, 0x3d, 0x49, 0xd7, 0x63, 0xeb, 0x17, + 0x15, 0xe4, 0xc6, 0x2e, 0xbc, 0xbe, 0x82, 0xec, 0x07, 0xf5, 0x25, 0xef, 0x41, 0x6f, 0xb2, 0x08, + 0x27, 0xfe, 0x4c, 0xc8, 0x94, 0xcf, 0x62, 0x4a, 0x2d, 0x75, 0x40, 0x6e, 0xb0, 0x5a, 0x2a, 0x9d, + 0xf7, 0xa1, 0x7b, 0x22, 0x44, 0xc2, 0x84, 0x8c, 0xa3, 0x50, 0xa5, 0x55, 0xba, 0x3b, 0xa4, 0xa2, + 0xbf, 0x86, 0x9c, 0xdf, 0x03, 0x0b, 0x8b, 0xaf, 0xc7, 0x3c, 0x75, 0x2f, 0x7f, 0x48, 0x71, 0xf6, + 0x3e, 0xb4, 0x63, 0xa5, 0x53, 0xba, 0x5e, 0xea, 0x52, 0x16, 0xa0, 0xf5, 0x8c, 0x65, 0x93, 0xce, + 0x27, 0xf0, 0xfa, 0x78, 0x7e, 0x26, 0xdd, 0xc4, 0x8f, 0x29, 0x62, 0xea, 0x08, 0xb9, 0x01, 0x66, + 0x9c, 0x88, 0x73, 0x7f, 0x21, 0x32, 0xc3, 0xc8, 0x61, 0xe7, 0x33, 0xb8, 0x5d, 0x5d, 0xa2, 0x9f, + 0xf0, 0x36, 0xd4, 0xaf, 0xae, 0x65, 0xb9, 0x25, 0xf7, 0xec, 0x39, 0x7d, 0x56, 0x42, 0xb4, 0xc3, + 0xa0, 0x3e, 0x9a, 0xcf, 0xca, 0x9f, 0xc6, 0x1b, 0xea, 0xd3, 0x78, 0xa5, 0x27, 0x54, 0x5b, 0xea, + 0x09, 0xbd, 0x0d, 0xd6, 0x79, 0x94, 0xfc, 0x01, 0x4f, 0x3c, 0xe1, 0xe9, 0x18, 0x58, 0x20, 0x9c, + 0x6f, 0xa0, 0x93, 0xa9, 0xc0, 0x81, 0x47, 0x9d, 0x7c, 0xd2, 0xc1, 0x03, 0xaf, 0xa2, 0x92, 0xaa, + 0x3f, 0x23, 0x42, 0xef, 0x20, 0xd3, 0x1d, 0x05, 0x54, 0x4f, 0xd6, 0x0d, 0xd8, 0xec, 0x64, 0xe7, + 0x09, 0x74, 0xb3, 0x62, 0x0c, 0x8b, 0x6d, 0xd2, 0xea, 0xc0, 0x17, 0x61, 0x49, 0xe3, 0x4d, 0x85, + 0x98, 0xc8, 0x57, 0x7c, 0xa8, 0x72, 0xb6, 0xa1, 0xa5, 0x4d, 0xc6, 0x86, 0x86, 0x1b, 0x79, 0xca, + 0xac, 0x9b, 0x8c, 0xc6, 0xc8, 0x8e, 0x99, 0xbc, 0xc8, 0x92, 0xa5, 0x99, 0xbc, 0x70, 0xfe, 0xbe, + 0x06, 0xbd, 0xc7, 0xdc, 0xbd, 0x9a, 0xc7, 0x99, 0x2c, 0x4a, 0x15, 0xb5, 0x51, 0xa9, 0xa8, 0xcb, + 0xd5, 0x73, 0xad, 0x52, 0x3d, 0x57, 0x2e, 0x54, 0xaf, 0x66, 0x38, 0x6f, 0x40, 0x7b, 0x1e, 0xfa, + 0x8b, 0xcc, 0x17, 0x58, 0xac, 0x85, 0xe0, 0x44, 0xda, 0x9b, 0xd0, 0x41, 0x77, 0xe1, 0x87, 0x54, + 0x47, 0xeb, 0xb6, 0x63, 0x19, 0x85, 0xfe, 0x87, 0xbb, 0xae, 0x90, 0x12, 0x3d, 0xa6, 0x2e, 0xaf, + 0x2c, 0x85, 0x79, 0x26, 0x6e, 0xc8, 0x3d, 0x09, 0x37, 0x11, 0xe9, 0xb4, 0xa8, 0x89, 0x2d, 0x85, + 0xc1, 0xe9, 0x77, 0xa1, 0x27, 0x85, 0x94, 0xe8, 0x70, 0x29, 0x48, 0xea, 0x8e, 0x4d, 0x57, 0x23, + 0x27, 0x88, 0x43, 0x81, 0xf3, 0x30, 0x0a, 0x6f, 0x66, 0xd1, 0x5c, 0xea, 0xb8, 0x57, 0x20, 0x96, + 0xb2, 0x33, 0x58, 0xce, 0xce, 0x9c, 0x14, 0x7a, 0xc3, 0x45, 0x4c, 0x9f, 0x3b, 0xbf, 0x37, 0xd3, + 0x2b, 0xb1, 0xb5, 0x56, 0x61, 0x6b, 0x89, 0x41, 0x75, 0xdd, 0x61, 0x55, 0x0c, 0xc2, 0xdc, 0x2f, + 0x4a, 0x66, 0x3c, 0xcd, 0x18, 0xa7, 0x20, 0xe7, 0xcf, 0x6a, 0x60, 0x29, 0x91, 0xe1, 0x33, 0x3f, + 0xd4, 0x69, 0x9c, 0x51, 0x74, 0x6b, 0xf2, 0xc9, 0xed, 0x67, 0xe2, 0x86, 0xd2, 0x0f, 0x95, 0xdd, + 0xad, 0xea, 0x57, 0xea, 0x98, 0xa2, 0x8a, 0x0f, 0x8a, 0x29, 0x6f, 0x81, 0xa5, 0x5c, 0x2d, 0xe2, + 0xf5, 0x47, 0x3a, 0x42, 0x9c, 0xfa, 0xf4, 0x1d, 0x34, 0x15, 0xc9, 0x4c, 0x4b, 0x8b, 0xc6, 0xd5, + 0x34, 0xaf, 0xa7, 0x13, 0x0f, 0xe7, 0x12, 0xda, 0xfa, 0x74, 0x8c, 0xc3, 0xa7, 0xa3, 0x67, 0xa3, + 0xe3, 0xaf, 0x47, 0xfd, 0xb5, 0xbc, 0xbf, 0x65, 0x14, 0x91, 0xba, 0x56, 0x8e, 0xd4, 0x75, 0xc4, + 0xef, 0x1d, 0x9f, 0x8e, 0x26, 0xfd, 0x86, 0xdd, 0x03, 0x8b, 0x86, 0x53, 0x36, 0x7c, 0xde, 0x6f, + 0x52, 0xdd, 0xb9, 0xf7, 0xe5, 0xf0, 0x68, 0xb7, 0xdf, 0xca, 0xbb, 0x63, 0x6d, 0xe7, 0x8f, 0x0d, + 0x78, 0x4d, 0x3d, 0xb9, 0x5c, 0xa5, 0x95, 0xff, 0x35, 0xd3, 0x50, 0xff, 0x9a, 0xf9, 0xcd, 0x16, + 0x66, 0x3b, 0xff, 0x64, 0x40, 0x03, 0x9d, 0xa3, 0xfd, 0x00, 0xac, 0x2f, 0x05, 0x4f, 0xd2, 0x33, + 0xc1, 0x53, 0xbb, 0xe2, 0x08, 0x37, 0x28, 0xf7, 0x2c, 0x7a, 0xfb, 0xce, 0xda, 0x23, 0xc3, 0xde, + 0x56, 0xdf, 0xbe, 0xb3, 0x4f, 0xfa, 0xbd, 0xcc, 0xc9, 0x92, 0x13, 0xde, 0xa8, 0xac, 0x77, 0xd6, + 0xb6, 0x88, 0xfe, 0xab, 0xc8, 0x0f, 0xf7, 0xd4, 0x07, 0x61, 0x7b, 0xd9, 0x29, 0x2f, 0xaf, 0xb0, + 0x1f, 0x40, 0xeb, 0x40, 0xa2, 0xf7, 0x7f, 0x91, 0x94, 0xb2, 0x97, 0x72, 0x60, 0x70, 0xd6, 0x76, + 0xfe, 0xa6, 0x0e, 0x8d, 0x6f, 0x44, 0x12, 0xd9, 0x3f, 0x81, 0xb6, 0xfe, 0x12, 0x62, 0x97, 0xbe, + 0x78, 0x6c, 0x50, 0x7e, 0xbb, 0xf4, 0x89, 0x84, 0x4e, 0xe9, 0xab, 0x04, 0xa8, 0xe8, 0x71, 0xd9, + 0xc5, 0x87, 0x9a, 0x17, 0x2e, 0xf5, 0x39, 0xf4, 0xc7, 0x69, 0x22, 0xf8, 0xac, 0x44, 0x5e, 0x65, + 0xd5, 0xaa, 0x86, 0x19, 0xf1, 0xeb, 0x63, 0x68, 0xa9, 0x10, 0xbb, 0xb4, 0x60, 0xb9, 0xf7, 0x45, + 0xc4, 0x1f, 0x40, 0x67, 0x7c, 0x19, 0xcd, 0x03, 0x6f, 0x2c, 0x92, 0x6b, 0x61, 0x97, 0xbe, 0x6d, + 0x6e, 0x94, 0xc6, 0xce, 0x9a, 0xbd, 0x05, 0xa0, 0x9c, 0xfb, 0x29, 0x6a, 0x4a, 0x1b, 0xe7, 0x46, + 0xf3, 0x99, 0xda, 0xb4, 0xe4, 0xf5, 0x15, 0x65, 0x29, 0xd2, 0xbe, 0x8a, 0xf2, 0x53, 0xe8, 0xed, + 0x91, 0xd6, 0x1c, 0x27, 0xbb, 0x67, 0x51, 0x92, 0xda, 0xcb, 0xdf, 0x37, 0x37, 0x96, 0x11, 0xce, + 0x9a, 0xfd, 0x08, 0xcc, 0x49, 0x72, 0xa3, 0xe8, 0x5f, 0xd3, 0x09, 0x4a, 0x71, 0xde, 0x8a, 0x57, + 0xee, 0xfc, 0x7b, 0x1d, 0x5a, 0x5f, 0x47, 0xc9, 0x95, 0x48, 0xb0, 0xd6, 0xa1, 0x26, 0xa5, 0x56, + 0xa3, 0xbc, 0x61, 0xb9, 0xea, 0xa0, 0xf7, 0xc0, 0x22, 0xa6, 0x4c, 0xb8, 0xbc, 0x52, 0xa2, 0xa2, + 0x7f, 0x6c, 0x29, 0xbe, 0xa8, 0xda, 0x89, 0xe4, 0xba, 0xae, 0x04, 0x95, 0xf7, 0x6c, 0x2b, 0x9d, + 0xc3, 0x8d, 0xb6, 0x8a, 0xbc, 0x63, 0x54, 0xcd, 0x47, 0x06, 0xba, 0xa3, 0xb1, 0x7a, 0x29, 0x12, + 0x15, 0xff, 0x54, 0x51, 0x9a, 0x5f, 0xfc, 0x35, 0xc4, 0x59, 0xb3, 0x1f, 0x42, 0x4b, 0x25, 0xce, + 0xea, 0x99, 0x95, 0x9a, 0x79, 0xa3, 0x5f, 0x46, 0xe9, 0x05, 0x1f, 0x42, 0x4b, 0xd9, 0xb9, 0x5a, + 0x50, 0x09, 0x5b, 0xea, 0xd6, 0x2a, 0xf4, 0x29, 0x52, 0xe5, 0x99, 0x15, 0x69, 0xc5, 0x4b, 0x2f, + 0x91, 0x3e, 0x80, 0x3e, 0x13, 0xae, 0xf0, 0x4b, 0xe9, 0xb1, 0x9d, 0x3d, 0x6a, 0x85, 0xf5, 0x7d, + 0x0e, 0xbd, 0x4a, 0x2a, 0x6d, 0x0f, 0x88, 0xd1, 0x2b, 0xb2, 0xeb, 0x17, 0x74, 0xfe, 0x33, 0xb0, + 0x74, 0x26, 0x73, 0x26, 0x6c, 0xea, 0x3b, 0xae, 0xc8, 0x85, 0x36, 0x4a, 0xa9, 0x0c, 0x6a, 0xf0, + 0xe3, 0xfe, 0x3f, 0x7f, 0x77, 0xd7, 0xf8, 0xb7, 0xef, 0xee, 0x1a, 0xff, 0xf9, 0xdd, 0x5d, 0xe3, + 0x97, 0xff, 0x75, 0x77, 0xed, 0xac, 0x45, 0xff, 0x0f, 0xfc, 0xf4, 0xff, 0x03, 0x00, 0x00, 0xff, + 0xff, 0x61, 0x05, 0x9b, 0xec, 0x63, 0x28, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -8726,6 +8776,42 @@ func (m *TypeUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MapHeader) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MapHeader) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MapHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.PartitionKeys) > 0 { + for iNdEx := len(m.PartitionKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.PartitionKeys[iNdEx]) + copy(dAtA[i:], m.PartitionKeys[iNdEx]) + i = encodeVarintPb(dAtA, i, uint64(len(m.PartitionKeys[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *MapEntry) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10864,6 +10950,24 @@ func (m *TypeUpdate) Size() (n int) { return n } +func (m *MapHeader) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PartitionKeys) > 0 { + for _, b := range m.PartitionKeys { + l = len(b) + n += 1 + l + sovPb(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *MapEntry) Size() (n int) { if m == nil { return 0 @@ -18991,6 +19095,92 @@ func (m *TypeUpdate) Unmarshal(dAtA []byte) error { } return nil } +func (m *MapHeader) 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 ErrIntOverflowPb + } + 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: MapHeader: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MapHeader: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PartitionKeys", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthPb + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthPb + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PartitionKeys = append(m.PartitionKeys, make([]byte, postIndex-iNdEx)) + copy(m.PartitionKeys[len(m.PartitionKeys)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPb(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthPb + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthPb + } + 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 *MapEntry) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0