enhance: [cherry-pick] Add http method to control datacoord garbage collection (#29212)

Cherry-pick from master
pr: #29052
See also #29051

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
Signed-off-by: Congqi.Xia <congqi.xia@zilliz.com>
This commit is contained in:
congqixia 2023-12-15 02:16:38 +08:00 committed by GitHub
parent 368a0cd55d
commit d8d699401b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 1554 additions and 631 deletions

View File

@ -27,6 +27,7 @@ import (
"github.com/minio/minio-go/v7"
"github.com/samber/lo"
"go.uber.org/atomic"
"go.uber.org/zap"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
@ -35,6 +36,7 @@ import (
"github.com/milvus-io/milvus/pkg/common"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/metrics"
"github.com/milvus-io/milvus/pkg/util/merr"
"github.com/milvus-io/milvus/pkg/util/metautil"
"github.com/milvus-io/milvus/pkg/util/paramtable"
"github.com/milvus-io/milvus/pkg/util/typeutil"
@ -56,10 +58,17 @@ type garbageCollector struct {
meta *meta
handler Handler
startOnce sync.Once
stopOnce sync.Once
wg sync.WaitGroup
closeCh chan struct{}
startOnce sync.Once
stopOnce sync.Once
wg sync.WaitGroup
closeCh chan struct{}
cmdCh chan gcCmd
pauseUntil atomic.Time
}
type gcCmd struct {
cmdType datapb.GcCommand
duration time.Duration
done chan struct{}
}
// newGarbageCollector create garbage collector with meta and option
@ -71,6 +80,7 @@ func newGarbageCollector(meta *meta, handler Handler, opt GcOption) *garbageColl
handler: handler,
option: opt,
closeCh: make(chan struct{}),
cmdCh: make(chan gcCmd),
}
}
@ -88,6 +98,43 @@ func (gc *garbageCollector) start() {
}
}
func (gc *garbageCollector) Pause(ctx context.Context, pauseDuration time.Duration) error {
if !gc.option.enabled {
log.Info("garbage collection not enabled")
return nil
}
done := make(chan struct{})
select {
case gc.cmdCh <- gcCmd{
cmdType: datapb.GcCommand_Pause,
duration: pauseDuration,
done: done,
}:
<-done
return nil
case <-ctx.Done():
return ctx.Err()
}
}
func (gc *garbageCollector) Resume(ctx context.Context) error {
if !gc.option.enabled {
log.Warn("garbage collection not enabled, cannot resume")
return merr.WrapErrServiceUnavailable("garbage collection not enabled")
}
done := make(chan struct{})
select {
case gc.cmdCh <- gcCmd{
cmdType: datapb.GcCommand_Resume,
done: done,
}:
<-done
return nil
case <-ctx.Done():
return ctx.Err()
}
}
// work contains actual looping check logic
func (gc *garbageCollector) work() {
defer gc.wg.Done()
@ -96,11 +143,30 @@ func (gc *garbageCollector) work() {
for {
select {
case <-ticker.C:
if time.Now().Before(gc.pauseUntil.Load()) {
log.Info("garbage collector paused", zap.Time("until", gc.pauseUntil.Load()))
continue
}
gc.clearEtcd()
gc.recycleUnusedIndexes()
gc.recycleUnusedSegIndexes()
gc.scan()
gc.recycleUnusedIndexFiles()
case cmd := <-gc.cmdCh:
switch cmd.cmdType {
case datapb.GcCommand_Pause:
pauseUntil := time.Now().Add(cmd.duration)
if pauseUntil.After(gc.pauseUntil.Load()) {
log.Info("garbage collection paused", zap.Duration("duration", cmd.duration), zap.Time("pauseUntil", pauseUntil))
gc.pauseUntil.Store(pauseUntil)
} else {
log.Info("new pause until before current value", zap.Duration("duration", cmd.duration), zap.Time("pauseUntil", pauseUntil), zap.Time("oldPauseUntil", gc.pauseUntil.Load()))
}
case datapb.GcCommand_Resume:
// reset to zero value
gc.pauseUntil.Store(time.Time{})
}
close(cmd.done)
case <-gc.closeCh:
log.Warn("garbage collector quit")
return

View File

@ -32,6 +32,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/msgpb"
@ -1133,3 +1134,134 @@ func TestGarbageCollector_clearETCD(t *testing.T) {
segB = gc.meta.GetSegment(segID + 1)
assert.Nil(t, segB)
}
type GarbageCollectorSuite struct {
suite.Suite
bucketName string
rootPath string
cli *storage.MinioChunkManager
inserts []string
stats []string
delta []string
others []string
meta *meta
}
func (s *GarbageCollectorSuite) SetupTest() {
s.bucketName = `datacoord-ut` + strings.ToLower(funcutil.RandomString(8))
s.rootPath = `gc` + funcutil.RandomString(8)
var err error
s.cli, s.inserts, s.stats, s.delta, s.others, err = initUtOSSEnv(s.bucketName, s.rootPath, 4)
s.Require().NoError(err)
s.meta, err = newMemoryMeta()
s.Require().NoError(err)
}
func (s *GarbageCollectorSuite) TearDownTest() {
cleanupOSS(s.cli.Client, s.bucketName, s.rootPath)
}
func (s *GarbageCollectorSuite) TestPauseResume() {
s.Run("not_enabled", func() {
gc := newGarbageCollector(s.meta, newMockHandler(), GcOption{
cli: s.cli,
enabled: false,
checkInterval: time.Millisecond * 10,
missingTolerance: time.Hour * 24,
dropTolerance: time.Hour * 24,
})
gc.start()
defer gc.close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
err := gc.Pause(ctx, time.Second)
s.NoError(err)
err = gc.Resume(ctx)
s.Error(err)
})
s.Run("pause_then_resume", func() {
gc := newGarbageCollector(s.meta, newMockHandler(), GcOption{
cli: s.cli,
enabled: true,
checkInterval: time.Millisecond * 10,
missingTolerance: time.Hour * 24,
dropTolerance: time.Hour * 24,
})
gc.start()
defer gc.close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
err := gc.Pause(ctx, time.Minute)
s.NoError(err)
s.NotZero(gc.pauseUntil.Load())
err = gc.Resume(ctx)
s.NoError(err)
s.Zero(gc.pauseUntil.Load())
})
s.Run("pause_before_until", func() {
gc := newGarbageCollector(s.meta, newMockHandler(), GcOption{
cli: s.cli,
enabled: true,
checkInterval: time.Millisecond * 10,
missingTolerance: time.Hour * 24,
dropTolerance: time.Hour * 24,
})
gc.start()
defer gc.close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
err := gc.Pause(ctx, time.Minute)
s.NoError(err)
until := gc.pauseUntil.Load()
s.NotZero(until)
err = gc.Pause(ctx, time.Second)
s.NoError(err)
second := gc.pauseUntil.Load()
s.Equal(until, second)
})
s.Run("pause_resume_timeout", func() {
gc := newGarbageCollector(s.meta, newMockHandler(), GcOption{
cli: s.cli,
enabled: true,
checkInterval: time.Millisecond * 10,
missingTolerance: time.Hour * 24,
dropTolerance: time.Hour * 24,
})
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)
defer cancel()
err := gc.Pause(ctx, time.Minute)
s.Error(err)
s.Zero(gc.pauseUntil.Load())
err = gc.Resume(ctx)
s.Error(err)
s.Zero(gc.pauseUntil.Load())
})
}
func TestGarbageCollector(t *testing.T) {
suite.Run(t, new(GarbageCollectorSuite))
}

View File

@ -402,6 +402,7 @@ func (s *Server) startDataCoord() {
s.compactionTrigger.start()
}
s.startServerLoop()
s.afterStart()
s.stateCode.Store(commonpb.StateCode_Healthy)
sessionutil.SaveServerInfo(typeutil.DataCoordRole, s.session.GetServerID())

View File

@ -22,6 +22,7 @@ import (
"math/rand"
"strconv"
"sync"
"time"
"github.com/cockroachdb/errors"
"github.com/samber/lo"
@ -1637,3 +1638,45 @@ func (s *Server) GcConfirm(ctx context.Context, request *datapb.GcConfirmRequest
resp.GcFinished = s.meta.GcConfirm(ctx, request.GetCollectionId(), request.GetPartitionId())
return resp, nil
}
func (s *Server) GcControl(ctx context.Context, request *datapb.GcControlRequest) (*commonpb.Status, error) {
status := &commonpb.Status{}
if err := merr.CheckHealthy(s.GetStateCode()); err != nil {
return merr.Status(err), nil
}
switch request.GetCommand() {
case datapb.GcCommand_Pause:
kv := lo.FindOrElse(request.GetParams(), nil, func(kv *commonpb.KeyValuePair) bool {
return kv.GetKey() == "duration"
})
if kv == nil {
status.ErrorCode = commonpb.ErrorCode_UnexpectedError
status.Reason = "pause duration param not found"
return status, nil
}
pauseSeconds, err := strconv.ParseInt(kv.GetValue(), 10, 64)
if err != nil {
status.ErrorCode = commonpb.ErrorCode_UnexpectedError
status.Reason = fmt.Sprintf("pause duration not valid, %s", err.Error())
return status, nil
}
if err := s.garbageCollector.Pause(ctx, time.Duration(pauseSeconds)*time.Second); err != nil {
status.ErrorCode = commonpb.ErrorCode_UnexpectedError
status.Reason = fmt.Sprintf("failed to pause gc, %s", err.Error())
return status, nil
}
case datapb.GcCommand_Resume:
if err := s.garbageCollector.Resume(ctx); err != nil {
status.ErrorCode = commonpb.ErrorCode_UnexpectedError
status.Reason = fmt.Sprintf("failed to pause gc, %s", err.Error())
return status, nil
}
default:
status.ErrorCode = commonpb.ErrorCode_UnexpectedError
status.Reason = fmt.Sprintf("unknown gc command: %d", request.GetCommand())
return status, nil
}
return status, nil
}

View File

@ -7,6 +7,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/msgpb"
@ -794,3 +795,94 @@ func TestGetRecoveryInfoV2(t *testing.T) {
assert.ErrorIs(t, err, merr.ErrServiceNotReady)
})
}
type GcControlServiceSuite struct {
suite.Suite
server *Server
}
func (s *GcControlServiceSuite) SetupTest() {
s.server = newTestServer(s.T(), nil)
}
func (s *GcControlServiceSuite) TearDownTest() {
if s.server != nil {
closeTestServer(s.T(), s.server)
}
}
func (s *GcControlServiceSuite) TestClosedServer() {
closeTestServer(s.T(), s.server)
resp, err := s.server.GcControl(context.TODO(), &datapb.GcControlRequest{})
s.NoError(err)
s.False(merr.Ok(resp))
s.server = nil
}
func (s *GcControlServiceSuite) TestUnknownCmd() {
resp, err := s.server.GcControl(context.TODO(), &datapb.GcControlRequest{
Command: 0,
})
s.NoError(err)
s.False(merr.Ok(resp))
}
func (s *GcControlServiceSuite) TestPause() {
resp, err := s.server.GcControl(context.TODO(), &datapb.GcControlRequest{
Command: datapb.GcCommand_Pause,
})
s.Nil(err)
s.False(merr.Ok(resp))
resp, err = s.server.GcControl(context.TODO(), &datapb.GcControlRequest{
Command: datapb.GcCommand_Pause,
Params: []*commonpb.KeyValuePair{
{Key: "duration", Value: "not_int"},
},
})
s.Nil(err)
s.False(merr.Ok(resp))
resp, err = s.server.GcControl(context.TODO(), &datapb.GcControlRequest{
Command: datapb.GcCommand_Pause,
Params: []*commonpb.KeyValuePair{
{Key: "duration", Value: "60"},
},
})
s.Nil(err)
s.True(merr.Ok(resp))
}
func (s *GcControlServiceSuite) TestResume() {
resp, err := s.server.GcControl(context.TODO(), &datapb.GcControlRequest{
Command: datapb.GcCommand_Resume,
})
s.Nil(err)
s.True(merr.Ok(resp))
}
func (s *GcControlServiceSuite) TestTimeoutCtx() {
s.server.garbageCollector.close()
ctx, cancel := context.WithCancel(context.Background())
cancel()
resp, err := s.server.GcControl(ctx, &datapb.GcControlRequest{
Command: datapb.GcCommand_Resume,
})
s.Nil(err)
s.False(merr.Ok(resp))
resp, err = s.server.GcControl(ctx, &datapb.GcControlRequest{
Command: datapb.GcCommand_Pause,
Params: []*commonpb.KeyValuePair{
{Key: "duration", Value: "60"},
},
})
s.Nil(err)
s.False(merr.Ok(resp))
}
func TestGcControlService(t *testing.T) {
suite.Run(t, new(GcControlServiceSuite))
}

View File

@ -615,3 +615,9 @@ func (c *Client) ReportDataNodeTtMsgs(ctx context.Context, req *datapb.ReportDat
return client.ReportDataNodeTtMsgs(ctx, req)
})
}
func (c *Client) GcControl(ctx context.Context, req *datapb.GcControlRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
return wrapGrpcCall(ctx, c, func(client datapb.DataCoordClient) (*commonpb.Status, error) {
return client.GcControl(ctx, req)
})
}

View File

@ -1823,3 +1823,40 @@ func Test_ReportDataNodeTtMsgs(t *testing.T) {
_, err = client.ReportDataNodeTtMsgs(ctx, &datapb.ReportDataNodeTtMsgsRequest{})
assert.ErrorIs(t, err, context.DeadlineExceeded)
}
func Test_GcControl(t *testing.T) {
paramtable.Init()
ctx := context.Background()
client, err := NewClient(ctx)
assert.NoError(t, err)
assert.NotNil(t, client)
defer client.Close()
mockProxy := mocks.NewMockDataCoordClient(t)
mockGrpcClient := mocks.NewMockGrpcClient[datapb.DataCoordClient](t)
mockGrpcClient.EXPECT().Close().Return(nil)
mockGrpcClient.EXPECT().ReCall(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, f func(datapb.DataCoordClient) (interface{}, error)) (interface{}, error) {
return f(mockProxy)
})
client.grpcClient = mockGrpcClient
// test success
mockProxy.EXPECT().GcControl(mock.Anything, mock.Anything).Return(merr.Success(), nil)
_, err = client.GcControl(ctx, &datapb.GcControlRequest{})
assert.Nil(t, err)
// test return error code
mockProxy.ExpectedCalls = nil
mockProxy.EXPECT().GcControl(mock.Anything, mock.Anything).Return(merr.Status(err), nil)
_, err = client.GcControl(ctx, &datapb.GcControlRequest{})
assert.Nil(t, err)
// test ctx done
ctx, cancel := context.WithTimeout(ctx, 10*time.Millisecond)
defer cancel()
time.Sleep(20 * time.Millisecond)
_, err = client.GcControl(ctx, &datapb.GcControlRequest{})
assert.ErrorIs(t, err, context.DeadlineExceeded)
}

View File

@ -474,3 +474,7 @@ func (s *Server) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetInde
func (s *Server) ReportDataNodeTtMsgs(ctx context.Context, req *datapb.ReportDataNodeTtMsgsRequest) (*commonpb.Status, error) {
return s.dataCoord.ReportDataNodeTtMsgs(ctx, req)
}
func (s *Server) GcControl(ctx context.Context, req *datapb.GcControlRequest) (*commonpb.Status, error) {
return s.dataCoord.GcControl(ctx, req)
}

View File

@ -25,6 +25,7 @@ import (
"github.com/stretchr/testify/mock"
"github.com/tikv/client-go/v2/txnkv"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
"github.com/milvus-io/milvus/internal/mocks"
"github.com/milvus-io/milvus/internal/proto/datapb"
@ -323,6 +324,13 @@ func Test_NewServer(t *testing.T) {
assert.NoError(t, err)
assert.NotNil(t, ret)
})
t.Run("GcControl", func(t *testing.T) {
mockDataCoord.EXPECT().GcControl(mock.Anything, mock.Anything).Return(&commonpb.Status{}, nil)
ret, err := server.GcControl(ctx, nil)
assert.NoError(t, err)
assert.NotNil(t, ret)
})
}
func Test_Run(t *testing.T) {

View File

@ -41,6 +41,14 @@ var (
server *http.Server
)
// Provide alias for native http package
// avoiding import alias when using http package
type (
ResponseWriter = http.ResponseWriter
Request = http.Request
)
type Handler struct {
Path string
HandlerFunc http.HandlerFunc

View File

@ -531,6 +531,61 @@ func (_c *MockDataCoord_GcConfirm_Call) RunAndReturn(run func(context.Context, *
return _c
}
// GcControl provides a mock function with given fields: _a0, _a1
func (_m *MockDataCoord) GcControl(_a0 context.Context, _a1 *datapb.GcControlRequest) (*commonpb.Status, error) {
ret := _m.Called(_a0, _a1)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcControlRequest) (*commonpb.Status, error)); ok {
return rf(_a0, _a1)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcControlRequest) *commonpb.Status); ok {
r0 = rf(_a0, _a1)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*commonpb.Status)
}
}
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GcControlRequest) error); ok {
r1 = rf(_a0, _a1)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// MockDataCoord_GcControl_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GcControl'
type MockDataCoord_GcControl_Call struct {
*mock.Call
}
// GcControl is a helper method to define mock.On call
// - _a0 context.Context
// - _a1 *datapb.GcControlRequest
func (_e *MockDataCoord_Expecter) GcControl(_a0 interface{}, _a1 interface{}) *MockDataCoord_GcControl_Call {
return &MockDataCoord_GcControl_Call{Call: _e.mock.On("GcControl", _a0, _a1)}
}
func (_c *MockDataCoord_GcControl_Call) Run(run func(_a0 context.Context, _a1 *datapb.GcControlRequest)) *MockDataCoord_GcControl_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*datapb.GcControlRequest))
})
return _c
}
func (_c *MockDataCoord_GcControl_Call) Return(_a0 *commonpb.Status, _a1 error) *MockDataCoord_GcControl_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *MockDataCoord_GcControl_Call) RunAndReturn(run func(context.Context, *datapb.GcControlRequest) (*commonpb.Status, error)) *MockDataCoord_GcControl_Call {
_c.Call.Return(run)
return _c
}
// GetCollectionStatistics provides a mock function with given fields: _a0, _a1
func (_m *MockDataCoord) GetCollectionStatistics(_a0 context.Context, _a1 *datapb.GetCollectionStatisticsRequest) (*datapb.GetCollectionStatisticsResponse, error) {
ret := _m.Called(_a0, _a1)

View File

@ -704,6 +704,76 @@ func (_c *MockDataCoordClient_GcConfirm_Call) RunAndReturn(run func(context.Cont
return _c
}
// GcControl provides a mock function with given fields: ctx, in, opts
func (_m *MockDataCoordClient) GcControl(ctx context.Context, in *datapb.GcControlRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
_va := make([]interface{}, len(opts))
for _i := range opts {
_va[_i] = opts[_i]
}
var _ca []interface{}
_ca = append(_ca, ctx, in)
_ca = append(_ca, _va...)
ret := _m.Called(_ca...)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcControlRequest, ...grpc.CallOption) (*commonpb.Status, error)); ok {
return rf(ctx, in, opts...)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcControlRequest, ...grpc.CallOption) *commonpb.Status); ok {
r0 = rf(ctx, in, opts...)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*commonpb.Status)
}
}
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GcControlRequest, ...grpc.CallOption) error); ok {
r1 = rf(ctx, in, opts...)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// MockDataCoordClient_GcControl_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GcControl'
type MockDataCoordClient_GcControl_Call struct {
*mock.Call
}
// GcControl is a helper method to define mock.On call
// - ctx context.Context
// - in *datapb.GcControlRequest
// - opts ...grpc.CallOption
func (_e *MockDataCoordClient_Expecter) GcControl(ctx interface{}, in interface{}, opts ...interface{}) *MockDataCoordClient_GcControl_Call {
return &MockDataCoordClient_GcControl_Call{Call: _e.mock.On("GcControl",
append([]interface{}{ctx, in}, opts...)...)}
}
func (_c *MockDataCoordClient_GcControl_Call) Run(run func(ctx context.Context, in *datapb.GcControlRequest, opts ...grpc.CallOption)) *MockDataCoordClient_GcControl_Call {
_c.Call.Run(func(args mock.Arguments) {
variadicArgs := make([]grpc.CallOption, len(args)-2)
for i, a := range args[2:] {
if a != nil {
variadicArgs[i] = a.(grpc.CallOption)
}
}
run(args[0].(context.Context), args[1].(*datapb.GcControlRequest), variadicArgs...)
})
return _c
}
func (_c *MockDataCoordClient_GcControl_Call) Return(_a0 *commonpb.Status, _a1 error) *MockDataCoordClient_GcControl_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *MockDataCoordClient_GcControl_Call) RunAndReturn(run func(context.Context, *datapb.GcControlRequest, ...grpc.CallOption) (*commonpb.Status, error)) *MockDataCoordClient_GcControl_Call {
_c.Call.Return(run)
return _c
}
// GetCollectionStatistics provides a mock function with given fields: ctx, in, opts
func (_m *MockDataCoordClient) GetCollectionStatistics(ctx context.Context, in *datapb.GetCollectionStatisticsRequest, opts ...grpc.CallOption) (*datapb.GetCollectionStatisticsResponse, error) {
_va := make([]interface{}, len(opts))

View File

@ -91,6 +91,8 @@ service DataCoord {
rpc GcConfirm(GcConfirmRequest) returns (GcConfirmResponse) {}
rpc ReportDataNodeTtMsgs(ReportDataNodeTtMsgsRequest) returns (common.Status) {}
rpc GcControl(GcControlRequest) returns(common.Status){}
}
service DataNode {
@ -727,3 +729,14 @@ message ChannelOperationProgressResponse {
ChannelWatchState state = 3;
int32 progress = 4;
}
enum GcCommand {
_ = 0;
Pause = 1;
Resume = 2;
}
message GcControlRequest {
common.MsgBase base = 1;
GcCommand command = 2;
repeated common.KeyValuePair params = 3;
}

View File

@ -173,6 +173,34 @@ func (CompactionType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_82cd95f524594f49, []int{3}
}
type GcCommand int32
const (
GcCommand__ GcCommand = 0
GcCommand_Pause GcCommand = 1
GcCommand_Resume GcCommand = 2
)
var GcCommand_name = map[int32]string{
0: "_",
1: "Pause",
2: "Resume",
}
var GcCommand_value = map[string]int32{
"_": 0,
"Pause": 1,
"Resume": 2,
}
func (x GcCommand) String() string {
return proto.EnumName(GcCommand_name, int32(x))
}
func (GcCommand) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_82cd95f524594f49, []int{4}
}
// TODO: import google/protobuf/empty.proto
type Empty struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -5288,11 +5316,67 @@ func (m *ChannelOperationProgressResponse) GetProgress() int32 {
return 0
}
type GcControlRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
Command GcCommand `protobuf:"varint,2,opt,name=command,proto3,enum=milvus.proto.data.GcCommand" json:"command,omitempty"`
Params []*commonpb.KeyValuePair `protobuf:"bytes,3,rep,name=params,proto3" json:"params,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GcControlRequest) Reset() { *m = GcControlRequest{} }
func (m *GcControlRequest) String() string { return proto.CompactTextString(m) }
func (*GcControlRequest) ProtoMessage() {}
func (*GcControlRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_82cd95f524594f49, []int{81}
}
func (m *GcControlRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GcControlRequest.Unmarshal(m, b)
}
func (m *GcControlRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GcControlRequest.Marshal(b, m, deterministic)
}
func (m *GcControlRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GcControlRequest.Merge(m, src)
}
func (m *GcControlRequest) XXX_Size() int {
return xxx_messageInfo_GcControlRequest.Size(m)
}
func (m *GcControlRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GcControlRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GcControlRequest proto.InternalMessageInfo
func (m *GcControlRequest) GetBase() *commonpb.MsgBase {
if m != nil {
return m.Base
}
return nil
}
func (m *GcControlRequest) GetCommand() GcCommand {
if m != nil {
return m.Command
}
return GcCommand__
}
func (m *GcControlRequest) GetParams() []*commonpb.KeyValuePair {
if m != nil {
return m.Params
}
return nil
}
func init() {
proto.RegisterEnum("milvus.proto.data.SegmentType", SegmentType_name, SegmentType_value)
proto.RegisterEnum("milvus.proto.data.SegmentLevel", SegmentLevel_name, SegmentLevel_value)
proto.RegisterEnum("milvus.proto.data.ChannelWatchState", ChannelWatchState_name, ChannelWatchState_value)
proto.RegisterEnum("milvus.proto.data.CompactionType", CompactionType_name, CompactionType_value)
proto.RegisterEnum("milvus.proto.data.GcCommand", GcCommand_name, GcCommand_value)
proto.RegisterType((*Empty)(nil), "milvus.proto.data.Empty")
proto.RegisterType((*FlushRequest)(nil), "milvus.proto.data.FlushRequest")
proto.RegisterType((*FlushResponse)(nil), "milvus.proto.data.FlushResponse")
@ -5375,332 +5459,338 @@ func init() {
proto.RegisterType((*GetFlushStateRequest)(nil), "milvus.proto.data.GetFlushStateRequest")
proto.RegisterType((*ChannelOperationsRequest)(nil), "milvus.proto.data.ChannelOperationsRequest")
proto.RegisterType((*ChannelOperationProgressResponse)(nil), "milvus.proto.data.ChannelOperationProgressResponse")
proto.RegisterType((*GcControlRequest)(nil), "milvus.proto.data.GcControlRequest")
}
func init() { proto.RegisterFile("data_coord.proto", fileDescriptor_82cd95f524594f49) }
var fileDescriptor_82cd95f524594f49 = []byte{
// 5108 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xcb, 0x6f, 0x1c, 0x47,
0x7a, 0xb8, 0x7a, 0x5e, 0x9c, 0xf9, 0x66, 0x38, 0x1c, 0x96, 0x68, 0x6a, 0x34, 0xb2, 0x1e, 0xdb,
0x92, 0x6c, 0x5a, 0xb6, 0x25, 0x99, 0xfa, 0x19, 0xeb, 0xc7, 0xda, 0xbb, 0x22, 0x69, 0xc9, 0xf3,
0x0b, 0x29, 0x73, 0x9b, 0x94, 0x1c, 0x78, 0x03, 0x0c, 0x9a, 0xd3, 0xc5, 0x61, 0x9b, 0x3d, 0xdd,
0xe3, 0xee, 0x1e, 0x52, 0x74, 0x80, 0xac, 0x37, 0x71, 0x02, 0xe4, 0x81, 0x24, 0xc8, 0xe3, 0x90,
0x5b, 0x90, 0x43, 0xb0, 0x79, 0xec, 0x69, 0x13, 0x2c, 0x10, 0x04, 0x58, 0x20, 0xb9, 0x6c, 0x90,
0x43, 0x10, 0x04, 0x08, 0x92, 0x43, 0xfe, 0x80, 0x9c, 0x83, 0xdc, 0x83, 0x7a, 0x74, 0xf5, 0xab,
0x7a, 0xa6, 0xc9, 0x91, 0x6c, 0x20, 0x39, 0x91, 0x55, 0xfd, 0x55, 0xd5, 0x57, 0x5f, 0x7d, 0xef,
0xaf, 0x6a, 0xa0, 0x65, 0xe8, 0xbe, 0xde, 0xeb, 0x3b, 0x8e, 0x6b, 0xdc, 0x1e, 0xb9, 0x8e, 0xef,
0xa0, 0xc5, 0xa1, 0x69, 0x1d, 0x8d, 0x3d, 0xd6, 0xba, 0x4d, 0x3e, 0x77, 0x1a, 0x7d, 0x67, 0x38,
0x74, 0x6c, 0xd6, 0xd5, 0x69, 0x9a, 0xb6, 0x8f, 0x5d, 0x5b, 0xb7, 0x78, 0xbb, 0x11, 0x1d, 0xd0,
0x69, 0x78, 0xfd, 0x03, 0x3c, 0xd4, 0x79, 0xab, 0x36, 0xf4, 0x06, 0xfc, 0xdf, 0x45, 0xd3, 0x36,
0xf0, 0xd3, 0xe8, 0x52, 0xea, 0x1c, 0x94, 0x3f, 0x18, 0x8e, 0xfc, 0x13, 0xf5, 0xaf, 0x14, 0x68,
0x3c, 0xb0, 0xc6, 0xde, 0x81, 0x86, 0x3f, 0x1b, 0x63, 0xcf, 0x47, 0x77, 0xa1, 0xb4, 0xa7, 0x7b,
0xb8, 0xad, 0x5c, 0x53, 0x56, 0xea, 0xab, 0x2f, 0xde, 0x8e, 0xe1, 0xc4, 0xb1, 0xd9, 0xf2, 0x06,
0x6b, 0xba, 0x87, 0x35, 0x0a, 0x89, 0x10, 0x94, 0x8c, 0xbd, 0xee, 0x46, 0xbb, 0x70, 0x4d, 0x59,
0x29, 0x6a, 0xf4, 0x7f, 0x74, 0x05, 0xc0, 0xc3, 0x83, 0x21, 0xb6, 0xfd, 0xee, 0x86, 0xd7, 0x2e,
0x5e, 0x2b, 0xae, 0x14, 0xb5, 0x48, 0x0f, 0x52, 0xa1, 0xd1, 0x77, 0x2c, 0x0b, 0xf7, 0x7d, 0xd3,
0xb1, 0xbb, 0x1b, 0xed, 0x12, 0x1d, 0x1b, 0xeb, 0x43, 0x1d, 0xa8, 0x9a, 0x5e, 0x77, 0x38, 0x72,
0x5c, 0xbf, 0x5d, 0xbe, 0xa6, 0xac, 0x54, 0x35, 0xd1, 0x56, 0x7f, 0x50, 0x80, 0x79, 0x8e, 0xb6,
0x37, 0x72, 0x6c, 0x0f, 0xa3, 0x7b, 0x50, 0xf1, 0x7c, 0xdd, 0x1f, 0x7b, 0x1c, 0xf3, 0x4b, 0x52,
0xcc, 0x77, 0x28, 0x88, 0xc6, 0x41, 0xa5, 0xa8, 0x27, 0x51, 0x2b, 0x4a, 0x50, 0x8b, 0x6f, 0xaf,
0x94, 0xda, 0xde, 0x0a, 0x2c, 0xec, 0x13, 0xec, 0x76, 0x42, 0xa0, 0x32, 0x05, 0x4a, 0x76, 0x93,
0x99, 0x7c, 0x73, 0x88, 0x3f, 0xda, 0xdf, 0xc1, 0xba, 0xd5, 0xae, 0xd0, 0xb5, 0x22, 0x3d, 0xe8,
0x22, 0x54, 0xe9, 0x90, 0x9e, 0xef, 0xb5, 0xe7, 0xae, 0x29, 0x2b, 0x25, 0x6d, 0x8e, 0xb6, 0x77,
0x3d, 0xf5, 0xfb, 0xb0, 0x44, 0x49, 0xb0, 0x7e, 0xa0, 0xdb, 0x36, 0xb6, 0xbc, 0xb3, 0x9f, 0x60,
0x74, 0x91, 0x42, 0x6c, 0x11, 0x72, 0x08, 0x7d, 0x3e, 0x3f, 0x3d, 0xc6, 0x9a, 0x26, 0xda, 0xea,
0x3f, 0x2b, 0xd0, 0x12, 0x5b, 0x09, 0x56, 0x5f, 0x82, 0x72, 0xdf, 0x19, 0xdb, 0x3e, 0x5d, 0x7e,
0x5e, 0x63, 0x0d, 0xf4, 0x0d, 0x68, 0xf0, 0x61, 0x3d, 0x5b, 0x1f, 0x62, 0xba, 0x4a, 0x4d, 0xab,
0xf3, 0xbe, 0x47, 0xfa, 0x10, 0xe7, 0xa2, 0xfb, 0x35, 0xa8, 0x8f, 0x74, 0xd7, 0x37, 0x63, 0x5c,
0x13, 0xed, 0x9a, 0xc4, 0x34, 0x64, 0x05, 0x93, 0xfe, 0xb7, 0xab, 0x7b, 0x87, 0xdd, 0x0d, 0x4e,
0xed, 0x58, 0x9f, 0xfa, 0xc7, 0x0a, 0x2c, 0xdf, 0xf7, 0x3c, 0x73, 0x60, 0xa7, 0x76, 0xb6, 0x0c,
0x15, 0xdb, 0x31, 0x70, 0x77, 0x83, 0x6e, 0xad, 0xa8, 0xf1, 0x16, 0xba, 0x04, 0xb5, 0x11, 0xc6,
0x6e, 0xcf, 0x75, 0xac, 0x60, 0x63, 0x55, 0xd2, 0xa1, 0x39, 0x16, 0x46, 0xdf, 0x85, 0x45, 0x2f,
0x31, 0x11, 0x23, 0x64, 0x7d, 0xf5, 0xfa, 0xed, 0x94, 0xbc, 0xdf, 0x4e, 0x2e, 0xaa, 0xa5, 0x47,
0xab, 0x5f, 0x14, 0xe0, 0xbc, 0x80, 0x63, 0xb8, 0x92, 0xff, 0x09, 0xe5, 0x3d, 0x3c, 0x10, 0xe8,
0xb1, 0x46, 0x1e, 0xca, 0x8b, 0x23, 0x2b, 0x46, 0x8f, 0x2c, 0x8f, 0x88, 0x26, 0xce, 0xa3, 0x9c,
0x3e, 0x8f, 0xab, 0x50, 0xc7, 0x4f, 0x47, 0xa6, 0x8b, 0x7b, 0x84, 0xa9, 0x29, 0xc9, 0x4b, 0x1a,
0xb0, 0xae, 0x5d, 0x73, 0x18, 0x95, 0xdb, 0xb9, 0xdc, 0x72, 0xab, 0xfe, 0x89, 0x02, 0x17, 0x52,
0xa7, 0xc4, 0x15, 0x81, 0x06, 0x2d, 0xba, 0xf3, 0x90, 0x32, 0x44, 0x25, 0x10, 0x82, 0xbf, 0x34,
0x89, 0xe0, 0x21, 0xb8, 0x96, 0x1a, 0x1f, 0x41, 0xb2, 0x90, 0x1f, 0xc9, 0x43, 0xb8, 0xf0, 0x10,
0xfb, 0x7c, 0x01, 0xf2, 0x0d, 0xcf, 0x20, 0xa2, 0x71, 0x8d, 0x53, 0x48, 0x6a, 0x1c, 0xf5, 0x4f,
0x0b, 0x42, 0x16, 0xe9, 0x52, 0x5d, 0x7b, 0xdf, 0x41, 0x2f, 0x42, 0x4d, 0x80, 0x70, 0xae, 0x08,
0x3b, 0xd0, 0x37, 0xa1, 0x4c, 0x30, 0x65, 0x2c, 0xd1, 0x5c, 0xfd, 0x86, 0x7c, 0x4f, 0x91, 0x39,
0x35, 0x06, 0x8f, 0x36, 0xa0, 0xe9, 0xf9, 0xba, 0xeb, 0xf7, 0x46, 0x8e, 0x47, 0xcf, 0x99, 0x32,
0x4e, 0x7d, 0xf5, 0x72, 0x7c, 0x06, 0x62, 0x80, 0xb6, 0xbc, 0xc1, 0x36, 0x07, 0xd2, 0xe6, 0xe9,
0xa0, 0xa0, 0x89, 0xbe, 0x03, 0x0d, 0x6c, 0x1b, 0xe1, 0x1c, 0xa5, 0x3c, 0x73, 0xd4, 0xb1, 0x6d,
0x88, 0x19, 0xc2, 0x53, 0x29, 0xe7, 0x3f, 0x95, 0xdf, 0x52, 0xa0, 0x9d, 0x3e, 0x96, 0x59, 0x8c,
0xc8, 0xbb, 0x6c, 0x10, 0x66, 0xc7, 0x32, 0x51, 0xae, 0xc5, 0xd1, 0x68, 0x7c, 0x88, 0xfa, 0x87,
0x0a, 0xbc, 0x10, 0xa2, 0x43, 0x3f, 0x3d, 0x2f, 0x1e, 0x41, 0xb7, 0xa0, 0x65, 0xda, 0x7d, 0x6b,
0x6c, 0xe0, 0xc7, 0xf6, 0x87, 0x58, 0xb7, 0xfc, 0x83, 0x13, 0x7a, 0x72, 0x55, 0x2d, 0xd5, 0xaf,
0xfe, 0x7b, 0x01, 0x96, 0x93, 0x78, 0xcd, 0x42, 0xa4, 0xff, 0x07, 0x65, 0xd3, 0xde, 0x77, 0x02,
0x1a, 0x5d, 0x99, 0x20, 0x8a, 0x64, 0x2d, 0x06, 0x8c, 0x1c, 0x40, 0x81, 0xf2, 0xea, 0x1f, 0xe0,
0xfe, 0xe1, 0xc8, 0x31, 0xa9, 0x9a, 0x22, 0x53, 0x7c, 0x47, 0x32, 0x85, 0x1c, 0xe3, 0xdb, 0xdc,
0x42, 0xae, 0x8b, 0x29, 0x3e, 0xb0, 0x7d, 0xf7, 0x44, 0x5b, 0xec, 0x27, 0xfb, 0x3b, 0x7d, 0x58,
0x96, 0x03, 0xa3, 0x16, 0x14, 0x0f, 0xf1, 0x09, 0xdd, 0x72, 0x4d, 0x23, 0xff, 0xa2, 0x7b, 0x50,
0x3e, 0xd2, 0xad, 0x31, 0xe6, 0x3a, 0x61, 0x0a, 0xe7, 0x32, 0xd8, 0x77, 0x0a, 0x6f, 0x29, 0xea,
0x10, 0x2e, 0x3d, 0xc4, 0x7e, 0xd7, 0xf6, 0xb0, 0xeb, 0xaf, 0x99, 0xb6, 0xe5, 0x0c, 0xb6, 0x75,
0xff, 0x60, 0x06, 0xe5, 0x10, 0x93, 0xf3, 0x42, 0x42, 0xce, 0xd5, 0x1f, 0x2a, 0xf0, 0xa2, 0x7c,
0x3d, 0x7e, 0xa0, 0x1d, 0xa8, 0xee, 0x9b, 0xd8, 0x32, 0x08, 0xd7, 0x28, 0x94, 0x6b, 0x44, 0x9b,
0x28, 0x89, 0x11, 0x01, 0xe6, 0xe7, 0x96, 0x50, 0x12, 0xc2, 0x1f, 0xdd, 0xf1, 0x5d, 0xd3, 0x1e,
0x6c, 0x9a, 0x9e, 0xaf, 0x31, 0xf8, 0x08, 0x97, 0x14, 0xf3, 0x0b, 0xe7, 0x6f, 0x28, 0x70, 0xe5,
0x21, 0xf6, 0xd7, 0x85, 0x8d, 0x21, 0xdf, 0x4d, 0xcf, 0x37, 0xfb, 0xde, 0xb3, 0xf5, 0x4f, 0x73,
0x38, 0x1b, 0xea, 0xef, 0x28, 0x70, 0x35, 0x13, 0x19, 0x4e, 0x3a, 0xae, 0x43, 0x03, 0x0b, 0x23,
0xd7, 0xa1, 0x3f, 0x87, 0x4f, 0x9e, 0x90, 0xc3, 0xdf, 0xd6, 0x4d, 0x97, 0xe9, 0xd0, 0x33, 0x5a,
0x94, 0x1f, 0x29, 0x70, 0xf9, 0x21, 0xf6, 0xb7, 0x03, 0xfb, 0xfa, 0x35, 0x52, 0x87, 0xc0, 0x44,
0xec, 0x7c, 0xe0, 0x04, 0xc7, 0xfa, 0xd4, 0xdf, 0x66, 0xc7, 0x29, 0xc5, 0xf7, 0x6b, 0x21, 0xe0,
0x15, 0x2a, 0x09, 0x11, 0x15, 0xc1, 0x85, 0x9d, 0x93, 0x4f, 0xfd, 0xb2, 0x0c, 0x8d, 0x27, 0x5c,
0x2b, 0x50, 0x0b, 0x9a, 0xa4, 0x84, 0x22, 0x77, 0x82, 0x22, 0xde, 0x94, 0xcc, 0xc1, 0x5a, 0x83,
0x79, 0x0f, 0xe3, 0xc3, 0x53, 0xda, 0xcb, 0x06, 0x19, 0x23, 0x8c, 0xdd, 0x26, 0x2c, 0x8e, 0x6d,
0xea, 0x95, 0x63, 0x83, 0x6f, 0x80, 0x11, 0x7d, 0xba, 0x32, 0x4d, 0x0f, 0x44, 0x1f, 0xf2, 0x00,
0x25, 0x32, 0x57, 0x39, 0xd7, 0x5c, 0xc9, 0x61, 0xa8, 0x0b, 0x2d, 0xc3, 0x75, 0x46, 0x23, 0x6c,
0xf4, 0xbc, 0x60, 0xaa, 0x4a, 0xbe, 0xa9, 0xf8, 0x38, 0x31, 0xd5, 0x5d, 0x38, 0x9f, 0xc4, 0xb4,
0x6b, 0x10, 0xbf, 0x90, 0x70, 0x96, 0xec, 0x13, 0x7a, 0x0d, 0x16, 0xd3, 0xf0, 0x55, 0x0a, 0x9f,
0xfe, 0x80, 0x5e, 0x07, 0x94, 0x40, 0x95, 0x80, 0xd7, 0x18, 0x78, 0x1c, 0x19, 0x0e, 0x4e, 0x03,
0xe7, 0x38, 0x38, 0x30, 0x70, 0xfe, 0x25, 0x02, 0xde, 0x25, 0xd6, 0x35, 0x06, 0xee, 0xb5, 0xeb,
0xf9, 0x08, 0x11, 0x9f, 0xcc, 0x53, 0x7f, 0x5d, 0x81, 0xe5, 0x8f, 0x75, 0xbf, 0x7f, 0xb0, 0x31,
0x9c, 0x3d, 0xb8, 0x7b, 0x0f, 0x6a, 0x47, 0x22, 0x84, 0x63, 0x5a, 0xfc, 0xaa, 0x04, 0xa1, 0x28,
0xdb, 0x6b, 0xe1, 0x08, 0xf5, 0xef, 0x14, 0x1e, 0x66, 0x06, 0xd8, 0x7d, 0xf5, 0xaa, 0x66, 0x5a,
0xb4, 0x9d, 0x10, 0xc0, 0x72, 0x4a, 0x00, 0xd5, 0xa7, 0x00, 0x1c, 0xfd, 0x2d, 0x6f, 0x70, 0x06,
0xcc, 0xdf, 0x82, 0x39, 0xbe, 0x1e, 0xd7, 0x36, 0xd3, 0x8e, 0x34, 0x00, 0x57, 0xff, 0xbb, 0x02,
0xf5, 0xc8, 0x07, 0xd4, 0x84, 0x82, 0x50, 0x23, 0x05, 0xc9, 0xfe, 0x0b, 0xd3, 0xa3, 0xac, 0x62,
0x3a, 0xca, 0xba, 0x09, 0x4d, 0x93, 0x9a, 0xf7, 0x1e, 0xdf, 0x35, 0xf5, 0xa6, 0x6b, 0xda, 0x3c,
0xeb, 0xe5, 0x4c, 0x84, 0xae, 0x40, 0xdd, 0x1e, 0x0f, 0x7b, 0xce, 0x7e, 0xcf, 0x75, 0x8e, 0x3d,
0x1e, 0xae, 0xd5, 0xec, 0xf1, 0xf0, 0xa3, 0x7d, 0xcd, 0x39, 0xf6, 0xc2, 0x88, 0xa0, 0x72, 0xca,
0x88, 0xe0, 0x0a, 0xd4, 0x87, 0xfa, 0x53, 0x32, 0x6b, 0xcf, 0x1e, 0x0f, 0x69, 0x24, 0x57, 0xd4,
0x6a, 0x43, 0xfd, 0xa9, 0xe6, 0x1c, 0x3f, 0x1a, 0x0f, 0xd1, 0x0a, 0xb4, 0x2c, 0xdd, 0xf3, 0x7b,
0xd1, 0x50, 0xb0, 0x4a, 0x43, 0xc1, 0x26, 0xe9, 0xff, 0x20, 0x0c, 0x07, 0xd3, 0xb1, 0x45, 0xed,
0x6c, 0xb1, 0x85, 0x31, 0xb4, 0xc2, 0x39, 0x20, 0x57, 0x6c, 0x61, 0x0c, 0x2d, 0x31, 0xc3, 0x5b,
0x30, 0xb7, 0x47, 0x5d, 0xa5, 0x49, 0x42, 0xfc, 0x80, 0x78, 0x49, 0xcc, 0xa3, 0xd2, 0x02, 0x70,
0xf4, 0x2d, 0xa8, 0x51, 0x0b, 0x45, 0xc7, 0x36, 0x72, 0x8d, 0x0d, 0x07, 0x90, 0xd1, 0x06, 0xb6,
0x7c, 0x9d, 0x8e, 0x9e, 0xcf, 0x37, 0x5a, 0x0c, 0x20, 0x1a, 0xb4, 0xef, 0x62, 0xdd, 0xc7, 0xc6,
0xda, 0xc9, 0xba, 0x33, 0x1c, 0xe9, 0x94, 0x85, 0xda, 0x4d, 0xea, 0xe4, 0xcb, 0x3e, 0xa1, 0x97,
0xa0, 0xd9, 0x17, 0xad, 0x07, 0xae, 0x33, 0x6c, 0x2f, 0x50, 0xf9, 0x4a, 0xf4, 0xa2, 0xcb, 0x00,
0x81, 0xee, 0xd4, 0xfd, 0x76, 0x8b, 0x9e, 0x5d, 0x8d, 0xf7, 0xdc, 0xa7, 0xf9, 0x1d, 0xd3, 0xeb,
0xb1, 0x4c, 0x8a, 0x69, 0x0f, 0xda, 0x8b, 0x74, 0xc5, 0x7a, 0x90, 0x7a, 0x31, 0xed, 0x01, 0xba,
0x00, 0x73, 0xa6, 0xd7, 0xdb, 0xd7, 0x0f, 0x71, 0x1b, 0xd1, 0xaf, 0x15, 0xd3, 0x7b, 0xa0, 0x1f,
0x52, 0xef, 0x95, 0x2f, 0x86, 0x8d, 0xf6, 0x79, 0xfa, 0x29, 0xec, 0x40, 0x6f, 0x42, 0xd9, 0xc2,
0x47, 0xd8, 0x6a, 0x2f, 0x51, 0x9e, 0xbc, 0x9a, 0x2d, 0x78, 0x9b, 0x04, 0x4c, 0x63, 0xd0, 0xea,
0xe7, 0xb0, 0x14, 0x32, 0x6a, 0x84, 0x33, 0xd2, 0xfc, 0xa5, 0x9c, 0x81, 0xbf, 0x26, 0x3b, 0xdc,
0xff, 0x59, 0x82, 0xe5, 0x1d, 0xfd, 0x08, 0x3f, 0x7f, 0xdf, 0x3e, 0x97, 0xfa, 0xdc, 0x84, 0x45,
0xea, 0xce, 0xaf, 0x46, 0xf0, 0x99, 0xe0, 0x39, 0x44, 0x59, 0x2b, 0x3d, 0x10, 0x7d, 0x9b, 0x28,
0x5b, 0xdc, 0x3f, 0xdc, 0x26, 0xa1, 0x51, 0xe0, 0x35, 0x5c, 0x96, 0xcc, 0xb3, 0x2e, 0xa0, 0xb4,
0xe8, 0x08, 0xb4, 0x0d, 0x0b, 0xf1, 0x13, 0x08, 0xfc, 0x85, 0x97, 0x27, 0xc6, 0xcd, 0x21, 0xf5,
0xb5, 0x66, 0xec, 0x30, 0x3c, 0xd4, 0x86, 0x39, 0x6e, 0xec, 0xa9, 0xe6, 0xa9, 0x6a, 0x41, 0x13,
0x6d, 0xc3, 0x79, 0xb6, 0x83, 0x1d, 0x2e, 0x60, 0x6c, 0xf3, 0xd5, 0x5c, 0x9b, 0x97, 0x0d, 0x8d,
0xcb, 0x67, 0xed, 0xb4, 0xf2, 0xd9, 0x86, 0x39, 0x2e, 0x33, 0x54, 0x25, 0x55, 0xb5, 0xa0, 0x49,
0x8e, 0x39, 0x94, 0x9e, 0x3a, 0x13, 0x02, 0xd1, 0x41, 0xc6, 0x05, 0x8a, 0xbd, 0x41, 0x15, 0x7b,
0xd0, 0x54, 0x7f, 0x55, 0x01, 0x08, 0x29, 0x3d, 0x25, 0xe3, 0xf3, 0x36, 0x54, 0x05, 0xdb, 0xe7,
0x0a, 0x5a, 0x05, 0x78, 0xd2, 0x74, 0x14, 0x13, 0xa6, 0x43, 0xfd, 0x47, 0x05, 0x1a, 0x1b, 0x64,
0x9f, 0x9b, 0xce, 0x80, 0x1a, 0xba, 0x9b, 0xd0, 0x74, 0x71, 0xdf, 0x71, 0x8d, 0x1e, 0xb6, 0x7d,
0xd7, 0xc4, 0x2c, 0x5b, 0x50, 0xd2, 0xe6, 0x59, 0xef, 0x07, 0xac, 0x93, 0x80, 0x11, 0x6b, 0xe0,
0xf9, 0xfa, 0x70, 0xd4, 0xdb, 0x27, 0xfa, 0x87, 0x25, 0xa0, 0xe7, 0x45, 0x2f, 0x55, 0x3f, 0xdf,
0x80, 0x46, 0x08, 0xe6, 0x3b, 0x74, 0xfd, 0x92, 0x56, 0x17, 0x7d, 0xbb, 0x0e, 0xba, 0x01, 0x4d,
0x4a, 0xe8, 0x9e, 0xe5, 0x0c, 0x7a, 0x24, 0x06, 0xe5, 0x36, 0xb0, 0x61, 0x70, 0xb4, 0xc8, 0x01,
0xc6, 0xa1, 0x3c, 0xf3, 0x73, 0xcc, 0xad, 0xa0, 0x80, 0xda, 0x31, 0x3f, 0xc7, 0xea, 0xaf, 0x28,
0x30, 0xcf, 0x8d, 0xe6, 0x8e, 0xa8, 0x14, 0xd0, 0xf4, 0x29, 0x8b, 0xff, 0xe9, 0xff, 0xe8, 0x9d,
0x78, 0x02, 0xed, 0x86, 0x54, 0x08, 0xe8, 0x24, 0xd4, 0x99, 0x8b, 0x59, 0xcc, 0x3c, 0x01, 0xe8,
0x17, 0x84, 0xa6, 0xba, 0xaf, 0x3f, 0x72, 0x0c, 0x96, 0xcf, 0x6b, 0xc3, 0x9c, 0x6e, 0x18, 0x2e,
0xf6, 0x3c, 0x8e, 0x47, 0xd0, 0x24, 0x5f, 0x8e, 0xb0, 0xeb, 0x05, 0x07, 0x5b, 0xd4, 0x82, 0x26,
0xfa, 0x56, 0x22, 0x81, 0x5f, 0x5f, 0xbd, 0x96, 0x8d, 0x27, 0x0f, 0x97, 0xc2, 0x14, 0xff, 0x5f,
0x17, 0xa0, 0xc9, 0x65, 0x70, 0x8d, 0xdb, 0xb7, 0xc9, 0x2c, 0xb6, 0x06, 0x8d, 0xfd, 0x90, 0xf7,
0x27, 0xa5, 0x7b, 0xa2, 0x22, 0x12, 0x1b, 0x33, 0x8d, 0xd7, 0xe2, 0x16, 0xb6, 0x34, 0x93, 0x85,
0x2d, 0x9f, 0x56, 0x82, 0xd3, 0x9e, 0x56, 0x45, 0xe2, 0x69, 0xa9, 0xbf, 0x00, 0xf5, 0xc8, 0x04,
0x54, 0x43, 0xb1, 0x8c, 0x0a, 0xa7, 0x58, 0xd0, 0x44, 0xf7, 0x42, 0x3f, 0x83, 0x91, 0xea, 0xa2,
0x04, 0x97, 0x84, 0x8b, 0xa1, 0xfe, 0x54, 0x81, 0x0a, 0x9f, 0xf9, 0x2a, 0xd4, 0xb9, 0x7c, 0x51,
0xcf, 0x8b, 0xcd, 0x0e, 0xbc, 0x8b, 0xb8, 0x5e, 0xcf, 0x4e, 0xc0, 0x2e, 0x42, 0x35, 0x21, 0x5a,
0x73, 0x5c, 0x2d, 0x06, 0x9f, 0x22, 0xf2, 0x44, 0x3e, 0x11, 0x51, 0x42, 0x4b, 0x50, 0xb6, 0x9c,
0x81, 0xa8, 0xb6, 0xb0, 0x86, 0xfa, 0x33, 0x85, 0x26, 0xc7, 0x35, 0xdc, 0x77, 0x8e, 0xb0, 0x7b,
0x32, 0x7b, 0x7e, 0xf1, 0xdd, 0x08, 0x9b, 0xe7, 0x0c, 0x72, 0xc4, 0x00, 0xf4, 0x6e, 0x78, 0x08,
0x45, 0x59, 0x1a, 0x22, 0x6a, 0x8a, 0x38, 0x93, 0x86, 0x87, 0xf1, 0xbb, 0x0a, 0xcd, 0x94, 0xc6,
0xb7, 0x72, 0x56, 0x6b, 0xff, 0x4c, 0xc2, 0x01, 0xf5, 0x1f, 0x14, 0xb8, 0x98, 0x41, 0xdd, 0x27,
0xab, 0x5f, 0x03, 0x7d, 0xdf, 0x81, 0xaa, 0x08, 0x89, 0x8b, 0xb9, 0x42, 0x62, 0x01, 0xaf, 0xfe,
0x01, 0xcb, 0xd7, 0x4b, 0xc8, 0xfb, 0x64, 0xf5, 0x39, 0x11, 0x38, 0x99, 0xda, 0x2a, 0x4a, 0x52,
0x5b, 0xff, 0xa4, 0x40, 0x27, 0x4c, 0x25, 0x79, 0x6b, 0x27, 0xb3, 0x16, 0x78, 0x9e, 0x4d, 0x20,
0xf8, 0xb6, 0xa8, 0x45, 0x10, 0xbd, 0x98, 0x2b, 0x84, 0x0b, 0x2a, 0x11, 0x36, 0xcd, 0x4a, 0xa7,
0x37, 0x34, 0x8b, 0x54, 0x76, 0x22, 0x07, 0xcf, 0xea, 0x11, 0xe1, 0xc1, 0xfe, 0x94, 0x31, 0xe9,
0x83, 0x78, 0x3e, 0xe9, 0xeb, 0x26, 0x60, 0xb4, 0x46, 0x72, 0xc0, 0x6b, 0x24, 0xa5, 0x44, 0x8d,
0x84, 0xf7, 0xab, 0x43, 0xca, 0x02, 0xa9, 0x0d, 0x3c, 0x2f, 0x82, 0xfd, 0x9a, 0x02, 0x6d, 0xbe,
0x0a, 0xab, 0xfb, 0x3b, 0xc3, 0x91, 0x85, 0x7d, 0x6c, 0x7c, 0xd5, 0x39, 0x8d, 0xbf, 0x2c, 0x40,
0x2b, 0xea, 0xd8, 0x50, 0xdf, 0xe4, 0x4d, 0x28, 0xd3, 0xa4, 0x11, 0xc7, 0x60, 0xaa, 0x76, 0x60,
0xd0, 0xc4, 0x32, 0x52, 0x6f, 0x7e, 0xd7, 0x0b, 0x1c, 0x17, 0xde, 0x0c, 0xbd, 0xab, 0xe2, 0xe9,
0xbd, 0xab, 0x17, 0xa1, 0x46, 0x2c, 0x97, 0x33, 0x26, 0xf3, 0xb2, 0xc2, 0x75, 0xd8, 0x81, 0xde,
0x83, 0x0a, 0xbb, 0x2a, 0xc3, 0xeb, 0x86, 0x37, 0xe3, 0x53, 0xf3, 0x6b, 0x34, 0x91, 0xbc, 0x3f,
0xed, 0xd0, 0xf8, 0x20, 0x72, 0x46, 0x23, 0xd7, 0x19, 0x50, 0x37, 0x8c, 0x18, 0xb5, 0xb2, 0x26,
0xda, 0xc4, 0x4d, 0x74, 0x46, 0xdd, 0x0d, 0x9e, 0x01, 0xa1, 0xff, 0xab, 0xff, 0x1f, 0x96, 0xc3,
0x80, 0x9b, 0xa1, 0x79, 0x56, 0x26, 0x57, 0xff, 0x55, 0x81, 0xf3, 0x3b, 0x27, 0x76, 0x3f, 0x29,
0x2e, 0xcb, 0x50, 0x19, 0x59, 0x7a, 0x98, 0xa1, 0xe6, 0x2d, 0x5a, 0xfd, 0x0f, 0x42, 0x69, 0x62,
0xd6, 0x19, 0x8d, 0xeb, 0xa2, 0x6f, 0xd7, 0x99, 0xea, 0x6d, 0xdd, 0x14, 0x19, 0x02, 0x6c, 0x30,
0x07, 0x82, 0x65, 0xe0, 0xe6, 0x45, 0x2f, 0x75, 0x20, 0xde, 0x03, 0xa0, 0x3e, 0x56, 0xef, 0x34,
0x7e, 0x15, 0x1d, 0xb1, 0x49, 0xac, 0xe8, 0x8f, 0x0b, 0xd0, 0x8e, 0x50, 0xe9, 0xab, 0x76, 0x39,
0x33, 0x02, 0xc5, 0xe2, 0x33, 0x0a, 0x14, 0x4b, 0xb3, 0xbb, 0x99, 0x65, 0x99, 0x9b, 0xf9, 0x83,
0x22, 0x34, 0x43, 0xaa, 0x6d, 0x5b, 0xba, 0x9d, 0xc9, 0x09, 0x3b, 0xd0, 0xf4, 0x62, 0x54, 0xe5,
0x74, 0x7a, 0x55, 0x26, 0x57, 0x19, 0x07, 0xa1, 0x25, 0xa6, 0x40, 0x97, 0xe9, 0xa1, 0xbb, 0x3e,
0xcb, 0xe8, 0x31, 0x9f, 0xb1, 0xc6, 0x04, 0xd8, 0x1c, 0x62, 0xf4, 0x1a, 0x20, 0x2e, 0x75, 0x3d,
0xd3, 0xee, 0x79, 0xb8, 0xef, 0xd8, 0x06, 0x93, 0xc7, 0xb2, 0xd6, 0xe2, 0x5f, 0xba, 0xf6, 0x0e,
0xeb, 0x47, 0x6f, 0x42, 0xc9, 0x3f, 0x19, 0x31, 0x07, 0xb2, 0x29, 0x75, 0xc1, 0x42, 0xbc, 0x76,
0x4f, 0x46, 0x58, 0xa3, 0xe0, 0xc1, 0x0d, 0x2a, 0xdf, 0xd5, 0x8f, 0xb8, 0x37, 0x5e, 0xd2, 0x22,
0x3d, 0xd1, 0xd8, 0x79, 0x2e, 0x16, 0x3b, 0x33, 0xce, 0x0e, 0x84, 0xbc, 0xe7, 0xfb, 0x16, 0xcd,
0x49, 0x52, 0xce, 0x0e, 0x7a, 0x77, 0x7d, 0x8b, 0x6c, 0xd2, 0x77, 0x7c, 0xdd, 0x62, 0xf2, 0x51,
0xe3, 0xda, 0x84, 0xf4, 0xd0, 0xc8, 0xf7, 0x5f, 0x88, 0x36, 0x14, 0x88, 0x69, 0xd8, 0x1b, 0x5b,
0xd9, 0xf2, 0x38, 0x39, 0x9b, 0x33, 0x4d, 0x14, 0xbf, 0x0d, 0x75, 0xce, 0x15, 0xa7, 0xe0, 0x2a,
0x60, 0x43, 0x36, 0x27, 0xb0, 0x79, 0xf9, 0x19, 0xb1, 0x79, 0xe5, 0x0c, 0xf9, 0x10, 0xf9, 0xd9,
0xa8, 0x3f, 0x54, 0xe0, 0x85, 0x94, 0xd6, 0x9c, 0x48, 0xda, 0xc9, 0xd1, 0x38, 0xd7, 0xa6, 0xc9,
0x29, 0xb9, 0xbd, 0x78, 0x17, 0x2a, 0x2e, 0x9d, 0x9d, 0x57, 0xe6, 0xae, 0x4f, 0x64, 0x3e, 0x86,
0x88, 0xc6, 0x87, 0xa8, 0xbf, 0xa7, 0xc0, 0x85, 0x34, 0xaa, 0x33, 0x38, 0x01, 0x6b, 0x30, 0xc7,
0xa6, 0x0e, 0x64, 0x74, 0x65, 0xb2, 0x8c, 0x86, 0xc4, 0xd1, 0x82, 0x81, 0xea, 0x0e, 0x2c, 0x07,
0xbe, 0x42, 0x48, 0xfa, 0x2d, 0xec, 0xeb, 0x13, 0x62, 0xd1, 0xab, 0x50, 0x67, 0x41, 0x0d, 0x8b,
0xf1, 0x58, 0x21, 0x13, 0xf6, 0x44, 0xf2, 0x4f, 0xfd, 0xfd, 0x02, 0x2c, 0x51, 0x63, 0x9b, 0xac,
0x4a, 0xe5, 0x29, 0x93, 0xaa, 0xe2, 0x22, 0xda, 0x23, 0x7d, 0xc8, 0x2f, 0xcb, 0xd4, 0xb4, 0x58,
0x1f, 0xea, 0xa6, 0x73, 0x83, 0xd2, 0x9c, 0x45, 0x58, 0x17, 0xde, 0xd0, 0x7d, 0x9d, 0x96, 0x85,
0x93, 0x49, 0xc1, 0xd0, 0xc8, 0x97, 0xce, 0x62, 0xe4, 0x5f, 0x81, 0x16, 0x4b, 0x97, 0xf7, 0x44,
0x08, 0x4c, 0x15, 0x53, 0x49, 0x5b, 0x60, 0xfd, 0xbb, 0x41, 0xb7, 0xba, 0x09, 0x2f, 0x24, 0x88,
0x32, 0xc3, 0xe1, 0xab, 0x7f, 0xa6, 0x90, 0x93, 0x8b, 0xdd, 0x4f, 0x3a, 0xbb, 0x4f, 0x7c, 0x59,
0x54, 0xce, 0x7a, 0xa6, 0x91, 0xd4, 0x37, 0x06, 0x7a, 0x1f, 0x6a, 0x36, 0x3e, 0xee, 0x45, 0xdd,
0xac, 0x1c, 0x01, 0x43, 0xd5, 0xc6, 0xc7, 0xf4, 0x3f, 0xf5, 0x11, 0x5c, 0x48, 0xa1, 0x3a, 0xcb,
0xde, 0xff, 0x46, 0x81, 0x8b, 0x1b, 0xae, 0x33, 0x7a, 0x62, 0xba, 0xfe, 0x58, 0xb7, 0xe2, 0xc5,
0xf9, 0x33, 0x6c, 0x3f, 0xc7, 0xdd, 0xc7, 0x0f, 0x53, 0xa1, 0xe9, 0x6b, 0x12, 0x61, 0x4b, 0x23,
0xc5, 0x37, 0x1d, 0x71, 0xcf, 0xff, 0xa3, 0x28, 0x43, 0x9e, 0xc3, 0x4d, 0x71, 0x61, 0xf2, 0xc4,
0x2e, 0xd2, 0x34, 0x7e, 0xf1, 0xac, 0x69, 0xfc, 0x0c, 0x4b, 0x50, 0x7a, 0x46, 0x96, 0xe0, 0xd4,
0x79, 0xb5, 0x75, 0x88, 0x97, 0x58, 0xa8, 0x21, 0x3f, 0x6d, 0x59, 0xe6, 0x3d, 0x80, 0xb0, 0xd2,
0xc0, 0xef, 0x93, 0x4e, 0x99, 0x21, 0x32, 0x80, 0x9c, 0x91, 0xb0, 0xb5, 0xdc, 0x15, 0x88, 0x64,
0xb8, 0xbf, 0x0b, 0x1d, 0x19, 0x6f, 0xce, 0xc2, 0xef, 0xff, 0x56, 0x00, 0xe8, 0x8a, 0xdb, 0xc7,
0x67, 0x33, 0x16, 0xd7, 0x21, 0xe2, 0xae, 0x84, 0x52, 0x1e, 0xe5, 0x1d, 0x83, 0x08, 0x82, 0x08,
0x72, 0x09, 0x4c, 0x2a, 0xf0, 0x35, 0xe8, 0x3c, 0x11, 0x59, 0x61, 0xac, 0x90, 0xd4, 0xcf, 0x97,
0xa0, 0xe6, 0x3a, 0xc7, 0x3d, 0x22, 0x5c, 0x46, 0x70, 0xbd, 0xda, 0x75, 0x8e, 0x89, 0xc8, 0x19,
0xe8, 0x02, 0xcc, 0xf9, 0xba, 0x77, 0x48, 0xe6, 0x67, 0xb9, 0xbe, 0x0a, 0x69, 0x76, 0x0d, 0xb4,
0x04, 0xe5, 0x7d, 0xd3, 0xc2, 0xec, 0x26, 0x47, 0x4d, 0x63, 0x0d, 0xf4, 0xcd, 0xe0, 0x46, 0x60,
0x35, 0xf7, 0xcd, 0x1f, 0x76, 0x29, 0xf0, 0x3a, 0xcc, 0x13, 0x4e, 0x22, 0x48, 0x30, 0xb1, 0x6e,
0xf1, 0x3c, 0x3f, 0xef, 0xa4, 0x15, 0xff, 0x9f, 0x29, 0xb0, 0x10, 0x92, 0x96, 0xea, 0x26, 0xa2,
0xee, 0xa8, 0xaa, 0x5b, 0x77, 0x0c, 0xa6, 0x45, 0x9a, 0x19, 0x76, 0x85, 0x0d, 0x64, 0x0a, 0x2d,
0x1c, 0x32, 0x29, 0x38, 0x27, 0x9b, 0x27, 0x94, 0x31, 0x8d, 0x20, 0x5d, 0x54, 0x71, 0x9d, 0xe3,
0xae, 0x21, 0x48, 0xc6, 0x2e, 0x58, 0xb3, 0x50, 0x94, 0x90, 0x6c, 0x9d, 0xde, 0xb1, 0xbe, 0x0e,
0xf3, 0xd8, 0x75, 0x1d, 0xb7, 0x37, 0xc4, 0x9e, 0xa7, 0x0f, 0x82, 0xbb, 0x0b, 0x0d, 0xda, 0xb9,
0xc5, 0xfa, 0xd4, 0xbf, 0x2d, 0x41, 0x33, 0xdc, 0x4a, 0x70, 0x8b, 0xc0, 0x34, 0x82, 0x5b, 0x04,
0x26, 0x39, 0x5f, 0x70, 0x99, 0x96, 0x14, 0x1c, 0xb0, 0x56, 0x68, 0x2b, 0x5a, 0x8d, 0xf7, 0x76,
0x0d, 0x62, 0xdc, 0x09, 0x81, 0x6c, 0xc7, 0xc0, 0x21, 0x07, 0x40, 0xd0, 0xc5, 0x19, 0x20, 0xc6,
0x48, 0xa5, 0x1c, 0x8c, 0x54, 0xce, 0xc1, 0x48, 0x15, 0x09, 0x23, 0x2d, 0x43, 0x65, 0x6f, 0xdc,
0x3f, 0xc4, 0x3e, 0xf7, 0xfb, 0x78, 0x2b, 0xce, 0x60, 0xd5, 0x04, 0x83, 0x09, 0x3e, 0xaa, 0x45,
0xf9, 0xe8, 0x12, 0xd4, 0x02, 0x4b, 0xed, 0xd1, 0xaa, 0x5a, 0x51, 0xab, 0x72, 0x13, 0xed, 0xa1,
0xb7, 0x02, 0xa7, 0xb0, 0x4e, 0x25, 0x4a, 0x95, 0x28, 0xa4, 0x04, 0x97, 0x04, 0x2e, 0xe1, 0xcb,
0xb0, 0x10, 0x21, 0x07, 0xe5, 0x33, 0x56, 0x7a, 0x8b, 0xc4, 0x0c, 0xd4, 0x82, 0xdc, 0x84, 0x66,
0x48, 0x12, 0x0a, 0x37, 0xcf, 0x42, 0x35, 0xd1, 0x4b, 0xc1, 0x04, 0xbb, 0x37, 0x4f, 0xc9, 0xee,
0x17, 0xa1, 0xca, 0x63, 0x2c, 0xaf, 0xbd, 0x10, 0x4f, 0x91, 0xe4, 0x92, 0x84, 0x4f, 0x01, 0x85,
0x5b, 0x9c, 0xcd, 0x31, 0x4d, 0xf0, 0x50, 0x21, 0xc9, 0x43, 0xea, 0x9f, 0x2b, 0xb0, 0x18, 0x5d,
0xec, 0xac, 0x86, 0xfb, 0x7d, 0xa8, 0xb3, 0xe2, 0x67, 0x8f, 0xa8, 0x10, 0x79, 0xad, 0x32, 0x71,
0x78, 0x1a, 0x84, 0xef, 0x38, 0x08, 0x61, 0x8e, 0x1d, 0xf7, 0xd0, 0xb4, 0x07, 0x3d, 0x82, 0x99,
0x48, 0xe1, 0xf2, 0xce, 0x47, 0xa4, 0x4f, 0xfd, 0x4d, 0x05, 0xae, 0x3c, 0x1e, 0x19, 0xba, 0x8f,
0x23, 0x1e, 0xcc, 0xac, 0xd7, 0x29, 0xc5, 0x7d, 0xc6, 0xc2, 0x84, 0x63, 0x8e, 0xac, 0xe7, 0xf1,
0xfb, 0x8c, 0xc4, 0xef, 0xe3, 0xd8, 0xa4, 0x2e, 0x20, 0x9f, 0x1d, 0x9b, 0x0e, 0x54, 0x8f, 0xf8,
0x74, 0xc1, 0xcb, 0x94, 0xa0, 0x1d, 0x2b, 0x06, 0x17, 0x4f, 0x55, 0x0c, 0x56, 0xb7, 0xe0, 0xa2,
0x86, 0x3d, 0x6c, 0x1b, 0xb1, 0x8d, 0x9c, 0x39, 0xa9, 0x35, 0x82, 0x8e, 0x6c, 0xba, 0x59, 0x38,
0x95, 0x39, 0xbe, 0x3d, 0x97, 0x4c, 0xeb, 0x73, 0x65, 0x4d, 0xfc, 0x2d, 0xba, 0x8e, 0xaf, 0xfe,
0x45, 0x01, 0x2e, 0xdc, 0x37, 0x0c, 0xae, 0xe7, 0xb9, 0x2b, 0xf7, 0xbc, 0xbc, 0xec, 0xa4, 0x17,
0x5a, 0x4c, 0x7b, 0xa1, 0xcf, 0x4a, 0xf7, 0x72, 0x2b, 0x64, 0x8f, 0x87, 0x81, 0x09, 0x76, 0xd9,
0x05, 0xac, 0x77, 0x79, 0xc9, 0xb4, 0x67, 0x39, 0x03, 0x6a, 0x86, 0xa7, 0x3b, 0x67, 0xd5, 0x20,
0x39, 0xa7, 0x8e, 0xa0, 0x9d, 0x26, 0xd6, 0x8c, 0x7a, 0x24, 0xa0, 0xc8, 0xc8, 0x61, 0x89, 0xdf,
0x06, 0xf1, 0xc4, 0x68, 0xd7, 0xb6, 0xe3, 0xa9, 0xff, 0x55, 0x80, 0xf6, 0x8e, 0x7e, 0x84, 0xff,
0xef, 0x1c, 0xd0, 0x27, 0xb0, 0xe4, 0xe9, 0x47, 0xb8, 0x17, 0x09, 0xc0, 0x7b, 0x2e, 0xfe, 0x8c,
0x3b, 0xb1, 0xaf, 0xc8, 0x52, 0xf3, 0xd2, 0x1b, 0x46, 0xda, 0xa2, 0x17, 0xeb, 0xd7, 0xf0, 0x67,
0xe8, 0x25, 0x58, 0x88, 0xde, 0x86, 0x23, 0xa8, 0x55, 0x29, 0xc9, 0xe7, 0x23, 0x37, 0xde, 0xba,
0x86, 0xfa, 0x19, 0xbc, 0xf8, 0xd8, 0xf6, 0xb0, 0xdf, 0x0d, 0x6f, 0x6d, 0xcd, 0x18, 0x7f, 0x5e,
0x85, 0x7a, 0x48, 0xf8, 0xd4, 0x93, 0x14, 0xc3, 0x53, 0x1d, 0xe8, 0x6c, 0xe9, 0xee, 0x61, 0x90,
0xce, 0xde, 0x60, 0xb7, 0x61, 0x9e, 0xe3, 0x82, 0xfb, 0xe2, 0x5e, 0x98, 0x86, 0xf7, 0xb1, 0x8b,
0xed, 0x3e, 0xde, 0x74, 0xfa, 0x87, 0xc4, 0x21, 0xf1, 0xd9, 0xab, 0x40, 0x25, 0xe2, 0xbb, 0x6e,
0x44, 0x1e, 0xfd, 0x15, 0x62, 0x8f, 0xfe, 0xa6, 0x3c, 0x70, 0x55, 0x7f, 0x54, 0x80, 0xe5, 0xfb,
0x96, 0x8f, 0xdd, 0x30, 0xc3, 0x70, 0x9a, 0x64, 0x49, 0x98, 0xbd, 0x28, 0x9c, 0x25, 0x7b, 0x91,
0xa3, 0x82, 0x29, 0xcb, 0xb5, 0x94, 0xce, 0x98, 0x6b, 0xb9, 0x0f, 0x30, 0x72, 0x9d, 0x11, 0x76,
0x7d, 0x13, 0x07, 0xb1, 0x5f, 0x0e, 0x07, 0x27, 0x32, 0x48, 0xfd, 0x04, 0x5a, 0x0f, 0xfb, 0xeb,
0x8e, 0xbd, 0x6f, 0xba, 0xc3, 0x80, 0x50, 0x29, 0xa1, 0x53, 0x72, 0x08, 0x5d, 0x21, 0x25, 0x74,
0xaa, 0x09, 0x8b, 0x91, 0xb9, 0x67, 0x54, 0x5c, 0x83, 0x7e, 0x6f, 0xdf, 0xb4, 0x4d, 0x7a, 0xdb,
0xac, 0x40, 0x1d, 0x54, 0x18, 0xf4, 0x1f, 0xf0, 0x1e, 0xf5, 0x4b, 0x05, 0x2e, 0x69, 0x98, 0x08,
0x4f, 0x70, 0x71, 0x67, 0xd7, 0xdf, 0xf2, 0x06, 0x33, 0x38, 0x14, 0xf7, 0xa0, 0x34, 0xf4, 0x06,
0x19, 0x45, 0x77, 0x62, 0xa2, 0x63, 0x0b, 0x69, 0x14, 0x58, 0xfd, 0x89, 0x02, 0x4b, 0x41, 0x69,
0x32, 0x26, 0xc2, 0x71, 0xb6, 0x55, 0x52, 0x57, 0xa9, 0x27, 0xbc, 0x04, 0xbe, 0x00, 0x73, 0xc6,
0x5e, 0x54, 0x41, 0x56, 0x8c, 0x3d, 0xaa, 0x1b, 0x25, 0x9e, 0x72, 0x49, 0xea, 0x29, 0x27, 0x19,
0xbf, 0x2c, 0xb9, 0xf3, 0xf4, 0x18, 0xda, 0xdc, 0x41, 0xf9, 0x68, 0x84, 0x5d, 0x9d, 0xf2, 0x57,
0x80, 0xfc, 0xdb, 0x81, 0x0b, 0xad, 0x64, 0xbe, 0xb3, 0x4b, 0x96, 0x25, 0xb9, 0x13, 0xad, 0xfe,
0xbd, 0x02, 0xd7, 0x92, 0xf3, 0x6e, 0xf3, 0xa2, 0xdd, 0xcc, 0x4f, 0xc8, 0x69, 0xc5, 0xaf, 0x10,
0x56, 0xfc, 0x66, 0x2a, 0x5d, 0x46, 0xab, 0x8b, 0xa5, 0x78, 0x75, 0xf1, 0xd6, 0xfb, 0xe2, 0x2e,
0xf9, 0xee, 0xc9, 0x08, 0xa3, 0x39, 0x28, 0x3e, 0xc2, 0xc7, 0xad, 0x73, 0x08, 0xa0, 0xf2, 0xc8,
0x71, 0x87, 0xba, 0xd5, 0x52, 0x50, 0x1d, 0xe6, 0x78, 0x45, 0xba, 0x55, 0x40, 0xf3, 0x50, 0x5b,
0x0f, 0xaa, 0x74, 0xad, 0xe2, 0xad, 0x5b, 0xd0, 0x88, 0xde, 0x95, 0x25, 0xe3, 0x36, 0xf1, 0x40,
0xef, 0x9f, 0xb4, 0xce, 0xa1, 0x0a, 0x14, 0x36, 0xef, 0xb6, 0x14, 0xfa, 0xf7, 0x8d, 0x56, 0xe1,
0xd6, 0x1f, 0x29, 0xb0, 0x98, 0x42, 0x12, 0x35, 0x01, 0x1e, 0xdb, 0x7d, 0x5e, 0x78, 0x6e, 0x9d,
0x43, 0x0d, 0xa8, 0x06, 0x65, 0x68, 0xb6, 0xf6, 0xae, 0x43, 0xa1, 0x5b, 0x05, 0xd4, 0x82, 0x06,
0x1b, 0x38, 0xee, 0xf7, 0xb1, 0xe7, 0xb5, 0x8a, 0xa2, 0xe7, 0x81, 0x6e, 0x5a, 0x63, 0x17, 0xb7,
0x4a, 0x04, 0xbf, 0x5d, 0x47, 0xc3, 0x16, 0xd6, 0x3d, 0xdc, 0x2a, 0x23, 0x04, 0x4d, 0xde, 0x08,
0x06, 0x55, 0x22, 0x7d, 0xc1, 0xb0, 0xb9, 0x5b, 0x3f, 0x56, 0xa2, 0x65, 0x2f, 0x4a, 0x8b, 0x0b,
0x70, 0xfe, 0xb1, 0x6d, 0xe0, 0x7d, 0xd3, 0xc6, 0x46, 0xf8, 0xa9, 0x75, 0x0e, 0x9d, 0x87, 0x85,
0x2d, 0xec, 0x0e, 0x70, 0xa4, 0xb3, 0x80, 0x16, 0x61, 0x7e, 0xcb, 0x7c, 0x1a, 0xe9, 0x2a, 0xa2,
0x25, 0x68, 0xed, 0x98, 0xf6, 0xc0, 0x8a, 0x02, 0x96, 0xe8, 0x68, 0xd3, 0x76, 0xdc, 0x48, 0x67,
0x99, 0x76, 0xea, 0x9f, 0xc6, 0x3a, 0x2b, 0xa8, 0x03, 0xcb, 0x94, 0xa8, 0x77, 0x37, 0x30, 0xa1,
0x46, 0xe4, 0xdb, 0x9c, 0x5a, 0xaa, 0x2a, 0x2d, 0x65, 0xf5, 0x27, 0x37, 0xa1, 0x46, 0x84, 0x75,
0xdd, 0x71, 0x5c, 0x03, 0x59, 0x80, 0xe8, 0xe3, 0xb2, 0xe1, 0xc8, 0xb1, 0xc5, 0x43, 0x54, 0x74,
0x3b, 0x21, 0xdf, 0xac, 0x91, 0x06, 0xe4, 0x22, 0xd1, 0xb9, 0x21, 0x85, 0x4f, 0x00, 0xab, 0xe7,
0xd0, 0x90, 0xae, 0xb6, 0x6b, 0x0e, 0xf1, 0xae, 0xd9, 0x3f, 0x0c, 0x42, 0x80, 0xbb, 0x19, 0xaf,
0xf9, 0xd2, 0xa0, 0xc1, 0x7a, 0xd7, 0xa5, 0xeb, 0xb1, 0xd7, 0x7f, 0x81, 0x1c, 0xa9, 0xe7, 0xd0,
0x67, 0x54, 0xfd, 0x84, 0xf1, 0x54, 0xb0, 0xe0, 0x6a, 0xf6, 0x82, 0x29, 0xe0, 0x53, 0x2e, 0xb9,
0x09, 0x65, 0xca, 0xf7, 0x48, 0x76, 0xf3, 0x20, 0xfa, 0x0b, 0x17, 0x9d, 0x6b, 0xd9, 0x00, 0x62,
0xb6, 0x4f, 0x61, 0x21, 0xf1, 0xbe, 0x1c, 0xc9, 0x7c, 0x30, 0xf9, 0x2f, 0x05, 0x74, 0x6e, 0xe5,
0x01, 0x15, 0x6b, 0x0d, 0xa0, 0x19, 0x7f, 0x94, 0x86, 0x56, 0x72, 0x3c, 0x6d, 0x65, 0x2b, 0xbd,
0x92, 0xfb, 0x11, 0x2c, 0x65, 0x82, 0x56, 0xf2, 0xe5, 0x33, 0xba, 0x35, 0x71, 0x82, 0x38, 0xb3,
0xbd, 0x9a, 0x0b, 0x56, 0x2c, 0x77, 0x42, 0x99, 0x20, 0xf5, 0xec, 0x34, 0xc9, 0xe3, 0xc1, 0x34,
0x59, 0xef, 0x61, 0x3b, 0x77, 0x72, 0xc3, 0x8b, 0xa5, 0x7f, 0x99, 0x5d, 0x2f, 0x94, 0x3d, 0xdd,
0x44, 0x6f, 0xc8, 0xa7, 0x9b, 0xf0, 0xe6, 0xb4, 0xb3, 0x7a, 0x9a, 0x21, 0x02, 0x89, 0xef, 0xd3,
0x7b, 0x81, 0x92, 0xc7, 0x8f, 0x49, 0xb9, 0x0b, 0xe6, 0xcb, 0x7e, 0xd7, 0xd9, 0x79, 0xe3, 0x14,
0x23, 0x04, 0x02, 0x4e, 0xf2, 0x69, 0x79, 0x20, 0x86, 0x77, 0xa6, 0x72, 0xcd, 0xd9, 0x64, 0xf0,
0x7b, 0xb0, 0x90, 0x88, 0x4a, 0x50, 0xfe, 0xc8, 0xa5, 0x33, 0xc9, 0xdc, 0x32, 0x91, 0x4c, 0xdc,
0x03, 0x44, 0x19, 0xdc, 0x2f, 0xb9, 0x2b, 0xd8, 0xb9, 0x95, 0x07, 0x54, 0x6c, 0x64, 0x04, 0x8b,
0x89, 0x8f, 0x4f, 0x56, 0xd1, 0xab, 0xb9, 0x57, 0x7b, 0xb2, 0xda, 0x79, 0x2d, 0xff, 0x7a, 0x4f,
0x56, 0xd5, 0x73, 0xc8, 0xa3, 0x0a, 0x3a, 0x71, 0x97, 0x0c, 0x65, 0xcc, 0x22, 0xbf, 0x33, 0xd7,
0x79, 0x3d, 0x27, 0xb4, 0xd8, 0xe6, 0x11, 0x9c, 0x97, 0x5c, 0xf9, 0x43, 0xaf, 0x4f, 0x64, 0x8f,
0xe4, 0x5d, 0xc7, 0xce, 0xed, 0xbc, 0xe0, 0x11, 0xf3, 0xd0, 0x0a, 0xf0, 0xba, 0x6f, 0x59, 0xcc,
0xb3, 0x78, 0x2d, 0xcb, 0xf2, 0xc5, 0xc0, 0x32, 0xb6, 0x9a, 0x09, 0x2d, 0x96, 0xfc, 0x45, 0x40,
0x3b, 0x07, 0xce, 0x31, 0x8d, 0x02, 0x06, 0x63, 0xee, 0x58, 0x66, 0x1a, 0xc0, 0x34, 0x68, 0x86,
0x20, 0x4e, 0x1c, 0x21, 0x16, 0xef, 0x01, 0x3c, 0xc4, 0xfe, 0x16, 0xf6, 0x5d, 0x22, 0xfd, 0x2f,
0x65, 0xe1, 0xce, 0x01, 0x82, 0xa5, 0x5e, 0x9e, 0x0a, 0x17, 0x25, 0xe8, 0x96, 0x6e, 0x8f, 0x75,
0x2b, 0xf2, 0xb2, 0x4b, 0x4e, 0xd0, 0x24, 0xd8, 0x64, 0x82, 0xa6, 0xa1, 0xc5, 0x92, 0xc7, 0xc2,
0x7f, 0x89, 0xdc, 0x42, 0x98, 0xec, 0xbf, 0xa4, 0x6f, 0xc0, 0x25, 0x75, 0xfb, 0x04, 0x78, 0xb1,
0xf0, 0x17, 0x0a, 0xbd, 0xa8, 0x9a, 0x00, 0xf8, 0xd8, 0xf4, 0x0f, 0xb6, 0x2d, 0xdd, 0xf6, 0xf2,
0xa0, 0x40, 0x01, 0x4f, 0x81, 0x02, 0x87, 0x17, 0x28, 0x18, 0x30, 0x1f, 0xab, 0xf8, 0x23, 0xd9,
0xd3, 0x25, 0xd9, 0x45, 0x89, 0xce, 0xca, 0x74, 0x40, 0xb1, 0xca, 0x3e, 0xcc, 0xc7, 0x62, 0x38,
0xe9, 0x2a, 0xb2, 0x28, 0x2f, 0xa9, 0xec, 0x12, 0xd2, 0x91, 0x24, 0xa8, 0x07, 0x28, 0x5d, 0xd8,
0x44, 0xf9, 0xca, 0xe0, 0x93, 0x54, 0x4f, 0x76, 0xb5, 0x94, 0x69, 0xf3, 0xc4, 0xd5, 0x01, 0xb9,
0xa9, 0x90, 0xde, 0x84, 0x90, 0x6a, 0xf3, 0x8c, 0x9b, 0x08, 0xea, 0x39, 0xf4, 0x31, 0x54, 0xf8,
0x2f, 0x40, 0xdd, 0x98, 0x5c, 0x42, 0xe0, 0xb3, 0xdf, 0x9c, 0x02, 0x25, 0x26, 0x3e, 0x84, 0x0b,
0x19, 0x05, 0x04, 0xa9, 0x97, 0x31, 0xb9, 0xd8, 0x30, 0xcd, 0xfe, 0x89, 0xc5, 0x52, 0xf5, 0x81,
0x09, 0x8b, 0x65, 0xd5, 0x12, 0xa6, 0x2d, 0xd6, 0x83, 0xc5, 0x54, 0xfe, 0x55, 0x6a, 0x00, 0xb3,
0xb2, 0xb4, 0xd3, 0x16, 0x18, 0xc0, 0x0b, 0xd2, 0x5c, 0xa3, 0xd4, 0x37, 0x99, 0x94, 0x95, 0x9c,
0xb6, 0x50, 0x1f, 0xce, 0x4b, 0x32, 0x8c, 0x52, 0x1b, 0x97, 0x9d, 0x89, 0x9c, 0xb6, 0xc8, 0x3e,
0x74, 0xd6, 0x5c, 0x47, 0x37, 0xfa, 0xba, 0xe7, 0xd3, 0xac, 0x1f, 0x09, 0x42, 0x03, 0xe7, 0x50,
0x1e, 0x39, 0x48, 0x73, 0x83, 0xd3, 0xd6, 0xd9, 0x83, 0x3a, 0x3d, 0x4a, 0xf6, 0x2b, 0x3d, 0x48,
0x6e, 0x21, 0x22, 0x10, 0x19, 0x6a, 0x47, 0x06, 0x28, 0x98, 0x7a, 0x17, 0xea, 0xeb, 0xb4, 0x7c,
0xda, 0xb5, 0x0d, 0xfc, 0x34, 0x69, 0xad, 0xe8, 0x4f, 0x15, 0xdc, 0x8e, 0x00, 0xe4, 0xa6, 0xd0,
0x3c, 0xf5, 0xd9, 0x0d, 0xfc, 0x94, 0x9d, 0xf3, 0x8a, 0x6c, 0xde, 0x18, 0x48, 0x46, 0x8c, 0x23,
0x85, 0x8c, 0xd8, 0xf9, 0xa5, 0xa8, 0x27, 0x2b, 0x96, 0xbb, 0x93, 0x31, 0x49, 0x0a, 0x32, 0x58,
0xf5, 0x6e, 0xfe, 0x01, 0x51, 0xbb, 0x10, 0xe0, 0xd5, 0xa5, 0xb5, 0xdb, 0x97, 0x27, 0xa1, 0x1e,
0x75, 0x4f, 0x57, 0xa6, 0x03, 0x8a, 0x55, 0xb6, 0xa1, 0x46, 0xb8, 0x93, 0x1d, 0xcf, 0x0d, 0xd9,
0x40, 0xf1, 0x39, 0xff, 0xe1, 0x6c, 0x60, 0xaf, 0xef, 0x9a, 0x7b, 0xfc, 0xd0, 0xa5, 0xe8, 0xc4,
0x40, 0x26, 0x1e, 0x4e, 0x02, 0x52, 0x60, 0x3e, 0xa6, 0x3e, 0x83, 0x20, 0x1d, 0x57, 0x95, 0xaf,
0x4f, 0x3b, 0xdf, 0xb8, 0x9a, 0xbc, 0x9d, 0x17, 0x5c, 0x2c, 0xfb, 0x4b, 0x34, 0x0e, 0xa2, 0xdf,
0xd7, 0xc6, 0xa6, 0x65, 0x04, 0x89, 0x3f, 0x74, 0x77, 0xd2, 0x54, 0x31, 0xd0, 0x4c, 0xf7, 0x6f,
0xc2, 0x08, 0xb1, 0xfe, 0xcf, 0x43, 0x4d, 0xe4, 0x9f, 0x91, 0x2c, 0x6b, 0x99, 0xcc, 0x7c, 0x77,
0x6e, 0x4c, 0x06, 0x12, 0x33, 0x63, 0x58, 0x92, 0x65, 0x9b, 0xa5, 0x21, 0xf6, 0x84, 0xb4, 0xf4,
0x14, 0xfe, 0x58, 0xfd, 0xb2, 0x01, 0xd5, 0x60, 0xe0, 0x57, 0x9c, 0xb8, 0xfa, 0x1a, 0x32, 0x49,
0xdf, 0x83, 0x85, 0xc4, 0x8f, 0xaf, 0x48, 0x35, 0xb8, 0xfc, 0x07, 0x5a, 0xa6, 0x89, 0xda, 0xc7,
0xfc, 0x77, 0x4b, 0x45, 0x88, 0xf7, 0x72, 0x56, 0x36, 0x2a, 0x19, 0xdd, 0x4d, 0x99, 0xf8, 0x7f,
0x77, 0x80, 0xf3, 0x08, 0x20, 0x12, 0xda, 0x4c, 0x7e, 0x1b, 0x40, 0xbc, 0xf5, 0x69, 0xd4, 0x1a,
0x4a, 0xa3, 0x97, 0x57, 0xf2, 0xdc, 0xb3, 0xce, 0xf6, 0x40, 0xb3, 0x63, 0x96, 0xc7, 0xd0, 0x88,
0xbe, 0xda, 0x41, 0xd2, 0x5f, 0xa2, 0x4c, 0x3f, 0xeb, 0x99, 0xb6, 0x8b, 0xad, 0x53, 0x3a, 0xb6,
0x53, 0xa6, 0xf3, 0x00, 0xa5, 0xef, 0x61, 0x48, 0x03, 0x81, 0xcc, 0xdb, 0x1f, 0xd2, 0x40, 0x20,
0xfb, 0x72, 0x07, 0x4b, 0x4a, 0x26, 0x2f, 0x17, 0x48, 0x93, 0x92, 0x19, 0xd7, 0x35, 0xa4, 0x49,
0xc9, 0xac, 0xdb, 0x0a, 0x11, 0xf9, 0x9b, 0x18, 0xba, 0xc9, 0x7e, 0x56, 0x77, 0x1a, 0xf1, 0x0c,
0x58, 0x7e, 0xe4, 0xf8, 0xe6, 0xfe, 0x49, 0xb2, 0xcc, 0x24, 0x75, 0x9b, 0xb3, 0x6a, 0x5c, 0xd3,
0xa5, 0xfc, 0x32, 0xf5, 0xda, 0xb2, 0x6a, 0x59, 0x28, 0x4f, 0x51, 0xac, 0x73, 0x2f, 0x07, 0x46,
0x69, 0x3b, 0xb6, 0x76, 0xef, 0x93, 0x37, 0x06, 0xa6, 0x7f, 0x30, 0xde, 0x23, 0x68, 0xdd, 0x61,
0x53, 0xbc, 0x6e, 0x3a, 0xfc, 0xbf, 0x3b, 0x81, 0xaa, 0xb8, 0x43, 0x67, 0xbd, 0x43, 0x66, 0x1d,
0xed, 0xed, 0x55, 0x68, 0xeb, 0xde, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x33, 0xb2, 0x39, 0x67,
0xef, 0x5a, 0x00, 0x00,
// 5194 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x5b, 0x6f, 0x24, 0x57,
0x5a, 0x53, 0x7d, 0x73, 0xf7, 0xd7, 0xed, 0x76, 0xfb, 0x8c, 0xe3, 0xe9, 0xe9, 0xb9, 0xa6, 0x66,
0x26, 0x71, 0x26, 0xc9, 0xcc, 0xc4, 0x43, 0xd8, 0x5c, 0x36, 0xd9, 0x1d, 0xdb, 0x99, 0x49, 0x83,
0x3d, 0xf1, 0x96, 0x3d, 0x13, 0x94, 0x45, 0x6a, 0x95, 0xbb, 0x8e, 0x7b, 0x2a, 0xae, 0xae, 0xea,
0x54, 0x55, 0xdb, 0xe3, 0x20, 0xb1, 0x59, 0x08, 0x88, 0x9b, 0x00, 0x71, 0x79, 0xe0, 0x0d, 0xf1,
0x80, 0x96, 0xcb, 0x3e, 0x2d, 0x08, 0x09, 0x21, 0xad, 0x04, 0x2f, 0x8b, 0x78, 0x40, 0x08, 0x09,
0xc1, 0x03, 0x3f, 0x80, 0x67, 0xc4, 0x3b, 0x3a, 0x97, 0x3a, 0x75, 0x3b, 0xd5, 0x5d, 0x76, 0xcf,
0x24, 0x12, 0x3c, 0xd9, 0x75, 0xea, 0x3b, 0xe7, 0x7c, 0xe7, 0x3b, 0xdf, 0xfd, 0xfb, 0xaa, 0xa1,
0x65, 0xe8, 0xbe, 0xde, 0xeb, 0x3b, 0x8e, 0x6b, 0xdc, 0x1a, 0xb9, 0x8e, 0xef, 0xa0, 0xc5, 0xa1,
0x69, 0x1d, 0x8e, 0x3d, 0xf6, 0x74, 0x8b, 0xbc, 0xee, 0x34, 0xfa, 0xce, 0x70, 0xe8, 0xd8, 0x6c,
0xa8, 0xd3, 0x34, 0x6d, 0x1f, 0xbb, 0xb6, 0x6e, 0xf1, 0xe7, 0x46, 0x74, 0x42, 0xa7, 0xe1, 0xf5,
0x9f, 0xe0, 0xa1, 0xce, 0x9f, 0x6a, 0x43, 0x6f, 0xc0, 0xff, 0x5d, 0x34, 0x6d, 0x03, 0x3f, 0x8d,
0x6e, 0xa5, 0xce, 0x41, 0xf9, 0x83, 0xe1, 0xc8, 0x3f, 0x56, 0xff, 0x4a, 0x81, 0xc6, 0x7d, 0x6b,
0xec, 0x3d, 0xd1, 0xf0, 0x67, 0x63, 0xec, 0xf9, 0xe8, 0x0e, 0x94, 0xf6, 0x74, 0x0f, 0xb7, 0x95,
0xab, 0xca, 0x4a, 0x7d, 0xf5, 0xe2, 0xad, 0x18, 0x4e, 0x1c, 0x9b, 0x2d, 0x6f, 0xb0, 0xa6, 0x7b,
0x58, 0xa3, 0x90, 0x08, 0x41, 0xc9, 0xd8, 0xeb, 0x6e, 0xb4, 0x0b, 0x57, 0x95, 0x95, 0xa2, 0x46,
0xff, 0x47, 0x97, 0x01, 0x3c, 0x3c, 0x18, 0x62, 0xdb, 0xef, 0x6e, 0x78, 0xed, 0xe2, 0xd5, 0xe2,
0x4a, 0x51, 0x8b, 0x8c, 0x20, 0x15, 0x1a, 0x7d, 0xc7, 0xb2, 0x70, 0xdf, 0x37, 0x1d, 0xbb, 0xbb,
0xd1, 0x2e, 0xd1, 0xb9, 0xb1, 0x31, 0xd4, 0x81, 0xaa, 0xe9, 0x75, 0x87, 0x23, 0xc7, 0xf5, 0xdb,
0xe5, 0xab, 0xca, 0x4a, 0x55, 0x13, 0xcf, 0xea, 0xf7, 0x0b, 0x30, 0xcf, 0xd1, 0xf6, 0x46, 0x8e,
0xed, 0x61, 0x74, 0x17, 0x2a, 0x9e, 0xaf, 0xfb, 0x63, 0x8f, 0x63, 0x7e, 0x41, 0x8a, 0xf9, 0x0e,
0x05, 0xd1, 0x38, 0xa8, 0x14, 0xf5, 0x24, 0x6a, 0x45, 0x09, 0x6a, 0xf1, 0xe3, 0x95, 0x52, 0xc7,
0x5b, 0x81, 0x85, 0x7d, 0x82, 0xdd, 0x4e, 0x08, 0x54, 0xa6, 0x40, 0xc9, 0x61, 0xb2, 0x92, 0x6f,
0x0e, 0xf1, 0x47, 0xfb, 0x3b, 0x58, 0xb7, 0xda, 0x15, 0xba, 0x57, 0x64, 0x04, 0x9d, 0x87, 0x2a,
0x9d, 0xd2, 0xf3, 0xbd, 0xf6, 0xdc, 0x55, 0x65, 0xa5, 0xa4, 0xcd, 0xd1, 0xe7, 0x5d, 0x4f, 0xfd,
0x1e, 0x2c, 0x51, 0x12, 0xac, 0x3f, 0xd1, 0x6d, 0x1b, 0x5b, 0xde, 0xe9, 0x6f, 0x30, 0xba, 0x49,
0x21, 0xb6, 0x09, 0xb9, 0x84, 0x3e, 0x5f, 0x9f, 0x5e, 0x63, 0x4d, 0x13, 0xcf, 0xea, 0xbf, 0x28,
0xd0, 0x12, 0x47, 0x09, 0x76, 0x5f, 0x82, 0x72, 0xdf, 0x19, 0xdb, 0x3e, 0xdd, 0x7e, 0x5e, 0x63,
0x0f, 0xe8, 0x45, 0x68, 0xf0, 0x69, 0x3d, 0x5b, 0x1f, 0x62, 0xba, 0x4b, 0x4d, 0xab, 0xf3, 0xb1,
0x87, 0xfa, 0x10, 0xe7, 0xa2, 0xfb, 0x55, 0xa8, 0x8f, 0x74, 0xd7, 0x37, 0x63, 0x5c, 0x13, 0x1d,
0x9a, 0xc4, 0x34, 0x64, 0x07, 0x93, 0xfe, 0xb7, 0xab, 0x7b, 0x07, 0xdd, 0x0d, 0x4e, 0xed, 0xd8,
0x98, 0xfa, 0xc7, 0x0a, 0x2c, 0xdf, 0xf3, 0x3c, 0x73, 0x60, 0xa7, 0x4e, 0xb6, 0x0c, 0x15, 0xdb,
0x31, 0x70, 0x77, 0x83, 0x1e, 0xad, 0xa8, 0xf1, 0x27, 0x74, 0x01, 0x6a, 0x23, 0x8c, 0xdd, 0x9e,
0xeb, 0x58, 0xc1, 0xc1, 0xaa, 0x64, 0x40, 0x73, 0x2c, 0x8c, 0xbe, 0x03, 0x8b, 0x5e, 0x62, 0x21,
0x46, 0xc8, 0xfa, 0xea, 0xb5, 0x5b, 0x29, 0x79, 0xbf, 0x95, 0xdc, 0x54, 0x4b, 0xcf, 0x56, 0xbf,
0x28, 0xc0, 0x59, 0x01, 0xc7, 0x70, 0x25, 0xff, 0x13, 0xca, 0x7b, 0x78, 0x20, 0xd0, 0x63, 0x0f,
0x79, 0x28, 0x2f, 0xae, 0xac, 0x18, 0xbd, 0xb2, 0x3c, 0x22, 0x9a, 0xb8, 0x8f, 0x72, 0xfa, 0x3e,
0xae, 0x40, 0x1d, 0x3f, 0x1d, 0x99, 0x2e, 0xee, 0x11, 0xa6, 0xa6, 0x24, 0x2f, 0x69, 0xc0, 0x86,
0x76, 0xcd, 0x61, 0x54, 0x6e, 0xe7, 0x72, 0xcb, 0xad, 0xfa, 0x27, 0x0a, 0x9c, 0x4b, 0xdd, 0x12,
0x57, 0x04, 0x1a, 0xb4, 0xe8, 0xc9, 0x43, 0xca, 0x10, 0x95, 0x40, 0x08, 0xfe, 0xd2, 0x24, 0x82,
0x87, 0xe0, 0x5a, 0x6a, 0x7e, 0x04, 0xc9, 0x42, 0x7e, 0x24, 0x0f, 0xe0, 0xdc, 0x03, 0xec, 0xf3,
0x0d, 0xc8, 0x3b, 0x3c, 0x83, 0x88, 0xc6, 0x35, 0x4e, 0x21, 0xa9, 0x71, 0xd4, 0x3f, 0x2d, 0x08,
0x59, 0xa4, 0x5b, 0x75, 0xed, 0x7d, 0x07, 0x5d, 0x84, 0x9a, 0x00, 0xe1, 0x5c, 0x11, 0x0e, 0xa0,
0x6f, 0x40, 0x99, 0x60, 0xca, 0x58, 0xa2, 0xb9, 0xfa, 0xa2, 0xfc, 0x4c, 0x91, 0x35, 0x35, 0x06,
0x8f, 0x36, 0xa0, 0xe9, 0xf9, 0xba, 0xeb, 0xf7, 0x46, 0x8e, 0x47, 0xef, 0x99, 0x32, 0x4e, 0x7d,
0xf5, 0x52, 0x7c, 0x05, 0x62, 0x80, 0xb6, 0xbc, 0xc1, 0x36, 0x07, 0xd2, 0xe6, 0xe9, 0xa4, 0xe0,
0x11, 0x7d, 0x1b, 0x1a, 0xd8, 0x36, 0xc2, 0x35, 0x4a, 0x79, 0xd6, 0xa8, 0x63, 0xdb, 0x10, 0x2b,
0x84, 0xb7, 0x52, 0xce, 0x7f, 0x2b, 0xbf, 0xa5, 0x40, 0x3b, 0x7d, 0x2d, 0xb3, 0x18, 0x91, 0x77,
0xd9, 0x24, 0xcc, 0xae, 0x65, 0xa2, 0x5c, 0x8b, 0xab, 0xd1, 0xf8, 0x14, 0xf5, 0x0f, 0x15, 0x78,
0x21, 0x44, 0x87, 0xbe, 0x7a, 0x5e, 0x3c, 0x82, 0x6e, 0x42, 0xcb, 0xb4, 0xfb, 0xd6, 0xd8, 0xc0,
0x8f, 0xec, 0x0f, 0xb1, 0x6e, 0xf9, 0x4f, 0x8e, 0xe9, 0xcd, 0x55, 0xb5, 0xd4, 0xb8, 0xfa, 0x1f,
0x05, 0x58, 0x4e, 0xe2, 0x35, 0x0b, 0x91, 0x7e, 0x0a, 0xca, 0xa6, 0xbd, 0xef, 0x04, 0x34, 0xba,
0x3c, 0x41, 0x14, 0xc9, 0x5e, 0x0c, 0x18, 0x39, 0x80, 0x02, 0xe5, 0xd5, 0x7f, 0x82, 0xfb, 0x07,
0x23, 0xc7, 0xa4, 0x6a, 0x8a, 0x2c, 0xf1, 0x6d, 0xc9, 0x12, 0x72, 0x8c, 0x6f, 0x71, 0x0b, 0xb9,
0x2e, 0x96, 0xf8, 0xc0, 0xf6, 0xdd, 0x63, 0x6d, 0xb1, 0x9f, 0x1c, 0xef, 0xf4, 0x61, 0x59, 0x0e,
0x8c, 0x5a, 0x50, 0x3c, 0xc0, 0xc7, 0xf4, 0xc8, 0x35, 0x8d, 0xfc, 0x8b, 0xee, 0x42, 0xf9, 0x50,
0xb7, 0xc6, 0x98, 0xeb, 0x84, 0x29, 0x9c, 0xcb, 0x60, 0xdf, 0x29, 0xbc, 0xa5, 0xa8, 0x43, 0xb8,
0xf0, 0x00, 0xfb, 0x5d, 0xdb, 0xc3, 0xae, 0xbf, 0x66, 0xda, 0x96, 0x33, 0xd8, 0xd6, 0xfd, 0x27,
0x33, 0x28, 0x87, 0x98, 0x9c, 0x17, 0x12, 0x72, 0xae, 0xfe, 0x40, 0x81, 0x8b, 0xf2, 0xfd, 0xf8,
0x85, 0x76, 0xa0, 0xba, 0x6f, 0x62, 0xcb, 0x20, 0x5c, 0xa3, 0x50, 0xae, 0x11, 0xcf, 0x44, 0x49,
0x8c, 0x08, 0x30, 0xbf, 0xb7, 0x84, 0x92, 0x10, 0xfe, 0xe8, 0x8e, 0xef, 0x9a, 0xf6, 0x60, 0xd3,
0xf4, 0x7c, 0x8d, 0xc1, 0x47, 0xb8, 0xa4, 0x98, 0x5f, 0x38, 0x7f, 0x43, 0x81, 0xcb, 0x0f, 0xb0,
0xbf, 0x2e, 0x6c, 0x0c, 0x79, 0x6f, 0x7a, 0xbe, 0xd9, 0xf7, 0x9e, 0xad, 0x7f, 0x9a, 0xc3, 0xd9,
0x50, 0x7f, 0x47, 0x81, 0x2b, 0x99, 0xc8, 0x70, 0xd2, 0x71, 0x1d, 0x1a, 0x58, 0x18, 0xb9, 0x0e,
0xfd, 0x59, 0x7c, 0xfc, 0x98, 0x5c, 0xfe, 0xb6, 0x6e, 0xba, 0x4c, 0x87, 0x9e, 0xd2, 0xa2, 0xfc,
0x50, 0x81, 0x4b, 0x0f, 0xb0, 0xbf, 0x1d, 0xd8, 0xd7, 0xaf, 0x91, 0x3a, 0x04, 0x26, 0x62, 0xe7,
0x03, 0x27, 0x38, 0x36, 0xa6, 0xfe, 0x36, 0xbb, 0x4e, 0x29, 0xbe, 0x5f, 0x0b, 0x01, 0x2f, 0x53,
0x49, 0x88, 0xa8, 0x08, 0x2e, 0xec, 0x9c, 0x7c, 0xea, 0x97, 0x65, 0x68, 0x3c, 0xe6, 0x5a, 0x81,
0x5a, 0xd0, 0x24, 0x25, 0x14, 0xb9, 0x13, 0x14, 0xf1, 0xa6, 0x64, 0x0e, 0xd6, 0x1a, 0xcc, 0x7b,
0x18, 0x1f, 0x9c, 0xd0, 0x5e, 0x36, 0xc8, 0x1c, 0x61, 0xec, 0x36, 0x61, 0x71, 0x6c, 0x53, 0xaf,
0x1c, 0x1b, 0xfc, 0x00, 0x8c, 0xe8, 0xd3, 0x95, 0x69, 0x7a, 0x22, 0xfa, 0x90, 0x07, 0x28, 0x91,
0xb5, 0xca, 0xb9, 0xd6, 0x4a, 0x4e, 0x43, 0x5d, 0x68, 0x19, 0xae, 0x33, 0x1a, 0x61, 0xa3, 0xe7,
0x05, 0x4b, 0x55, 0xf2, 0x2d, 0xc5, 0xe7, 0x89, 0xa5, 0xee, 0xc0, 0xd9, 0x24, 0xa6, 0x5d, 0x83,
0xf8, 0x85, 0x84, 0xb3, 0x64, 0xaf, 0xd0, 0x6b, 0xb0, 0x98, 0x86, 0xaf, 0x52, 0xf8, 0xf4, 0x0b,
0xf4, 0x3a, 0xa0, 0x04, 0xaa, 0x04, 0xbc, 0xc6, 0xc0, 0xe3, 0xc8, 0x70, 0x70, 0x1a, 0x38, 0xc7,
0xc1, 0x81, 0x81, 0xf3, 0x37, 0x11, 0xf0, 0x2e, 0xb1, 0xae, 0x31, 0x70, 0xaf, 0x5d, 0xcf, 0x47,
0x88, 0xf8, 0x62, 0x9e, 0xfa, 0xeb, 0x0a, 0x2c, 0x7f, 0xac, 0xfb, 0xfd, 0x27, 0x1b, 0xc3, 0xd9,
0x83, 0xbb, 0xf7, 0xa0, 0x76, 0x28, 0x42, 0x38, 0xa6, 0xc5, 0xaf, 0x48, 0x10, 0x8a, 0xb2, 0xbd,
0x16, 0xce, 0x50, 0xff, 0x5e, 0xe1, 0x61, 0x66, 0x80, 0xdd, 0x57, 0xaf, 0x6a, 0xa6, 0x45, 0xdb,
0x09, 0x01, 0x2c, 0xa7, 0x04, 0x50, 0x7d, 0x0a, 0xc0, 0xd1, 0xdf, 0xf2, 0x06, 0xa7, 0xc0, 0xfc,
0x2d, 0x98, 0xe3, 0xfb, 0x71, 0x6d, 0x33, 0xed, 0x4a, 0x03, 0x70, 0xf5, 0x7f, 0x2a, 0x50, 0x8f,
0xbc, 0x40, 0x4d, 0x28, 0x08, 0x35, 0x52, 0x90, 0x9c, 0xbf, 0x30, 0x3d, 0xca, 0x2a, 0xa6, 0xa3,
0xac, 0x1b, 0xd0, 0x34, 0xa9, 0x79, 0xef, 0xf1, 0x53, 0x53, 0x6f, 0xba, 0xa6, 0xcd, 0xb3, 0x51,
0xce, 0x44, 0xe8, 0x32, 0xd4, 0xed, 0xf1, 0xb0, 0xe7, 0xec, 0xf7, 0x5c, 0xe7, 0xc8, 0xe3, 0xe1,
0x5a, 0xcd, 0x1e, 0x0f, 0x3f, 0xda, 0xd7, 0x9c, 0x23, 0x2f, 0x8c, 0x08, 0x2a, 0x27, 0x8c, 0x08,
0x2e, 0x43, 0x7d, 0xa8, 0x3f, 0x25, 0xab, 0xf6, 0xec, 0xf1, 0x90, 0x46, 0x72, 0x45, 0xad, 0x36,
0xd4, 0x9f, 0x6a, 0xce, 0xd1, 0xc3, 0xf1, 0x10, 0xad, 0x40, 0xcb, 0xd2, 0x3d, 0xbf, 0x17, 0x0d,
0x05, 0xab, 0x34, 0x14, 0x6c, 0x92, 0xf1, 0x0f, 0xc2, 0x70, 0x30, 0x1d, 0x5b, 0xd4, 0x4e, 0x17,
0x5b, 0x18, 0x43, 0x2b, 0x5c, 0x03, 0x72, 0xc5, 0x16, 0xc6, 0xd0, 0x12, 0x2b, 0xbc, 0x05, 0x73,
0x7b, 0xd4, 0x55, 0x9a, 0x24, 0xc4, 0xf7, 0x89, 0x97, 0xc4, 0x3c, 0x2a, 0x2d, 0x00, 0x47, 0xdf,
0x84, 0x1a, 0xb5, 0x50, 0x74, 0x6e, 0x23, 0xd7, 0xdc, 0x70, 0x02, 0x99, 0x6d, 0x60, 0xcb, 0xd7,
0xe9, 0xec, 0xf9, 0x7c, 0xb3, 0xc5, 0x04, 0xa2, 0x41, 0xfb, 0x2e, 0xd6, 0x7d, 0x6c, 0xac, 0x1d,
0xaf, 0x3b, 0xc3, 0x91, 0x4e, 0x59, 0xa8, 0xdd, 0xa4, 0x4e, 0xbe, 0xec, 0x15, 0x7a, 0x09, 0x9a,
0x7d, 0xf1, 0x74, 0xdf, 0x75, 0x86, 0xed, 0x05, 0x2a, 0x5f, 0x89, 0x51, 0x74, 0x09, 0x20, 0xd0,
0x9d, 0xba, 0xdf, 0x6e, 0xd1, 0xbb, 0xab, 0xf1, 0x91, 0x7b, 0x34, 0xbf, 0x63, 0x7a, 0x3d, 0x96,
0x49, 0x31, 0xed, 0x41, 0x7b, 0x91, 0xee, 0x58, 0x0f, 0x52, 0x2f, 0xa6, 0x3d, 0x40, 0xe7, 0x60,
0xce, 0xf4, 0x7a, 0xfb, 0xfa, 0x01, 0x6e, 0x23, 0xfa, 0xb6, 0x62, 0x7a, 0xf7, 0xf5, 0x03, 0xea,
0xbd, 0xf2, 0xcd, 0xb0, 0xd1, 0x3e, 0x4b, 0x5f, 0x85, 0x03, 0xe8, 0x4d, 0x28, 0x5b, 0xf8, 0x10,
0x5b, 0xed, 0x25, 0xca, 0x93, 0x57, 0xb2, 0x05, 0x6f, 0x93, 0x80, 0x69, 0x0c, 0x5a, 0xfd, 0x1c,
0x96, 0x42, 0x46, 0x8d, 0x70, 0x46, 0x9a, 0xbf, 0x94, 0x53, 0xf0, 0xd7, 0x64, 0x87, 0xfb, 0xbf,
0x4a, 0xb0, 0xbc, 0xa3, 0x1f, 0xe2, 0xe7, 0xef, 0xdb, 0xe7, 0x52, 0x9f, 0x9b, 0xb0, 0x48, 0xdd,
0xf9, 0xd5, 0x08, 0x3e, 0x13, 0x3c, 0x87, 0x28, 0x6b, 0xa5, 0x27, 0xa2, 0x6f, 0x11, 0x65, 0x8b,
0xfb, 0x07, 0xdb, 0x24, 0x34, 0x0a, 0xbc, 0x86, 0x4b, 0x92, 0x75, 0xd6, 0x05, 0x94, 0x16, 0x9d,
0x81, 0xb6, 0x61, 0x21, 0x7e, 0x03, 0x81, 0xbf, 0xf0, 0xf2, 0xc4, 0xb8, 0x39, 0xa4, 0xbe, 0xd6,
0x8c, 0x5d, 0x86, 0x87, 0xda, 0x30, 0xc7, 0x8d, 0x3d, 0xd5, 0x3c, 0x55, 0x2d, 0x78, 0x44, 0xdb,
0x70, 0x96, 0x9d, 0x60, 0x87, 0x0b, 0x18, 0x3b, 0x7c, 0x35, 0xd7, 0xe1, 0x65, 0x53, 0xe3, 0xf2,
0x59, 0x3b, 0xa9, 0x7c, 0xb6, 0x61, 0x8e, 0xcb, 0x0c, 0x55, 0x49, 0x55, 0x2d, 0x78, 0x24, 0xd7,
0x1c, 0x4a, 0x4f, 0x9d, 0x09, 0x81, 0x18, 0x20, 0xf3, 0x02, 0xc5, 0xde, 0xa0, 0x8a, 0x3d, 0x78,
0x54, 0x7f, 0x45, 0x01, 0x08, 0x29, 0x3d, 0x25, 0xe3, 0xf3, 0x36, 0x54, 0x05, 0xdb, 0xe7, 0x0a,
0x5a, 0x05, 0x78, 0xd2, 0x74, 0x14, 0x13, 0xa6, 0x43, 0xfd, 0x27, 0x05, 0x1a, 0x1b, 0xe4, 0x9c,
0x9b, 0xce, 0x80, 0x1a, 0xba, 0x1b, 0xd0, 0x74, 0x71, 0xdf, 0x71, 0x8d, 0x1e, 0xb6, 0x7d, 0xd7,
0xc4, 0x2c, 0x5b, 0x50, 0xd2, 0xe6, 0xd9, 0xe8, 0x07, 0x6c, 0x90, 0x80, 0x11, 0x6b, 0xe0, 0xf9,
0xfa, 0x70, 0xd4, 0xdb, 0x27, 0xfa, 0x87, 0x25, 0xa0, 0xe7, 0xc5, 0x28, 0x55, 0x3f, 0x2f, 0x42,
0x23, 0x04, 0xf3, 0x1d, 0xba, 0x7f, 0x49, 0xab, 0x8b, 0xb1, 0x5d, 0x07, 0x5d, 0x87, 0x26, 0x25,
0x74, 0xcf, 0x72, 0x06, 0x3d, 0x12, 0x83, 0x72, 0x1b, 0xd8, 0x30, 0x38, 0x5a, 0xe4, 0x02, 0xe3,
0x50, 0x9e, 0xf9, 0x39, 0xe6, 0x56, 0x50, 0x40, 0xed, 0x98, 0x9f, 0x63, 0xf5, 0x97, 0x15, 0x98,
0xe7, 0x46, 0x73, 0x47, 0x54, 0x0a, 0x68, 0xfa, 0x94, 0xc5, 0xff, 0xf4, 0x7f, 0xf4, 0x4e, 0x3c,
0x81, 0x76, 0x5d, 0x2a, 0x04, 0x74, 0x11, 0xea, 0xcc, 0xc5, 0x2c, 0x66, 0x9e, 0x00, 0xf4, 0x0b,
0x42, 0x53, 0xdd, 0xd7, 0x1f, 0x3a, 0x06, 0xcb, 0xe7, 0xb5, 0x61, 0x4e, 0x37, 0x0c, 0x17, 0x7b,
0x1e, 0xc7, 0x23, 0x78, 0x24, 0x6f, 0x0e, 0xb1, 0xeb, 0x05, 0x17, 0x5b, 0xd4, 0x82, 0x47, 0xf4,
0xcd, 0x44, 0x02, 0xbf, 0xbe, 0x7a, 0x35, 0x1b, 0x4f, 0x1e, 0x2e, 0x85, 0x29, 0xfe, 0xbf, 0x2e,
0x40, 0x93, 0xcb, 0xe0, 0x1a, 0xb7, 0x6f, 0x93, 0x59, 0x6c, 0x0d, 0x1a, 0xfb, 0x21, 0xef, 0x4f,
0x4a, 0xf7, 0x44, 0x45, 0x24, 0x36, 0x67, 0x1a, 0xaf, 0xc5, 0x2d, 0x6c, 0x69, 0x26, 0x0b, 0x5b,
0x3e, 0xa9, 0x04, 0xa7, 0x3d, 0xad, 0x8a, 0xc4, 0xd3, 0x52, 0x7f, 0x1e, 0xea, 0x91, 0x05, 0xa8,
0x86, 0x62, 0x19, 0x15, 0x4e, 0xb1, 0xe0, 0x11, 0xdd, 0x0d, 0xfd, 0x0c, 0x46, 0xaa, 0xf3, 0x12,
0x5c, 0x12, 0x2e, 0x86, 0xfa, 0x63, 0x05, 0x2a, 0x7c, 0xe5, 0x2b, 0x50, 0xe7, 0xf2, 0x45, 0x3d,
0x2f, 0xb6, 0x3a, 0xf0, 0x21, 0xe2, 0x7a, 0x3d, 0x3b, 0x01, 0x3b, 0x0f, 0xd5, 0x84, 0x68, 0xcd,
0x71, 0xb5, 0x18, 0xbc, 0x8a, 0xc8, 0x13, 0x79, 0x45, 0x44, 0x09, 0x2d, 0x41, 0xd9, 0x72, 0x06,
0xa2, 0xda, 0xc2, 0x1e, 0xd4, 0x9f, 0x28, 0x34, 0x39, 0xae, 0xe1, 0xbe, 0x73, 0x88, 0xdd, 0xe3,
0xd9, 0xf3, 0x8b, 0xef, 0x46, 0xd8, 0x3c, 0x67, 0x90, 0x23, 0x26, 0xa0, 0x77, 0xc3, 0x4b, 0x28,
0xca, 0xd2, 0x10, 0x51, 0x53, 0xc4, 0x99, 0x34, 0xbc, 0x8c, 0xdf, 0x55, 0x68, 0xa6, 0x34, 0x7e,
0x94, 0xd3, 0x5a, 0xfb, 0x67, 0x12, 0x0e, 0xa8, 0xff, 0xa8, 0xc0, 0xf9, 0x0c, 0xea, 0x3e, 0x5e,
0xfd, 0x1a, 0xe8, 0xfb, 0x0e, 0x54, 0x45, 0x48, 0x5c, 0xcc, 0x15, 0x12, 0x0b, 0x78, 0xf5, 0x0f,
0x58, 0xbe, 0x5e, 0x42, 0xde, 0xc7, 0xab, 0xcf, 0x89, 0xc0, 0xc9, 0xd4, 0x56, 0x51, 0x92, 0xda,
0xfa, 0x67, 0x05, 0x3a, 0x61, 0x2a, 0xc9, 0x5b, 0x3b, 0x9e, 0xb5, 0xc0, 0xf3, 0x6c, 0x02, 0xc1,
0xb7, 0x45, 0x2d, 0x82, 0xe8, 0xc5, 0x5c, 0x21, 0x5c, 0x50, 0x89, 0xb0, 0x69, 0x56, 0x3a, 0x7d,
0xa0, 0x59, 0xa4, 0xb2, 0x13, 0xb9, 0x78, 0x56, 0x8f, 0x08, 0x2f, 0xf6, 0xc7, 0x8c, 0x49, 0xef,
0xc7, 0xf3, 0x49, 0x5f, 0x37, 0x01, 0xa3, 0x35, 0x92, 0x27, 0xbc, 0x46, 0x52, 0x4a, 0xd4, 0x48,
0xf8, 0xb8, 0x3a, 0xa4, 0x2c, 0x90, 0x3a, 0xc0, 0xf3, 0x22, 0xd8, 0xaf, 0x2a, 0xd0, 0xe6, 0xbb,
0xb0, 0xba, 0xbf, 0x33, 0x1c, 0x59, 0xd8, 0xc7, 0xc6, 0x57, 0x9d, 0xd3, 0xf8, 0xcb, 0x02, 0xb4,
0xa2, 0x8e, 0x0d, 0xf5, 0x4d, 0xde, 0x84, 0x32, 0x4d, 0x1a, 0x71, 0x0c, 0xa6, 0x6a, 0x07, 0x06,
0x4d, 0x2c, 0x23, 0xf5, 0xe6, 0x77, 0xbd, 0xc0, 0x71, 0xe1, 0x8f, 0xa1, 0x77, 0x55, 0x3c, 0xb9,
0x77, 0x75, 0x11, 0x6a, 0xc4, 0x72, 0x39, 0x63, 0xb2, 0x2e, 0x2b, 0x5c, 0x87, 0x03, 0xe8, 0x3d,
0xa8, 0xb0, 0x56, 0x19, 0x5e, 0x37, 0xbc, 0x11, 0x5f, 0x9a, 0xb7, 0xd1, 0x44, 0xf2, 0xfe, 0x74,
0x40, 0xe3, 0x93, 0xc8, 0x1d, 0x8d, 0x5c, 0x67, 0x40, 0xdd, 0x30, 0x62, 0xd4, 0xca, 0x9a, 0x78,
0x26, 0x6e, 0xa2, 0x33, 0xea, 0x6e, 0xf0, 0x0c, 0x08, 0xfd, 0x5f, 0xfd, 0x19, 0x58, 0x0e, 0x03,
0x6e, 0x86, 0xe6, 0x69, 0x99, 0x5c, 0xfd, 0x37, 0x05, 0xce, 0xee, 0x1c, 0xdb, 0xfd, 0xa4, 0xb8,
0x2c, 0x43, 0x65, 0x64, 0xe9, 0x61, 0x86, 0x9a, 0x3f, 0xd1, 0xea, 0x7f, 0x10, 0x4a, 0x13, 0xb3,
0xce, 0x68, 0x5c, 0x17, 0x63, 0xbb, 0xce, 0x54, 0x6f, 0xeb, 0x86, 0xc8, 0x10, 0x60, 0x83, 0x39,
0x10, 0x2c, 0x03, 0x37, 0x2f, 0x46, 0xa9, 0x03, 0xf1, 0x1e, 0x00, 0xf5, 0xb1, 0x7a, 0x27, 0xf1,
0xab, 0xe8, 0x8c, 0x4d, 0x62, 0x45, 0x7f, 0x54, 0x80, 0x76, 0x84, 0x4a, 0x5f, 0xb5, 0xcb, 0x99,
0x11, 0x28, 0x16, 0x9f, 0x51, 0xa0, 0x58, 0x9a, 0xdd, 0xcd, 0x2c, 0xcb, 0xdc, 0xcc, 0xef, 0x17,
0xa1, 0x19, 0x52, 0x6d, 0xdb, 0xd2, 0xed, 0x4c, 0x4e, 0xd8, 0x81, 0xa6, 0x17, 0xa3, 0x2a, 0xa7,
0xd3, 0xab, 0x32, 0xb9, 0xca, 0xb8, 0x08, 0x2d, 0xb1, 0x04, 0xba, 0x44, 0x2f, 0xdd, 0xf5, 0x59,
0x46, 0x8f, 0xf9, 0x8c, 0x35, 0x26, 0xc0, 0xe6, 0x10, 0xa3, 0xd7, 0x00, 0x71, 0xa9, 0xeb, 0x99,
0x76, 0xcf, 0xc3, 0x7d, 0xc7, 0x36, 0x98, 0x3c, 0x96, 0xb5, 0x16, 0x7f, 0xd3, 0xb5, 0x77, 0xd8,
0x38, 0x7a, 0x13, 0x4a, 0xfe, 0xf1, 0x88, 0x39, 0x90, 0x4d, 0xa9, 0x0b, 0x16, 0xe2, 0xb5, 0x7b,
0x3c, 0xc2, 0x1a, 0x05, 0x0f, 0x3a, 0xa8, 0x7c, 0x57, 0x3f, 0xe4, 0xde, 0x78, 0x49, 0x8b, 0x8c,
0x44, 0x63, 0xe7, 0xb9, 0x58, 0xec, 0xcc, 0x38, 0x3b, 0x10, 0xf2, 0x9e, 0xef, 0x5b, 0x34, 0x27,
0x49, 0x39, 0x3b, 0x18, 0xdd, 0xf5, 0x2d, 0x72, 0x48, 0xdf, 0xf1, 0x75, 0x8b, 0xc9, 0x47, 0x8d,
0x6b, 0x13, 0x32, 0x42, 0x23, 0xdf, 0x7f, 0x25, 0xda, 0x50, 0x20, 0xa6, 0x61, 0x6f, 0x6c, 0x65,
0xcb, 0xe3, 0xe4, 0x6c, 0xce, 0x34, 0x51, 0xfc, 0x16, 0xd4, 0x39, 0x57, 0x9c, 0x80, 0xab, 0x80,
0x4d, 0xd9, 0x9c, 0xc0, 0xe6, 0xe5, 0x67, 0xc4, 0xe6, 0x95, 0x53, 0xe4, 0x43, 0xe4, 0x77, 0xa3,
0xfe, 0x40, 0x81, 0x17, 0x52, 0x5a, 0x73, 0x22, 0x69, 0x27, 0x47, 0xe3, 0x5c, 0x9b, 0x26, 0x97,
0xe4, 0xf6, 0xe2, 0x5d, 0xa8, 0xb8, 0x74, 0x75, 0x5e, 0x99, 0xbb, 0x36, 0x91, 0xf9, 0x18, 0x22,
0x1a, 0x9f, 0xa2, 0xfe, 0x9e, 0x02, 0xe7, 0xd2, 0xa8, 0xce, 0xe0, 0x04, 0xac, 0xc1, 0x1c, 0x5b,
0x3a, 0x90, 0xd1, 0x95, 0xc9, 0x32, 0x1a, 0x12, 0x47, 0x0b, 0x26, 0xaa, 0x3b, 0xb0, 0x1c, 0xf8,
0x0a, 0x21, 0xe9, 0xb7, 0xb0, 0xaf, 0x4f, 0x88, 0x45, 0xaf, 0x40, 0x9d, 0x05, 0x35, 0x2c, 0xc6,
0x63, 0x85, 0x4c, 0xd8, 0x13, 0xc9, 0x3f, 0xf5, 0xf7, 0x0b, 0xb0, 0x44, 0x8d, 0x6d, 0xb2, 0x2a,
0x95, 0xa7, 0x4c, 0xaa, 0x8a, 0x46, 0xb4, 0x87, 0xfa, 0x90, 0x37, 0xcb, 0xd4, 0xb4, 0xd8, 0x18,
0xea, 0xa6, 0x73, 0x83, 0xd2, 0x9c, 0x45, 0x58, 0x17, 0xde, 0xd0, 0x7d, 0x9d, 0x96, 0x85, 0x93,
0x49, 0xc1, 0xd0, 0xc8, 0x97, 0x4e, 0x63, 0xe4, 0x5f, 0x81, 0x16, 0x4b, 0x97, 0xf7, 0x44, 0x08,
0x4c, 0x15, 0x53, 0x49, 0x5b, 0x60, 0xe3, 0xbb, 0xc1, 0xb0, 0xba, 0x09, 0x2f, 0x24, 0x88, 0x32,
0xc3, 0xe5, 0xab, 0x7f, 0xa6, 0x90, 0x9b, 0x8b, 0xf5, 0x27, 0x9d, 0xde, 0x27, 0xbe, 0x24, 0x2a,
0x67, 0x3d, 0xd3, 0x48, 0xea, 0x1b, 0x03, 0xbd, 0x0f, 0x35, 0x1b, 0x1f, 0xf5, 0xa2, 0x6e, 0x56,
0x8e, 0x80, 0xa1, 0x6a, 0xe3, 0x23, 0xfa, 0x9f, 0xfa, 0x10, 0xce, 0xa5, 0x50, 0x9d, 0xe5, 0xec,
0x7f, 0xab, 0xc0, 0xf9, 0x0d, 0xd7, 0x19, 0x3d, 0x36, 0x5d, 0x7f, 0xac, 0x5b, 0xf1, 0xe2, 0xfc,
0x29, 0x8e, 0x9f, 0xa3, 0xf7, 0xf1, 0xc3, 0x54, 0x68, 0xfa, 0x9a, 0x44, 0xd8, 0xd2, 0x48, 0xf1,
0x43, 0x47, 0xdc, 0xf3, 0xff, 0x2c, 0xca, 0x90, 0xe7, 0x70, 0x53, 0x5c, 0x98, 0x3c, 0xb1, 0x8b,
0x34, 0x8d, 0x5f, 0x3c, 0x6d, 0x1a, 0x3f, 0xc3, 0x12, 0x94, 0x9e, 0x91, 0x25, 0x38, 0x71, 0x5e,
0x6d, 0x1d, 0xe2, 0x25, 0x16, 0x6a, 0xc8, 0x4f, 0x5a, 0x96, 0x79, 0x0f, 0x20, 0xac, 0x34, 0xf0,
0x7e, 0xd2, 0x29, 0x2b, 0x44, 0x26, 0x90, 0x3b, 0x12, 0xb6, 0x96, 0xbb, 0x02, 0x91, 0x0c, 0xf7,
0x77, 0xa0, 0x23, 0xe3, 0xcd, 0x59, 0xf8, 0xfd, 0xdf, 0x0b, 0x00, 0x5d, 0xd1, 0x7d, 0x7c, 0x3a,
0x63, 0x71, 0x0d, 0x22, 0xee, 0x4a, 0x28, 0xe5, 0x51, 0xde, 0x31, 0x88, 0x20, 0x88, 0x20, 0x97,
0xc0, 0xa4, 0x02, 0x5f, 0x83, 0xae, 0x13, 0x91, 0x15, 0xc6, 0x0a, 0x49, 0xfd, 0x7c, 0x01, 0x6a,
0xae, 0x73, 0xd4, 0x23, 0xc2, 0x65, 0x04, 0xed, 0xd5, 0xae, 0x73, 0x44, 0x44, 0xce, 0x40, 0xe7,
0x60, 0xce, 0xd7, 0xbd, 0x03, 0xb2, 0x3e, 0xcb, 0xf5, 0x55, 0xc8, 0x63, 0xd7, 0x40, 0x4b, 0x50,
0xde, 0x37, 0x2d, 0xcc, 0x3a, 0x39, 0x6a, 0x1a, 0x7b, 0x40, 0xdf, 0x08, 0x3a, 0x02, 0xab, 0xb9,
0x3b, 0x7f, 0x58, 0x53, 0xe0, 0x35, 0x98, 0x27, 0x9c, 0x44, 0x90, 0x60, 0x62, 0xdd, 0xe2, 0x79,
0x7e, 0x3e, 0x48, 0x2b, 0xfe, 0x3f, 0x51, 0x60, 0x21, 0x24, 0x2d, 0xd5, 0x4d, 0x44, 0xdd, 0x51,
0x55, 0xb7, 0xee, 0x18, 0x4c, 0x8b, 0x34, 0x33, 0xec, 0x0a, 0x9b, 0xc8, 0x14, 0x5a, 0x38, 0x65,
0x52, 0x70, 0x4e, 0x0e, 0x4f, 0x28, 0x63, 0x1a, 0x41, 0xba, 0xa8, 0xe2, 0x3a, 0x47, 0x5d, 0x43,
0x90, 0x8c, 0x35, 0x58, 0xb3, 0x50, 0x94, 0x90, 0x6c, 0x9d, 0xf6, 0x58, 0x5f, 0x83, 0x79, 0xec,
0xba, 0x8e, 0xdb, 0x1b, 0x62, 0xcf, 0xd3, 0x07, 0x41, 0xef, 0x42, 0x83, 0x0e, 0x6e, 0xb1, 0x31,
0xf5, 0xef, 0x4a, 0xd0, 0x0c, 0x8f, 0x12, 0x74, 0x11, 0x98, 0x46, 0xd0, 0x45, 0x60, 0x92, 0xfb,
0x05, 0x97, 0x69, 0x49, 0xc1, 0x01, 0x6b, 0x85, 0xb6, 0xa2, 0xd5, 0xf8, 0x68, 0xd7, 0x20, 0xc6,
0x9d, 0x10, 0xc8, 0x76, 0x0c, 0x1c, 0x72, 0x00, 0x04, 0x43, 0x9c, 0x01, 0x62, 0x8c, 0x54, 0xca,
0xc1, 0x48, 0xe5, 0x1c, 0x8c, 0x54, 0x91, 0x30, 0xd2, 0x32, 0x54, 0xf6, 0xc6, 0xfd, 0x03, 0xec,
0x73, 0xbf, 0x8f, 0x3f, 0xc5, 0x19, 0xac, 0x9a, 0x60, 0x30, 0xc1, 0x47, 0xb5, 0x28, 0x1f, 0x5d,
0x80, 0x5a, 0x60, 0xa9, 0x3d, 0x5a, 0x55, 0x2b, 0x6a, 0x55, 0x6e, 0xa2, 0x3d, 0xf4, 0x56, 0xe0,
0x14, 0xd6, 0xa9, 0x44, 0xa9, 0x12, 0x85, 0x94, 0xe0, 0x92, 0xc0, 0x25, 0x7c, 0x19, 0x16, 0x22,
0xe4, 0xa0, 0x7c, 0xc6, 0x4a, 0x6f, 0x91, 0x98, 0x81, 0x5a, 0x90, 0x1b, 0xd0, 0x0c, 0x49, 0x42,
0xe1, 0xe6, 0x59, 0xa8, 0x26, 0x46, 0x29, 0x98, 0x60, 0xf7, 0xe6, 0x09, 0xd9, 0xfd, 0x3c, 0x54,
0x79, 0x8c, 0xe5, 0xb5, 0x17, 0xe2, 0x29, 0x92, 0x5c, 0x92, 0xf0, 0x29, 0xa0, 0xf0, 0x88, 0xb3,
0x39, 0xa6, 0x09, 0x1e, 0x2a, 0x24, 0x79, 0x48, 0xfd, 0x73, 0x05, 0x16, 0xa3, 0x9b, 0x9d, 0xd6,
0x70, 0xbf, 0x0f, 0x75, 0x56, 0xfc, 0xec, 0x11, 0x15, 0x22, 0xaf, 0x55, 0x26, 0x2e, 0x4f, 0x83,
0xf0, 0x3b, 0x0e, 0x42, 0x98, 0x23, 0xc7, 0x3d, 0x30, 0xed, 0x41, 0x8f, 0x60, 0x26, 0x52, 0xb8,
0x7c, 0xf0, 0x21, 0x19, 0x53, 0x7f, 0x53, 0x81, 0xcb, 0x8f, 0x46, 0x86, 0xee, 0xe3, 0x88, 0x07,
0x33, 0x6b, 0x3b, 0xa5, 0xe8, 0x67, 0x2c, 0x4c, 0xb8, 0xe6, 0xc8, 0x7e, 0x1e, 0xef, 0x67, 0x24,
0x7e, 0x1f, 0xc7, 0x26, 0xd5, 0x80, 0x7c, 0x7a, 0x6c, 0x3a, 0x50, 0x3d, 0xe4, 0xcb, 0x05, 0x5f,
0xa6, 0x04, 0xcf, 0xb1, 0x62, 0x70, 0xf1, 0x44, 0xc5, 0x60, 0x75, 0x0b, 0xce, 0x6b, 0xd8, 0xc3,
0xb6, 0x11, 0x3b, 0xc8, 0xa9, 0x93, 0x5a, 0x23, 0xe8, 0xc8, 0x96, 0x9b, 0x85, 0x53, 0x99, 0xe3,
0xdb, 0x73, 0xc9, 0xb2, 0x3e, 0x57, 0xd6, 0xc4, 0xdf, 0xa2, 0xfb, 0xf8, 0xea, 0x5f, 0x14, 0xe0,
0xdc, 0x3d, 0xc3, 0xe0, 0x7a, 0x9e, 0xbb, 0x72, 0xcf, 0xcb, 0xcb, 0x4e, 0x7a, 0xa1, 0xc5, 0xb4,
0x17, 0xfa, 0xac, 0x74, 0x2f, 0xb7, 0x42, 0xf6, 0x78, 0x18, 0x98, 0x60, 0x97, 0x35, 0x60, 0xbd,
0xcb, 0x4b, 0xa6, 0x3d, 0xcb, 0x19, 0x50, 0x33, 0x3c, 0xdd, 0x39, 0xab, 0x06, 0xc9, 0x39, 0x75,
0x04, 0xed, 0x34, 0xb1, 0x66, 0xd4, 0x23, 0x01, 0x45, 0x46, 0x0e, 0x4b, 0xfc, 0x36, 0x88, 0x27,
0x46, 0x87, 0xb6, 0x1d, 0x4f, 0xfd, 0xef, 0x02, 0xb4, 0x77, 0xf4, 0x43, 0xfc, 0xff, 0xe7, 0x82,
0x3e, 0x81, 0x25, 0x4f, 0x3f, 0xc4, 0xbd, 0x48, 0x00, 0xde, 0x73, 0xf1, 0x67, 0xdc, 0x89, 0x7d,
0x45, 0x96, 0x9a, 0x97, 0x76, 0x18, 0x69, 0x8b, 0x5e, 0x6c, 0x5c, 0xc3, 0x9f, 0xa1, 0x97, 0x60,
0x21, 0xda, 0x0d, 0x47, 0x50, 0xab, 0x52, 0x92, 0xcf, 0x47, 0x3a, 0xde, 0xba, 0x86, 0xfa, 0x19,
0x5c, 0x7c, 0x64, 0x7b, 0xd8, 0xef, 0x86, 0x5d, 0x5b, 0x33, 0xc6, 0x9f, 0x57, 0xa0, 0x1e, 0x12,
0x3e, 0xf5, 0x49, 0x8a, 0xe1, 0xa9, 0x0e, 0x74, 0xb6, 0x74, 0xf7, 0x20, 0x48, 0x67, 0x6f, 0xb0,
0x6e, 0x98, 0xe7, 0xb8, 0xe1, 0xbe, 0xe8, 0x0b, 0xd3, 0xf0, 0x3e, 0x76, 0xb1, 0xdd, 0xc7, 0x9b,
0x4e, 0xff, 0x80, 0x38, 0x24, 0x3e, 0xfb, 0x2a, 0x50, 0x89, 0xf8, 0xae, 0x1b, 0x91, 0x8f, 0xfe,
0x0a, 0xb1, 0x8f, 0xfe, 0xa6, 0x7c, 0xe0, 0xaa, 0xfe, 0xb0, 0x00, 0xcb, 0xf7, 0x2c, 0x1f, 0xbb,
0x61, 0x86, 0xe1, 0x24, 0xc9, 0x92, 0x30, 0x7b, 0x51, 0x38, 0x4d, 0xf6, 0x22, 0x47, 0x05, 0x53,
0x96, 0x6b, 0x29, 0x9d, 0x32, 0xd7, 0x72, 0x0f, 0x60, 0xe4, 0x3a, 0x23, 0xec, 0xfa, 0x26, 0x0e,
0x62, 0xbf, 0x1c, 0x0e, 0x4e, 0x64, 0x92, 0xfa, 0x09, 0xb4, 0x1e, 0xf4, 0xd7, 0x1d, 0x7b, 0xdf,
0x74, 0x87, 0x01, 0xa1, 0x52, 0x42, 0xa7, 0xe4, 0x10, 0xba, 0x42, 0x4a, 0xe8, 0x54, 0x13, 0x16,
0x23, 0x6b, 0xcf, 0xa8, 0xb8, 0x06, 0xfd, 0xde, 0xbe, 0x69, 0x9b, 0xb4, 0xdb, 0xac, 0x40, 0x1d,
0x54, 0x18, 0xf4, 0xef, 0xf3, 0x11, 0xf5, 0x4b, 0x05, 0x2e, 0x68, 0x98, 0x08, 0x4f, 0xd0, 0xb8,
0xb3, 0xeb, 0x6f, 0x79, 0x83, 0x19, 0x1c, 0x8a, 0xbb, 0x50, 0x1a, 0x7a, 0x83, 0x8c, 0xa2, 0x3b,
0x31, 0xd1, 0xb1, 0x8d, 0x34, 0x0a, 0xac, 0xfe, 0x8d, 0x02, 0x4b, 0x41, 0x69, 0x32, 0x26, 0xc2,
0x71, 0xb6, 0x55, 0x52, 0xad, 0xd4, 0x13, 0xbe, 0x04, 0x3e, 0x07, 0x73, 0xc6, 0x5e, 0x54, 0x41,
0x56, 0x8c, 0x3d, 0xaa, 0x1b, 0x25, 0x9e, 0x72, 0x49, 0xea, 0x29, 0x27, 0x19, 0xbf, 0x2c, 0xe9,
0x79, 0x7a, 0x04, 0x6d, 0xee, 0xa0, 0x7c, 0x34, 0xc2, 0xae, 0x4e, 0xf9, 0x2b, 0x40, 0xfe, 0xed,
0xc0, 0x85, 0x56, 0x32, 0xbf, 0xb3, 0x4b, 0x96, 0x25, 0xb9, 0x13, 0xad, 0xfe, 0x83, 0x02, 0x57,
0x93, 0xeb, 0x6e, 0xf3, 0xa2, 0xdd, 0xcc, 0x9f, 0x90, 0xd3, 0x8a, 0x5f, 0x21, 0xac, 0xf8, 0xcd,
0x54, 0xba, 0x8c, 0x56, 0x17, 0x4b, 0xf1, 0xea, 0x22, 0xb9, 0x56, 0x26, 0x25, 0xbe, 0xeb, 0xcc,
0x90, 0x16, 0xfb, 0x69, 0x98, 0x23, 0xe3, 0xba, 0x6d, 0xf0, 0x5c, 0xf9, 0x45, 0xd9, 0xa7, 0x74,
0xfd, 0x75, 0x06, 0xa3, 0x05, 0xc0, 0xe8, 0x6d, 0xa8, 0x8c, 0x74, 0x57, 0x1f, 0x66, 0x74, 0xc9,
0xc8, 0x44, 0x9c, 0x4f, 0xb8, 0xf9, 0xbe, 0xe8, 0x82, 0xdf, 0x3d, 0x1e, 0x61, 0x34, 0x07, 0xc5,
0x87, 0xf8, 0xa8, 0x75, 0x06, 0x01, 0x54, 0x1e, 0x3a, 0xee, 0x50, 0xb7, 0x5a, 0x0a, 0xaa, 0xc3,
0x1c, 0xaf, 0xa5, 0xb7, 0x0a, 0x68, 0x1e, 0x6a, 0xeb, 0x41, 0x7d, 0xb1, 0x55, 0xbc, 0x79, 0x13,
0x1a, 0xd1, 0x2e, 0x5f, 0x32, 0x6f, 0x13, 0x0f, 0xf4, 0xfe, 0x71, 0xeb, 0x0c, 0xaa, 0x40, 0x61,
0xf3, 0x4e, 0x4b, 0xa1, 0x7f, 0xdf, 0x68, 0x15, 0x6e, 0xfe, 0x91, 0x02, 0x8b, 0x29, 0xf2, 0xa2,
0x26, 0xc0, 0x23, 0xbb, 0xcf, 0x4b, 0xe6, 0xad, 0x33, 0xa8, 0x01, 0xd5, 0xa0, 0x80, 0xce, 0xf6,
0xde, 0x75, 0x28, 0x74, 0xab, 0x80, 0x5a, 0xd0, 0x60, 0x13, 0xc7, 0xfd, 0x3e, 0xf6, 0xbc, 0x56,
0x51, 0x8c, 0xdc, 0xd7, 0x4d, 0x6b, 0xec, 0xe2, 0x56, 0x89, 0xe0, 0xb7, 0xeb, 0x68, 0xd8, 0xc2,
0xba, 0x87, 0x5b, 0x65, 0x84, 0xa0, 0xc9, 0x1f, 0x82, 0x49, 0x95, 0xc8, 0x58, 0x30, 0x6d, 0xee,
0xe6, 0x8f, 0x94, 0x68, 0xc1, 0x8e, 0xd2, 0xe2, 0x1c, 0x9c, 0x7d, 0x64, 0x1b, 0x78, 0xdf, 0xb4,
0xb1, 0x11, 0xbe, 0x6a, 0x9d, 0x41, 0x67, 0x61, 0x61, 0x0b, 0xbb, 0x03, 0x1c, 0x19, 0x2c, 0xa0,
0x45, 0x98, 0xdf, 0x32, 0x9f, 0x46, 0x86, 0x8a, 0x68, 0x09, 0x5a, 0x3b, 0xa6, 0x3d, 0xb0, 0xa2,
0x80, 0x25, 0x3a, 0xdb, 0xb4, 0x1d, 0x37, 0x32, 0x58, 0xa6, 0x83, 0xfa, 0xa7, 0xb1, 0xc1, 0x0a,
0xea, 0xc0, 0x32, 0x25, 0xea, 0x9d, 0x0d, 0x4c, 0xa8, 0x11, 0x79, 0x37, 0xa7, 0x96, 0xaa, 0x4a,
0x4b, 0xb9, 0xf9, 0x0a, 0xd4, 0x04, 0x3b, 0xa0, 0x32, 0x28, 0xbd, 0xd6, 0x19, 0x54, 0x83, 0xf2,
0xb6, 0x3e, 0xf6, 0x08, 0xf1, 0x00, 0x2a, 0x1a, 0xf6, 0xc6, 0x43, 0xdc, 0x2a, 0xac, 0xfe, 0xda,
0x4b, 0x50, 0x23, 0x1a, 0x69, 0xdd, 0x71, 0x5c, 0x03, 0x59, 0x80, 0xe8, 0x17, 0x74, 0xc3, 0x91,
0x63, 0x8b, 0xaf, 0x6d, 0xd1, 0xad, 0x84, 0x12, 0x63, 0x0f, 0x69, 0x40, 0xce, 0xe1, 0x9d, 0xeb,
0x52, 0xf8, 0x04, 0xb0, 0x7a, 0x06, 0x0d, 0xe9, 0x6e, 0xbb, 0xe6, 0x10, 0xef, 0x9a, 0xfd, 0x83,
0x20, 0xce, 0xb9, 0x93, 0xf1, 0xc9, 0x62, 0x1a, 0x34, 0xd8, 0xef, 0x9a, 0x74, 0x3f, 0xf6, 0x89,
0x63, 0xa0, 0x2c, 0xd4, 0x33, 0xe8, 0x33, 0xaa, 0x63, 0xc3, 0xa0, 0x31, 0xd8, 0x70, 0x35, 0x7b,
0xc3, 0x14, 0xf0, 0x09, 0xb7, 0xdc, 0x84, 0x32, 0x15, 0x11, 0x24, 0x6b, 0xaf, 0x88, 0xfe, 0x8c,
0x47, 0xe7, 0x6a, 0x36, 0x80, 0x58, 0xed, 0x53, 0x58, 0x48, 0x7c, 0x44, 0x8f, 0x64, 0x8e, 0xa6,
0xfc, 0xe7, 0x10, 0x3a, 0x37, 0xf3, 0x80, 0x8a, 0xbd, 0x06, 0xd0, 0x8c, 0x7f, 0x79, 0x87, 0x56,
0x72, 0x7c, 0xbf, 0xcb, 0x76, 0x7a, 0x25, 0xf7, 0x97, 0xbe, 0x94, 0x09, 0x5a, 0xc9, 0xcf, 0xbb,
0xd1, 0xcd, 0x89, 0x0b, 0xc4, 0x99, 0xed, 0xd5, 0x5c, 0xb0, 0x62, 0xbb, 0x63, 0xca, 0x04, 0xa9,
0x6f, 0x6b, 0x93, 0x3c, 0x1e, 0x2c, 0x93, 0xf5, 0xd1, 0x6f, 0xe7, 0x76, 0x6e, 0x78, 0xb1, 0xf5,
0x2f, 0xb1, 0x1e, 0x4a, 0xd9, 0xf7, 0xa9, 0xe8, 0x0d, 0xf9, 0x72, 0x13, 0x3e, 0xac, 0xed, 0xac,
0x9e, 0x64, 0x8a, 0x40, 0xe2, 0x7b, 0xb4, 0xf9, 0x51, 0xf2, 0x85, 0x67, 0x52, 0xee, 0x82, 0xf5,
0xb2, 0x3f, 0x5e, 0xed, 0xbc, 0x71, 0x82, 0x19, 0x02, 0x01, 0x27, 0xf9, 0xfd, 0x7c, 0x20, 0x86,
0xb7, 0xa7, 0x72, 0xcd, 0xe9, 0x64, 0xf0, 0xbb, 0xb0, 0x90, 0x08, 0xbd, 0x50, 0xfe, 0xf0, 0xac,
0x33, 0xc9, 0xa7, 0x60, 0x22, 0x99, 0x68, 0x76, 0x44, 0x19, 0xdc, 0x2f, 0x69, 0x88, 0xec, 0xdc,
0xcc, 0x03, 0x2a, 0x0e, 0x32, 0x82, 0xc5, 0xc4, 0xcb, 0xc7, 0xab, 0xe8, 0xd5, 0xdc, 0xbb, 0x3d,
0x5e, 0xed, 0xbc, 0x96, 0x7f, 0xbf, 0xc7, 0xab, 0xea, 0x19, 0xe4, 0x51, 0x05, 0x9d, 0x68, 0x98,
0x43, 0x19, 0xab, 0xc8, 0x1b, 0x03, 0x3b, 0xaf, 0xe7, 0x84, 0x16, 0xc7, 0x3c, 0x84, 0xb3, 0x92,
0xbe, 0x46, 0xf4, 0xfa, 0x44, 0xf6, 0x48, 0x36, 0x74, 0x76, 0x6e, 0xe5, 0x05, 0x8f, 0x98, 0x87,
0x56, 0x80, 0xd7, 0x3d, 0xcb, 0x62, 0x4e, 0xc8, 0x6b, 0x59, 0x96, 0x2f, 0x06, 0x96, 0x71, 0xd4,
0x4c, 0x68, 0xb1, 0xe5, 0x2f, 0x00, 0xda, 0x79, 0xe2, 0x1c, 0xd1, 0x50, 0x67, 0x30, 0xe6, 0xde,
0x73, 0xa6, 0x01, 0x4c, 0x83, 0x66, 0x08, 0xe2, 0xc4, 0x19, 0x62, 0xf3, 0x1e, 0xc0, 0x03, 0xec,
0x6f, 0x61, 0xdf, 0x25, 0xd2, 0xff, 0x52, 0x16, 0xee, 0x1c, 0x20, 0xd8, 0xea, 0xe5, 0xa9, 0x70,
0x51, 0x82, 0x6e, 0xe9, 0xf6, 0x58, 0xb7, 0x22, 0x9f, 0xaf, 0xc9, 0x09, 0x9a, 0x04, 0x9b, 0x4c,
0xd0, 0x34, 0xb4, 0xd8, 0xf2, 0x48, 0xf8, 0x2f, 0x91, 0x56, 0x8b, 0xc9, 0xfe, 0x4b, 0xba, 0xcd,
0x2f, 0xa9, 0xdb, 0x27, 0xc0, 0x8b, 0x8d, 0xbf, 0x50, 0x68, 0x37, 0x6e, 0x02, 0xe0, 0x63, 0xd3,
0x7f, 0xb2, 0x6d, 0xe9, 0xb6, 0x97, 0x07, 0x05, 0x0a, 0x78, 0x02, 0x14, 0x38, 0xbc, 0x40, 0xc1,
0x80, 0xf9, 0x58, 0x5b, 0x03, 0x92, 0x7d, 0x9f, 0x25, 0xeb, 0x06, 0xe9, 0xac, 0x4c, 0x07, 0x14,
0xbb, 0xec, 0xc3, 0x7c, 0x2c, 0x50, 0x95, 0xee, 0x22, 0x0b, 0x65, 0x93, 0xca, 0x2e, 0x21, 0x1d,
0x49, 0x82, 0x7a, 0x80, 0xd2, 0xd5, 0x5b, 0x94, 0xaf, 0xd6, 0x3f, 0x49, 0xf5, 0x64, 0x97, 0x84,
0x99, 0x36, 0x4f, 0xf4, 0x47, 0xc8, 0x4d, 0x85, 0xb4, 0xdd, 0x43, 0xaa, 0xcd, 0x33, 0xda, 0x2d,
0xd4, 0x33, 0xe8, 0x63, 0xa8, 0xf0, 0x9f, 0xb9, 0xba, 0x3e, 0xb9, 0x4e, 0xc2, 0x57, 0xbf, 0x31,
0x05, 0x4a, 0x2c, 0x7c, 0x00, 0xe7, 0x32, 0xaa, 0x24, 0x52, 0x2f, 0x63, 0x72, 0x45, 0x65, 0x9a,
0xfd, 0x13, 0x9b, 0xa5, 0x8a, 0x20, 0x13, 0x36, 0xcb, 0x2a, 0x98, 0x4c, 0xdb, 0xac, 0x07, 0x8b,
0xa9, 0x24, 0xb3, 0xd4, 0x00, 0x66, 0xa5, 0xa2, 0xa7, 0x6d, 0x30, 0x80, 0x17, 0xa4, 0x09, 0x55,
0xa9, 0x6f, 0x32, 0x29, 0xf5, 0x3a, 0x6d, 0xa3, 0x3e, 0x9c, 0x95, 0xa4, 0x51, 0xa5, 0x36, 0x2e,
0x3b, 0xdd, 0x3a, 0x6d, 0x93, 0x7d, 0xe8, 0xac, 0xb9, 0x8e, 0x6e, 0xf4, 0x75, 0xcf, 0xa7, 0xa9,
0x4d, 0x12, 0xaf, 0x06, 0xce, 0xa1, 0x3c, 0x72, 0x90, 0x26, 0x40, 0xa7, 0xed, 0xb3, 0x07, 0x75,
0x7a, 0x95, 0xec, 0xa7, 0x88, 0x90, 0xdc, 0x42, 0x44, 0x20, 0x32, 0xd4, 0x8e, 0x0c, 0x50, 0x30,
0xf5, 0x2e, 0xd4, 0xd7, 0x69, 0x8d, 0xb8, 0x6b, 0x1b, 0xf8, 0x69, 0xd2, 0x5a, 0xd1, 0xdf, 0x63,
0xb8, 0x15, 0x01, 0xc8, 0x4d, 0xa1, 0x79, 0xea, 0xb3, 0x1b, 0xf8, 0x29, 0xbb, 0xe7, 0x15, 0xd9,
0xba, 0x31, 0x90, 0x8c, 0x18, 0x47, 0x0a, 0x19, 0xb1, 0xf3, 0x4b, 0x51, 0x4f, 0x56, 0x6c, 0x77,
0x3b, 0x63, 0x91, 0x14, 0x64, 0xb0, 0xeb, 0x9d, 0xfc, 0x13, 0xa2, 0x76, 0x21, 0xc0, 0xab, 0x4b,
0x0b, 0xd4, 0x2f, 0x4f, 0x42, 0x3d, 0xea, 0x9e, 0xae, 0x4c, 0x07, 0x14, 0xbb, 0x6c, 0x43, 0x8d,
0x70, 0x27, 0xbb, 0x9e, 0xeb, 0xb2, 0x89, 0xe2, 0x75, 0xfe, 0xcb, 0xd9, 0xc0, 0x5e, 0xdf, 0x35,
0xf7, 0xf8, 0xa5, 0x4b, 0xd1, 0x89, 0x81, 0x4c, 0xbc, 0x9c, 0x04, 0xa4, 0xc0, 0x7c, 0x4c, 0x7d,
0x06, 0x41, 0x3a, 0xae, 0x2a, 0x5f, 0x9f, 0x76, 0xbf, 0x71, 0x35, 0x79, 0x2b, 0x2f, 0xb8, 0xd8,
0xf6, 0x17, 0x69, 0x1c, 0x44, 0xdf, 0xaf, 0x8d, 0x4d, 0xcb, 0x08, 0xb2, 0x9b, 0xe8, 0xce, 0xa4,
0xa5, 0x62, 0xa0, 0x99, 0xee, 0xdf, 0x84, 0x19, 0x62, 0xff, 0x9f, 0x63, 0x39, 0x22, 0x9a, 0x64,
0x47, 0xd7, 0x32, 0x12, 0x8a, 0xd1, 0xf4, 0x7e, 0xe7, 0xfa, 0x64, 0x20, 0xb1, 0x32, 0x86, 0x25,
0x59, 0x4a, 0x5d, 0x1a, 0x62, 0x4f, 0xc8, 0xbd, 0x4f, 0xe3, 0x8f, 0x8f, 0xf8, 0x01, 0x7c, 0xd7,
0xb1, 0xb2, 0x0f, 0x10, 0xc9, 0xbc, 0x4e, 0x59, 0x70, 0xf5, 0xcb, 0x06, 0x54, 0x03, 0x4c, 0xbe,
0xe2, 0x4c, 0xd8, 0xd7, 0x90, 0x9a, 0xfa, 0x2e, 0x2c, 0x24, 0x7e, 0xb2, 0x46, 0x6a, 0x12, 0xe4,
0x3f, 0x6b, 0x33, 0xed, 0x6e, 0x3e, 0xe6, 0xbf, 0xf6, 0x2a, 0x62, 0xc6, 0x97, 0xb3, 0xd2, 0x5b,
0xc9, 0x70, 0x71, 0xca, 0xc2, 0xff, 0xb7, 0x23, 0xa6, 0x87, 0x00, 0x91, 0x58, 0x69, 0xf2, 0x17,
0x15, 0xc4, 0xfd, 0x9f, 0x46, 0xad, 0xa1, 0x34, 0x1c, 0x7a, 0x25, 0x4f, 0x77, 0x7a, 0xb6, 0x4b,
0x9b, 0x1d, 0x04, 0x3d, 0x82, 0x46, 0xf4, 0x5b, 0x27, 0x24, 0xfd, 0xfd, 0xce, 0xf4, 0xc7, 0x50,
0xd3, 0x4e, 0xb1, 0x75, 0x42, 0x4f, 0x79, 0xca, 0x72, 0x1e, 0xa0, 0x74, 0xf7, 0x8a, 0x34, 0xb2,
0xc8, 0xec, 0x99, 0x91, 0x46, 0x16, 0xd9, 0x2d, 0x31, 0x2c, 0xcb, 0x99, 0x6c, 0xc9, 0x90, 0x66,
0x39, 0x33, 0x9a, 0x5c, 0xa4, 0x59, 0xce, 0xac, 0x1e, 0x8f, 0x88, 0xfc, 0x4d, 0x8c, 0x05, 0x65,
0x3f, 0x46, 0x3c, 0x8d, 0x78, 0x06, 0x2c, 0x3f, 0x74, 0x7c, 0x73, 0xff, 0x38, 0x59, 0x9c, 0x93,
0xfa, 0xe1, 0x59, 0x95, 0xc1, 0xe9, 0x52, 0x7e, 0x89, 0xba, 0x81, 0x59, 0x15, 0x40, 0x94, 0xa7,
0x94, 0xd8, 0xb9, 0x9b, 0x03, 0xa3, 0xb4, 0x61, 0x5c, 0xbb, 0xfb, 0xc9, 0x1b, 0x03, 0xd3, 0x7f,
0x32, 0xde, 0x23, 0x68, 0xdd, 0x66, 0x4b, 0xbc, 0x6e, 0x3a, 0xfc, 0xbf, 0xdb, 0x81, 0xaa, 0xb8,
0x4d, 0x57, 0xbd, 0x4d, 0x56, 0x1d, 0xed, 0xed, 0x55, 0xe8, 0xd3, 0xdd, 0xff, 0x0d, 0x00, 0x00,
0xff, 0xff, 0xfa, 0xa0, 0x32, 0xd5, 0x25, 0x5c, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -5763,6 +5853,7 @@ type DataCoordClient interface {
GetIndexBuildProgress(ctx context.Context, in *indexpb.GetIndexBuildProgressRequest, opts ...grpc.CallOption) (*indexpb.GetIndexBuildProgressResponse, error)
GcConfirm(ctx context.Context, in *GcConfirmRequest, opts ...grpc.CallOption) (*GcConfirmResponse, error)
ReportDataNodeTtMsgs(ctx context.Context, in *ReportDataNodeTtMsgsRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
GcControl(ctx context.Context, in *GcControlRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
}
type dataCoordClient struct {
@ -6169,6 +6260,15 @@ func (c *dataCoordClient) ReportDataNodeTtMsgs(ctx context.Context, in *ReportDa
return out, nil
}
func (c *dataCoordClient) GcControl(ctx context.Context, in *GcControlRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
out := new(commonpb.Status)
err := c.cc.Invoke(ctx, "/milvus.proto.data.DataCoord/GcControl", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// DataCoordServer is the server API for DataCoord service.
type DataCoordServer interface {
GetComponentStates(context.Context, *milvuspb.GetComponentStatesRequest) (*milvuspb.ComponentStates, error)
@ -6219,6 +6319,7 @@ type DataCoordServer interface {
GetIndexBuildProgress(context.Context, *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error)
GcConfirm(context.Context, *GcConfirmRequest) (*GcConfirmResponse, error)
ReportDataNodeTtMsgs(context.Context, *ReportDataNodeTtMsgsRequest) (*commonpb.Status, error)
GcControl(context.Context, *GcControlRequest) (*commonpb.Status, error)
}
// UnimplementedDataCoordServer can be embedded to have forward compatible implementations.
@ -6357,6 +6458,9 @@ func (*UnimplementedDataCoordServer) GcConfirm(ctx context.Context, req *GcConfi
func (*UnimplementedDataCoordServer) ReportDataNodeTtMsgs(ctx context.Context, req *ReportDataNodeTtMsgsRequest) (*commonpb.Status, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReportDataNodeTtMsgs not implemented")
}
func (*UnimplementedDataCoordServer) GcControl(ctx context.Context, req *GcControlRequest) (*commonpb.Status, error) {
return nil, status.Errorf(codes.Unimplemented, "method GcControl not implemented")
}
func RegisterDataCoordServer(s *grpc.Server, srv DataCoordServer) {
s.RegisterService(&_DataCoord_serviceDesc, srv)
@ -7154,6 +7258,24 @@ func _DataCoord_ReportDataNodeTtMsgs_Handler(srv interface{}, ctx context.Contex
return interceptor(ctx, in, info, handler)
}
func _DataCoord_GcControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GcControlRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataCoordServer).GcControl(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.data.DataCoord/GcControl",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataCoordServer).GcControl(ctx, req.(*GcControlRequest))
}
return interceptor(ctx, in, info, handler)
}
var _DataCoord_serviceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.data.DataCoord",
HandlerType: (*DataCoordServer)(nil),
@ -7334,6 +7456,10 @@ var _DataCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "ReportDataNodeTtMsgs",
Handler: _DataCoord_ReportDataNodeTtMsgs_Handler,
},
{
MethodName: "GcControl",
Handler: _DataCoord_GcControl_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "data_coord.proto",

View File

@ -237,7 +237,6 @@ func (BinaryExpr_BinaryOp) EnumDescriptor() ([]byte, []int) {
type GenericValue struct {
// Types that are valid to be assigned to Val:
//
// *GenericValue_BoolVal
// *GenericValue_Int64Val
// *GenericValue_FloatVal
@ -1298,7 +1297,6 @@ var xxx_messageInfo_AlwaysTrueExpr proto.InternalMessageInfo
type Expr struct {
// Types that are valid to be assigned to Expr:
//
// *Expr_TermExpr
// *Expr_UnaryExpr
// *Expr_BinaryExpr
@ -1670,7 +1668,6 @@ func (m *QueryPlanNode) GetLimit() int64 {
type PlanNode struct {
// Types that are valid to be assigned to Node:
//
// *PlanNode_VectorAnns
// *PlanNode_Predicates
// *PlanNode_Query

View File

@ -3425,6 +3425,7 @@ type LeaderView struct {
GrowingSegmentIDs []int64 `protobuf:"varint,4,rep,packed,name=growing_segmentIDs,json=growingSegmentIDs,proto3" json:"growing_segmentIDs,omitempty"`
GrowingSegments map[int64]*msgpb.MsgPosition `protobuf:"bytes,5,rep,name=growing_segments,json=growingSegments,proto3" json:"growing_segments,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
TargetVersion int64 `protobuf:"varint,6,opt,name=TargetVersion,proto3" json:"TargetVersion,omitempty"`
NumOfGrowingRows int64 `protobuf:"varint,7,opt,name=num_of_growing_rows,json=numOfGrowingRows,proto3" json:"num_of_growing_rows,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3497,6 +3498,13 @@ func (m *LeaderView) GetTargetVersion() int64 {
return 0
}
func (m *LeaderView) GetNumOfGrowingRows() int64 {
if m != nil {
return m.NumOfGrowingRows
}
return 0
}
type SegmentDist struct {
NodeID int64 `protobuf:"varint,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
@ -4602,310 +4610,311 @@ func init() {
func init() { proto.RegisterFile("query_coord.proto", fileDescriptor_aab7cc9a69ed26e8) }
var fileDescriptor_aab7cc9a69ed26e8 = []byte{
// 4833 bytes of a gzipped FileDescriptorProto
// 4852 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x4b, 0x6f, 0x1c, 0x47,
0x7a, 0xea, 0x79, 0x71, 0xe6, 0x9b, 0x57, 0xb3, 0x48, 0x4a, 0xb3, 0xb3, 0x92, 0x2c, 0xb7, 0xfc,
0xe0, 0xca, 0x36, 0xa9, 0xa5, 0xd6, 0x5e, 0xed, 0xda, 0x86, 0x23, 0x91, 0x96, 0xcc, 0xb5, 0x4d,
0x33, 0x4d, 0xc9, 0x1b, 0x78, 0xbd, 0x3b, 0x6e, 0x4e, 0x17, 0x87, 0x0d, 0xf5, 0x63, 0xd4, 0xdd,
0x43, 0x9a, 0x0e, 0x10, 0xe4, 0x90, 0x4b, 0x36, 0xd9, 0x20, 0x48, 0x0e, 0xc9, 0x21, 0xc8, 0x21,
0x41, 0x80, 0x4d, 0x90, 0x5c, 0x82, 0x04, 0xc8, 0x21, 0x87, 0xbd, 0x25, 0x97, 0xbc, 0xfe, 0x43,
0x72, 0xcb, 0x31, 0x8b, 0x60, 0x81, 0x1c, 0x82, 0x7a, 0xf4, 0xa3, 0xba, 0x6b, 0x38, 0x4d, 0x8e,
0xe4, 0x47, 0x90, 0xdb, 0xf4, 0x57, 0x8f, 0xef, 0xab, 0xef, 0x55, 0xdf, 0xf7, 0x55, 0xd5, 0xc0,
0xe2, 0xe3, 0x09, 0xf6, 0x4f, 0x06, 0x43, 0xcf, 0xf3, 0xcd, 0xb5, 0xb1, 0xef, 0x85, 0x1e, 0x42,
0x8e, 0x65, 0x1f, 0x4d, 0x02, 0xf6, 0xb5, 0x46, 0xdb, 0xfb, 0xad, 0xa1, 0xe7, 0x38, 0x9e, 0xcb,
0x60, 0xfd, 0x56, 0xba, 0x47, 0xbf, 0x63, 0xb9, 0x21, 0xf6, 0x5d, 0xc3, 0x8e, 0x5a, 0x83, 0xe1,
0x21, 0x76, 0x0c, 0xfe, 0xd5, 0x70, 0x82, 0x11, 0xff, 0xa9, 0x9a, 0x46, 0x68, 0xa4, 0x51, 0xf5,
0x17, 0x2d, 0xd7, 0xc4, 0x9f, 0xa6, 0x41, 0xda, 0x6f, 0x28, 0x70, 0x71, 0xef, 0xd0, 0x3b, 0xde,
0xf4, 0x6c, 0x1b, 0x0f, 0x43, 0xcb, 0x73, 0x03, 0x1d, 0x3f, 0x9e, 0xe0, 0x20, 0x44, 0x37, 0xa1,
0xb2, 0x6f, 0x04, 0xb8, 0xa7, 0x5c, 0x53, 0x56, 0x9b, 0x1b, 0x97, 0xd7, 0x04, 0x3a, 0x39, 0x81,
0xef, 0x07, 0xa3, 0xbb, 0x46, 0x80, 0x75, 0xda, 0x13, 0x21, 0xa8, 0x98, 0xfb, 0xdb, 0x5b, 0xbd,
0xd2, 0x35, 0x65, 0xb5, 0xac, 0xd3, 0xdf, 0xe8, 0x39, 0x68, 0x0f, 0xe3, 0xb9, 0xb7, 0xb7, 0x82,
0x5e, 0xf9, 0x5a, 0x79, 0xb5, 0xac, 0x8b, 0x40, 0xed, 0xc7, 0x25, 0xb8, 0x94, 0x23, 0x23, 0x18,
0x7b, 0x6e, 0x80, 0xd1, 0x2d, 0xa8, 0x05, 0xa1, 0x11, 0x4e, 0x02, 0x4e, 0xc9, 0xd7, 0xa5, 0x94,
0xec, 0xd1, 0x2e, 0x3a, 0xef, 0x9a, 0x47, 0x5b, 0x92, 0xa0, 0x45, 0xdf, 0x84, 0x65, 0xcb, 0x7d,
0x1f, 0x3b, 0x9e, 0x7f, 0x32, 0x18, 0x63, 0x7f, 0x88, 0xdd, 0xd0, 0x18, 0xe1, 0x88, 0xc6, 0xa5,
0xa8, 0x6d, 0x37, 0x69, 0x42, 0xaf, 0xc1, 0x25, 0x26, 0xc3, 0x00, 0xfb, 0x47, 0xd6, 0x10, 0x0f,
0x8c, 0x23, 0xc3, 0xb2, 0x8d, 0x7d, 0x1b, 0xf7, 0x2a, 0xd7, 0xca, 0xab, 0x75, 0x7d, 0x85, 0x36,
0xef, 0xb1, 0xd6, 0x3b, 0x51, 0x23, 0xfa, 0x06, 0xa8, 0x3e, 0x3e, 0xf0, 0x71, 0x70, 0x38, 0x18,
0xfb, 0xde, 0xc8, 0xc7, 0x41, 0xd0, 0xab, 0x52, 0x34, 0x5d, 0x0e, 0xdf, 0xe5, 0x60, 0xed, 0xcf,
0x14, 0x58, 0x21, 0xcc, 0xd8, 0x35, 0xfc, 0xd0, 0x7a, 0x0a, 0x22, 0xd1, 0xa0, 0x95, 0x66, 0x43,
0xaf, 0x4c, 0xdb, 0x04, 0x18, 0xe9, 0x33, 0x8e, 0xd0, 0x13, 0xf6, 0x55, 0x28, 0xa9, 0x02, 0x4c,
0xfb, 0x17, 0xae, 0x3b, 0x69, 0x3a, 0xe7, 0x91, 0x59, 0x16, 0x67, 0x29, 0x8f, 0xf3, 0x3c, 0x12,
0x93, 0x71, 0xbe, 0x22, 0xe7, 0xfc, 0x3f, 0x95, 0x61, 0xe5, 0x3d, 0xcf, 0x30, 0x13, 0x35, 0xfc,
0xfc, 0x39, 0xff, 0x26, 0xd4, 0x98, 0x45, 0xf7, 0x2a, 0x14, 0xd7, 0xf3, 0x22, 0x2e, 0x6e, 0xed,
0x09, 0x85, 0x7b, 0x14, 0xa0, 0xf3, 0x41, 0xe8, 0x79, 0xe8, 0xf8, 0x78, 0x6c, 0x5b, 0x43, 0x63,
0xe0, 0x4e, 0x9c, 0x7d, 0xec, 0xf7, 0xaa, 0xd7, 0x94, 0xd5, 0xaa, 0xde, 0xe6, 0xd0, 0x1d, 0x0a,
0x44, 0x9f, 0x40, 0xfb, 0xc0, 0xc2, 0xb6, 0x39, 0xa0, 0x2e, 0x61, 0x7b, 0xab, 0x57, 0xbb, 0x56,
0x5e, 0x6d, 0x6e, 0xbc, 0xbe, 0x96, 0xf7, 0x46, 0x6b, 0x52, 0x8e, 0xac, 0xdd, 0x23, 0xc3, 0xb7,
0xd9, 0xe8, 0xb7, 0xdd, 0xd0, 0x3f, 0xd1, 0x5b, 0x07, 0x29, 0x10, 0xea, 0xc1, 0x02, 0x67, 0x6f,
0x6f, 0xe1, 0x9a, 0xb2, 0x5a, 0xd7, 0xa3, 0x4f, 0xf4, 0x22, 0x74, 0x7d, 0x1c, 0x78, 0x13, 0x7f,
0x88, 0x07, 0x23, 0xdf, 0x9b, 0x8c, 0x83, 0x5e, 0xfd, 0x5a, 0x79, 0xb5, 0xa1, 0x77, 0x22, 0xf0,
0x7d, 0x0a, 0xed, 0xbf, 0x05, 0x8b, 0x39, 0x2c, 0x48, 0x85, 0xf2, 0x23, 0x7c, 0x42, 0x05, 0x51,
0xd6, 0xc9, 0x4f, 0xb4, 0x0c, 0xd5, 0x23, 0xc3, 0x9e, 0x60, 0xce, 0x6a, 0xf6, 0xf1, 0xdd, 0xd2,
0x6d, 0x45, 0xfb, 0x23, 0x05, 0x7a, 0x3a, 0xb6, 0xb1, 0x11, 0xe0, 0x2f, 0x52, 0xa4, 0x17, 0xa1,
0xe6, 0x7a, 0x26, 0xde, 0xde, 0xa2, 0x22, 0x2d, 0xeb, 0xfc, 0x4b, 0xfb, 0x85, 0x02, 0xcb, 0xf7,
0x71, 0x48, 0xcc, 0xc0, 0x0a, 0x42, 0x6b, 0x18, 0xdb, 0xf9, 0x9b, 0x50, 0xf6, 0xf1, 0x63, 0x4e,
0xd9, 0x4b, 0x22, 0x65, 0xb1, 0xfb, 0x97, 0x8d, 0xd4, 0xc9, 0x38, 0xf4, 0x2c, 0xb4, 0x4c, 0xc7,
0x1e, 0x0c, 0x0f, 0x0d, 0xd7, 0xc5, 0x36, 0x33, 0xa4, 0x86, 0xde, 0x34, 0x1d, 0x7b, 0x93, 0x83,
0xd0, 0x55, 0x80, 0x00, 0x8f, 0x1c, 0xec, 0x86, 0x89, 0x4f, 0x4e, 0x41, 0xd0, 0x0d, 0x58, 0x3c,
0xf0, 0x3d, 0x67, 0x10, 0x1c, 0x1a, 0xbe, 0x39, 0xb0, 0xb1, 0x61, 0x62, 0x9f, 0x52, 0x5f, 0xd7,
0xbb, 0xa4, 0x61, 0x8f, 0xc0, 0xdf, 0xa3, 0x60, 0x74, 0x0b, 0xaa, 0xc1, 0xd0, 0x1b, 0x63, 0xaa,
0x69, 0x9d, 0x8d, 0x2b, 0x32, 0x1d, 0xda, 0x32, 0x42, 0x63, 0x8f, 0x74, 0xd2, 0x59, 0x5f, 0xed,
0xef, 0x2a, 0xcc, 0xd4, 0xbe, 0xe4, 0x4e, 0x2e, 0x65, 0x8e, 0xd5, 0x27, 0x63, 0x8e, 0xb5, 0x42,
0xe6, 0xb8, 0x70, 0xba, 0x39, 0xe6, 0xb8, 0x76, 0x16, 0x73, 0xac, 0xcf, 0x34, 0xc7, 0x86, 0xcc,
0x1c, 0xd1, 0xdb, 0xd0, 0x65, 0x01, 0x84, 0xe5, 0x1e, 0x78, 0x03, 0xdb, 0x0a, 0xc2, 0x1e, 0x50,
0x32, 0xaf, 0x64, 0x35, 0xd4, 0xc4, 0x9f, 0xae, 0x31, 0xc4, 0xee, 0x81, 0xa7, 0xb7, 0xad, 0xe8,
0xe7, 0x7b, 0x56, 0x10, 0xce, 0x6f, 0xd5, 0x3f, 0x4b, 0xac, 0xfa, 0xcb, 0xae, 0x3d, 0x89, 0xe5,
0x57, 0x05, 0xcb, 0xff, 0x73, 0x05, 0xbe, 0x76, 0x1f, 0x87, 0x31, 0xf9, 0xc4, 0x90, 0xf1, 0x97,
0x74, 0x9b, 0xff, 0x2b, 0x05, 0xfa, 0x32, 0x5a, 0xe7, 0xd9, 0xea, 0x3f, 0x82, 0x8b, 0x31, 0x8e,
0x81, 0x89, 0x83, 0xa1, 0x6f, 0x8d, 0xa9, 0x18, 0xa9, 0xaf, 0x6a, 0x6e, 0x5c, 0x97, 0x29, 0x7e,
0x96, 0x82, 0x95, 0x78, 0x8a, 0xad, 0xd4, 0x0c, 0xda, 0x4f, 0x14, 0x58, 0x21, 0xbe, 0x91, 0x3b,
0x33, 0xa2, 0x81, 0xe7, 0xe6, 0xab, 0xe8, 0x26, 0x4b, 0x39, 0x37, 0x59, 0x80, 0xc7, 0x34, 0xc4,
0xce, 0xd2, 0x33, 0x0f, 0xef, 0x5e, 0x85, 0x2a, 0x31, 0xc0, 0x88, 0x55, 0xcf, 0xc8, 0x58, 0x95,
0x46, 0xc6, 0x7a, 0x6b, 0x2e, 0xa3, 0x22, 0xf1, 0xdb, 0x73, 0xa8, 0x5b, 0x76, 0xd9, 0x25, 0xc9,
0xb2, 0x7f, 0x5b, 0x81, 0x4b, 0x39, 0x84, 0xf3, 0xac, 0xfb, 0x0d, 0xa8, 0xd1, 0xdd, 0x28, 0x5a,
0xf8, 0x73, 0xd2, 0x85, 0xa7, 0xd0, 0x11, 0x6f, 0xa3, 0xf3, 0x31, 0x9a, 0x07, 0x6a, 0xb6, 0x8d,
0xec, 0x93, 0x7c, 0x8f, 0x1c, 0xb8, 0x86, 0xc3, 0x18, 0xd0, 0xd0, 0x9b, 0x1c, 0xb6, 0x63, 0x38,
0x18, 0x7d, 0x0d, 0xea, 0xc4, 0x64, 0x07, 0x96, 0x19, 0x89, 0x7f, 0x81, 0x9a, 0xb0, 0x19, 0xa0,
0x2b, 0x00, 0xb4, 0xc9, 0x30, 0x4d, 0x9f, 0x6d, 0xa1, 0x0d, 0xbd, 0x41, 0x20, 0x77, 0x08, 0x40,
0xfb, 0x43, 0x05, 0xae, 0xee, 0x9d, 0xb8, 0xc3, 0x1d, 0x7c, 0xbc, 0xe9, 0x63, 0x23, 0xc4, 0x89,
0xd3, 0x7e, 0xaa, 0x8c, 0x47, 0xd7, 0xa0, 0x99, 0xb2, 0x5f, 0xae, 0x92, 0x69, 0x90, 0xf6, 0xd7,
0x0a, 0xb4, 0xc8, 0x2e, 0xf2, 0x3e, 0x0e, 0x0d, 0xa2, 0x22, 0xe8, 0x3b, 0xd0, 0xb0, 0x3d, 0xc3,
0x1c, 0x84, 0x27, 0x63, 0x46, 0x4d, 0x27, 0x4b, 0x4d, 0xb2, 0xf5, 0x3c, 0x38, 0x19, 0x63, 0xbd,
0x6e, 0xf3, 0x5f, 0x85, 0x28, 0xca, 0x7a, 0x99, 0xb2, 0xc4, 0x53, 0x3e, 0x03, 0x4d, 0x07, 0x87,
0xbe, 0x35, 0x64, 0x44, 0x54, 0xa8, 0x28, 0x80, 0x81, 0x08, 0x22, 0xed, 0x27, 0x35, 0xb8, 0xf8,
0x7d, 0x23, 0x1c, 0x1e, 0x6e, 0x39, 0x51, 0x14, 0x73, 0x7e, 0x3e, 0x26, 0x7e, 0xb9, 0x94, 0xf6,
0xcb, 0x4f, 0xcc, 0xef, 0xc7, 0x36, 0x5a, 0x95, 0xd9, 0x28, 0x49, 0xcc, 0xd7, 0x3e, 0xe4, 0x6a,
0x96, 0xb2, 0xd1, 0x54, 0xb0, 0x51, 0x3b, 0x4f, 0xb0, 0xb1, 0x09, 0x6d, 0xfc, 0xe9, 0xd0, 0x9e,
0x10, 0x7d, 0xa5, 0xd8, 0x59, 0x14, 0x71, 0x55, 0x82, 0x3d, 0xed, 0x20, 0x5a, 0x7c, 0xd0, 0x36,
0xa7, 0x81, 0xe9, 0x82, 0x83, 0x43, 0x83, 0x86, 0x0a, 0xcd, 0x8d, 0x6b, 0xd3, 0x74, 0x21, 0x52,
0x20, 0xa6, 0x0f, 0xe4, 0x0b, 0x5d, 0x86, 0x06, 0x0f, 0x6d, 0xb6, 0xb7, 0x7a, 0x0d, 0xca, 0xbe,
0x04, 0x80, 0x0c, 0x68, 0x73, 0xef, 0xc9, 0x29, 0x64, 0x01, 0xc4, 0x1b, 0x32, 0x04, 0x72, 0x61,
0xa7, 0x29, 0x0f, 0x78, 0xa0, 0x13, 0xa4, 0x40, 0x24, 0xf3, 0xf7, 0x0e, 0x0e, 0x6c, 0xcb, 0xc5,
0x3b, 0x4c, 0xc2, 0x4d, 0x4a, 0x84, 0x08, 0x24, 0xe1, 0xd0, 0x11, 0xf6, 0x03, 0xcb, 0x73, 0x7b,
0x2d, 0xda, 0x1e, 0x7d, 0xca, 0xa2, 0x9c, 0xf6, 0x39, 0xa2, 0x9c, 0x01, 0x2c, 0xe6, 0x28, 0x95,
0x44, 0x39, 0xdf, 0x4a, 0x47, 0x39, 0xb3, 0x45, 0x95, 0x8a, 0x82, 0x7e, 0xaa, 0xc0, 0xca, 0x43,
0x37, 0x98, 0xec, 0xc7, 0x2c, 0xfa, 0x62, 0xcc, 0x21, 0xeb, 0x44, 0x2b, 0x39, 0x27, 0xaa, 0xfd,
0x57, 0x15, 0xba, 0x7c, 0x15, 0x44, 0x6b, 0xa8, 0xcb, 0xb9, 0x0c, 0x8d, 0x78, 0x1f, 0xe5, 0x0c,
0x49, 0x00, 0x59, 0x1f, 0x56, 0xca, 0xf9, 0xb0, 0x42, 0xa4, 0x45, 0x51, 0x51, 0x25, 0x15, 0x15,
0x5d, 0x01, 0x38, 0xb0, 0x27, 0xc1, 0xe1, 0x20, 0xb4, 0x1c, 0xcc, 0xa3, 0xb2, 0x06, 0x85, 0x3c,
0xb0, 0x1c, 0x8c, 0xee, 0x40, 0x6b, 0xdf, 0x72, 0x6d, 0x6f, 0x34, 0x18, 0x1b, 0xe1, 0x61, 0xc0,
0xd3, 0x62, 0x99, 0x58, 0x68, 0x0c, 0x7b, 0x97, 0xf6, 0xd5, 0x9b, 0x6c, 0xcc, 0x2e, 0x19, 0x82,
0xae, 0x42, 0xd3, 0x9d, 0x38, 0x03, 0xef, 0x60, 0xe0, 0x7b, 0xc7, 0x01, 0x4d, 0x7e, 0xcb, 0x7a,
0xc3, 0x9d, 0x38, 0x1f, 0x1c, 0xe8, 0xde, 0x31, 0xd9, 0xc7, 0x1a, 0x64, 0x47, 0x0b, 0x6c, 0x6f,
0xc4, 0x12, 0xdf, 0xd9, 0xf3, 0x27, 0x03, 0xc8, 0x68, 0x13, 0xdb, 0xa1, 0x41, 0x47, 0x37, 0x8a,
0x8d, 0x8e, 0x07, 0xa0, 0x17, 0xa0, 0x33, 0xf4, 0x9c, 0xb1, 0x41, 0x39, 0x74, 0xcf, 0xf7, 0x1c,
0x6a, 0x80, 0x65, 0x3d, 0x03, 0x45, 0x9b, 0xd0, 0x4c, 0x8c, 0x20, 0xe8, 0x35, 0x29, 0x1e, 0x4d,
0x66, 0xa5, 0xa9, 0x50, 0x9e, 0x28, 0x28, 0xc4, 0x56, 0x10, 0x10, 0xcd, 0x88, 0x8c, 0x3d, 0xb0,
0x3e, 0xc3, 0xdc, 0xd0, 0x9a, 0x1c, 0xb6, 0x67, 0x7d, 0x86, 0x49, 0x7a, 0x64, 0xb9, 0x01, 0xf6,
0xc3, 0x28, 0x59, 0xed, 0xb5, 0xa9, 0xfa, 0xb4, 0x19, 0x94, 0x2b, 0x36, 0xda, 0x82, 0x4e, 0x10,
0x1a, 0x7e, 0x38, 0x18, 0x7b, 0x01, 0x55, 0x80, 0x5e, 0x87, 0xea, 0x76, 0xc6, 0x24, 0x9d, 0x60,
0x44, 0x14, 0x7b, 0x97, 0x77, 0xd2, 0xdb, 0x74, 0x50, 0xf4, 0x49, 0x66, 0xa1, 0x9c, 0x48, 0x66,
0xe9, 0x16, 0x9a, 0x85, 0x0e, 0x8a, 0x67, 0x59, 0x25, 0xe9, 0x92, 0x61, 0x1a, 0xfb, 0x36, 0xfe,
0x90, 0x7b, 0x10, 0x95, 0x2e, 0x2c, 0x0b, 0xd6, 0xfe, 0xb4, 0x0c, 0x1d, 0x91, 0x3d, 0xc4, 0xed,
0xb0, 0xac, 0x2c, 0xd2, 0xf9, 0xe8, 0x93, 0x30, 0x0b, 0xbb, 0x64, 0x34, 0x4b, 0x01, 0xa9, 0xca,
0xd7, 0xf5, 0x26, 0x83, 0xd1, 0x09, 0x88, 0xea, 0x32, 0xa1, 0x50, 0x3b, 0x2b, 0x53, 0x46, 0x35,
0x28, 0x84, 0x86, 0x2a, 0x3d, 0x58, 0x88, 0xb2, 0x47, 0xa6, 0xf0, 0xd1, 0x27, 0x69, 0xd9, 0x9f,
0x58, 0x14, 0x2b, 0x53, 0xf8, 0xe8, 0x13, 0x6d, 0x41, 0x8b, 0x4d, 0x39, 0x36, 0x7c, 0xc3, 0x89,
0xd4, 0xfd, 0x59, 0xa9, 0xcb, 0x78, 0x17, 0x9f, 0x7c, 0x48, 0xbc, 0xcf, 0xae, 0x61, 0xf9, 0x3a,
0x53, 0x8f, 0x5d, 0x3a, 0x0a, 0xad, 0x82, 0xca, 0x66, 0x39, 0xb0, 0x6c, 0xcc, 0x0d, 0x67, 0x81,
0xa5, 0x90, 0x14, 0x7e, 0xcf, 0xb2, 0x31, 0xb3, 0x8d, 0x78, 0x09, 0x54, 0x21, 0xea, 0xcc, 0x34,
0x28, 0x84, 0xaa, 0xc3, 0x75, 0x60, 0x5e, 0x74, 0x10, 0xf9, 0x66, 0xb6, 0x81, 0x30, 0x1a, 0x39,
0x5b, 0x69, 0x48, 0x36, 0x71, 0x98, 0x71, 0x01, 0x5b, 0x8e, 0x3b, 0x71, 0xa8, 0x69, 0x6d, 0xc0,
0xca, 0x70, 0xe2, 0xfb, 0x6c, 0x7b, 0x49, 0xcf, 0xd3, 0xa4, 0x49, 0xf7, 0x12, 0x6f, 0xdc, 0x4e,
0x4d, 0xa7, 0xfd, 0x5e, 0x15, 0x96, 0x88, 0x57, 0xe2, 0x0e, 0x6a, 0x8e, 0xa0, 0xe2, 0x0a, 0x80,
0x19, 0x84, 0x03, 0xc1, 0x93, 0x36, 0xcc, 0x20, 0xe4, 0x5b, 0xce, 0x77, 0xa2, 0x98, 0xa0, 0x3c,
0x3d, 0xc5, 0xc9, 0x78, 0xc9, 0x7c, 0x5c, 0x70, 0xae, 0x9a, 0xe0, 0x75, 0x68, 0xf3, 0xfc, 0x5e,
0x48, 0x46, 0x5b, 0x0c, 0xb8, 0x23, 0xf7, 0xf5, 0x35, 0x69, 0x6d, 0x32, 0x15, 0x1b, 0x2c, 0xcc,
0x17, 0x1b, 0xd4, 0xb3, 0xb1, 0xc1, 0x3d, 0xe8, 0x8a, 0xe6, 0x19, 0xf9, 0xb7, 0x19, 0xf6, 0xd9,
0x11, 0xec, 0x33, 0x48, 0x6f, 0xed, 0x20, 0x6e, 0xed, 0xd7, 0xa1, 0xed, 0x62, 0x6c, 0x0e, 0x42,
0xdf, 0x70, 0x83, 0x03, 0xec, 0x53, 0xb5, 0xa8, 0xeb, 0x2d, 0x02, 0x7c, 0xc0, 0x61, 0xe8, 0x0d,
0x00, 0xba, 0x46, 0x56, 0xd2, 0x6a, 0x4d, 0x2f, 0x69, 0x51, 0xa5, 0xa1, 0x25, 0x2d, 0xca, 0x14,
0xfa, 0xf3, 0x09, 0x45, 0x0f, 0xda, 0x3f, 0x97, 0xe0, 0x22, 0x2f, 0x71, 0xcc, 0xaf, 0x97, 0xd3,
0x76, 0xf7, 0x68, 0x7b, 0x2c, 0x9f, 0x52, 0x34, 0xa8, 0x14, 0x08, 0x80, 0xab, 0x92, 0x00, 0x58,
0x4c, 0x9c, 0x6b, 0xb9, 0xc4, 0x39, 0xae, 0x19, 0x2e, 0x14, 0xaf, 0x19, 0xa2, 0x65, 0xa8, 0xd2,
0x6c, 0x8e, 0xea, 0x4e, 0x43, 0x67, 0x1f, 0x85, 0xa4, 0xaa, 0xfd, 0x41, 0x09, 0xda, 0x7b, 0xd8,
0xf0, 0x87, 0x87, 0x11, 0x1f, 0x5f, 0x4b, 0xd7, 0x58, 0x9f, 0x9b, 0x52, 0x63, 0x15, 0x86, 0x7c,
0x65, 0x8a, 0xab, 0x04, 0x41, 0xe8, 0x85, 0x46, 0x4c, 0xe5, 0xc0, 0x9d, 0x38, 0xbc, 0xf0, 0xd8,
0xa5, 0x0d, 0x9c, 0xd4, 0x9d, 0x89, 0xa3, 0xfd, 0xa7, 0x02, 0xad, 0x5f, 0x26, 0xd3, 0x44, 0x8c,
0xb9, 0x9d, 0x66, 0xcc, 0x0b, 0x53, 0x18, 0xa3, 0x93, 0xc4, 0x0c, 0x1f, 0xe1, 0xaf, 0x5c, 0xdd,
0xf9, 0x1f, 0x14, 0xe8, 0x93, 0xb4, 0x5c, 0x67, 0x7e, 0x67, 0x7e, 0xeb, 0xba, 0x0e, 0xed, 0x23,
0x21, 0x00, 0x2e, 0x51, 0xe5, 0x6c, 0x1d, 0xa5, 0xcb, 0x08, 0x3a, 0xa8, 0x51, 0x19, 0x98, 0x2f,
0x36, 0xda, 0x06, 0x5e, 0x94, 0x51, 0x9d, 0x21, 0x8e, 0x7a, 0x88, 0xae, 0x2f, 0x02, 0xb5, 0xdf,
0x51, 0x60, 0x49, 0xd2, 0x11, 0x5d, 0x82, 0x05, 0x5e, 0xb2, 0xe0, 0x31, 0x06, 0xb3, 0x77, 0x93,
0x88, 0x27, 0x29, 0xba, 0x59, 0x66, 0x3e, 0xaa, 0x36, 0x49, 0x16, 0x1e, 0xe7, 0x67, 0x66, 0x4e,
0x3e, 0x66, 0x80, 0xfa, 0x50, 0xe7, 0xde, 0x34, 0x4a, 0x7c, 0xe3, 0x6f, 0xed, 0x11, 0xa0, 0xfb,
0x38, 0xd9, 0xbb, 0xe6, 0xe1, 0x68, 0xe2, 0x6f, 0x12, 0x42, 0xd3, 0x4e, 0xc8, 0xd4, 0xfe, 0x5d,
0x81, 0x25, 0x01, 0xdb, 0x3c, 0xa5, 0xa5, 0x64, 0x7f, 0x2d, 0x9d, 0x67, 0x7f, 0x15, 0xca, 0x27,
0xe5, 0x33, 0x95, 0x4f, 0xae, 0x02, 0xc4, 0xfc, 0x8f, 0x38, 0x9a, 0x82, 0x68, 0x7f, 0xaf, 0xc0,
0xc5, 0x77, 0x0c, 0xd7, 0xf4, 0x0e, 0x0e, 0xe6, 0x57, 0xd5, 0x4d, 0x10, 0x52, 0xe5, 0xa2, 0x05,
0x44, 0x31, 0xbf, 0x7e, 0x09, 0x16, 0x7d, 0xb6, 0x33, 0x99, 0xa2, 0x2e, 0x97, 0x75, 0x35, 0x6a,
0x88, 0x75, 0xf4, 0x2f, 0x4b, 0x80, 0xc8, 0xaa, 0xef, 0x1a, 0xb6, 0xe1, 0x0e, 0xf1, 0xf9, 0x49,
0x7f, 0x1e, 0x3a, 0x42, 0x08, 0x13, 0x1f, 0xe8, 0xa7, 0x63, 0x98, 0x00, 0xbd, 0x0b, 0x9d, 0x7d,
0x86, 0x6a, 0xe0, 0x63, 0x23, 0xf0, 0x5c, 0x2e, 0x0e, 0x69, 0xad, 0xf0, 0x81, 0x6f, 0x8d, 0x46,
0xd8, 0xdf, 0xf4, 0x5c, 0x93, 0x47, 0xfa, 0xfb, 0x11, 0x99, 0x64, 0x28, 0x31, 0x86, 0x24, 0x9e,
0x8b, 0x85, 0x13, 0x07, 0x74, 0x94, 0x15, 0x01, 0x36, 0xec, 0x84, 0x11, 0xc9, 0x6e, 0xa8, 0xb2,
0x86, 0xbd, 0xe9, 0xa5, 0x62, 0x49, 0x7c, 0xa5, 0xfd, 0x8d, 0x02, 0x28, 0x4e, 0xe7, 0x69, 0xfd,
0x83, 0x5a, 0x74, 0x76, 0xa8, 0x22, 0xd9, 0x94, 0x2f, 0x43, 0xc3, 0x8c, 0x46, 0x72, 0x17, 0x94,
0x00, 0xe8, 0x1e, 0x49, 0x89, 0x1e, 0x10, 0xcd, 0xc3, 0x66, 0x94, 0x2e, 0x33, 0xe0, 0x7b, 0x14,
0x26, 0x86, 0x67, 0x95, 0x6c, 0x78, 0x96, 0xae, 0x84, 0x56, 0x85, 0x4a, 0xa8, 0xf6, 0xd3, 0x12,
0xa8, 0x74, 0x0b, 0xd9, 0x4c, 0x4a, 0x5a, 0x85, 0x88, 0xbe, 0x0e, 0x6d, 0x7e, 0x21, 0x46, 0x20,
0xbc, 0xf5, 0x38, 0x35, 0x19, 0xba, 0x09, 0xcb, 0xac, 0x93, 0x8f, 0x83, 0x89, 0x9d, 0x64, 0x8a,
0x2c, 0x01, 0x42, 0x8f, 0xd9, 0xde, 0x45, 0x9a, 0xa2, 0x11, 0x0f, 0xe1, 0xe2, 0xc8, 0xf6, 0xf6,
0x0d, 0x7b, 0x20, 0x8a, 0x87, 0xc9, 0xb0, 0x80, 0xc6, 0x2f, 0xb3, 0xe1, 0x7b, 0x69, 0x19, 0x06,
0xe8, 0x2e, 0xb4, 0x03, 0x8c, 0x1f, 0x25, 0xe9, 0x63, 0xb5, 0x48, 0xfa, 0xd8, 0x22, 0x63, 0xa2,
0x2f, 0xed, 0x8f, 0x15, 0xe8, 0x66, 0xce, 0x31, 0xb2, 0xc5, 0x0e, 0x25, 0x5f, 0xec, 0xb8, 0x0d,
0x55, 0xe2, 0xa9, 0xd8, 0xde, 0xd2, 0x91, 0x27, 0xe2, 0xe2, 0xac, 0x3a, 0x1b, 0x80, 0xd6, 0x61,
0x49, 0x72, 0x5f, 0x82, 0x8b, 0x1f, 0xe5, 0xaf, 0x4b, 0x68, 0x3f, 0xaf, 0x40, 0x33, 0xc5, 0x8a,
0x19, 0x75, 0x9a, 0x27, 0x52, 0x8f, 0x9e, 0x76, 0x3e, 0x4e, 0x54, 0xce, 0xc1, 0x0e, 0xcb, 0x15,
0x79, 0xe2, 0xea, 0x60, 0x87, 0x66, 0x8a, 0xe9, 0x24, 0xb0, 0x26, 0x26, 0x81, 0x62, 0x9a, 0xbc,
0x70, 0x4a, 0x9a, 0x5c, 0x17, 0xd3, 0x64, 0xc1, 0x84, 0x1a, 0x59, 0x13, 0x2a, 0x5a, 0x3a, 0xb9,
0x09, 0x4b, 0x43, 0x56, 0xef, 0xbf, 0x7b, 0xb2, 0x19, 0x37, 0xf1, 0xa0, 0x54, 0xd6, 0x84, 0xee,
0x25, 0x45, 0x51, 0x26, 0x65, 0x96, 0x74, 0xc8, 0xb3, 0x70, 0x2e, 0x1b, 0x26, 0xe4, 0xc8, 0x33,
0xd3, 0xaf, 0x6c, 0xd1, 0xa6, 0x7d, 0xae, 0xa2, 0xcd, 0x33, 0xd0, 0x8c, 0x22, 0x15, 0x62, 0xe9,
0x1d, 0xe6, 0xf4, 0x22, 0x37, 0x60, 0x06, 0x82, 0x1f, 0xe8, 0x8a, 0x27, 0x22, 0xd9, 0x1a, 0x86,
0x9a, 0xaf, 0x61, 0x5c, 0x82, 0x05, 0x2b, 0x18, 0x1c, 0x18, 0x8f, 0x70, 0x6f, 0x91, 0xb6, 0xd6,
0xac, 0xe0, 0x9e, 0xf1, 0x08, 0x6b, 0xff, 0x5a, 0x86, 0x4e, 0xb2, 0xc1, 0x16, 0xf6, 0x20, 0x45,
0xee, 0x0c, 0xed, 0x80, 0x9a, 0xc4, 0x3d, 0x94, 0xc3, 0xa7, 0xe6, 0xe0, 0xd9, 0x63, 0xc6, 0xee,
0x38, 0x63, 0xaf, 0xc2, 0x76, 0x5f, 0x39, 0xd3, 0x76, 0x3f, 0xe7, 0x6d, 0x82, 0x5b, 0xb0, 0x12,
0xef, 0xbd, 0xc2, 0xb2, 0x59, 0x82, 0xb5, 0x1c, 0x35, 0xee, 0xa6, 0x97, 0x3f, 0xc5, 0x05, 0x2c,
0x4c, 0x73, 0x01, 0x59, 0x15, 0xa8, 0xe7, 0x54, 0x20, 0x7f, 0xa9, 0xa1, 0x21, 0xb9, 0xd4, 0xa0,
0x3d, 0x84, 0x25, 0x5a, 0xa0, 0x0e, 0x86, 0xbe, 0xb5, 0x8f, 0xe3, 0x14, 0xa0, 0x88, 0x58, 0xfb,
0x50, 0xcf, 0x64, 0x11, 0xf1, 0xb7, 0xf6, 0x63, 0x05, 0x2e, 0xe6, 0xe7, 0xa5, 0x1a, 0x93, 0x38,
0x12, 0x45, 0x70, 0x24, 0xbf, 0x02, 0x4b, 0xa9, 0x88, 0x52, 0x98, 0x79, 0x4a, 0x04, 0x2e, 0x21,
0x5c, 0x47, 0xc9, 0x1c, 0x11, 0x4c, 0xfb, 0xb9, 0x12, 0xd7, 0xf9, 0x09, 0x6c, 0x44, 0x0f, 0x51,
0xc8, 0xbe, 0xe6, 0xb9, 0xb6, 0xe5, 0xc6, 0x05, 0x17, 0xbe, 0x46, 0x06, 0xe4, 0x05, 0x97, 0x77,
0xa0, 0xcb, 0x3b, 0xc5, 0xdb, 0x53, 0xc1, 0x80, 0xac, 0xc3, 0xc6, 0xc5, 0x1b, 0xd3, 0xf3, 0xd0,
0xe1, 0xa7, 0x1b, 0x11, 0xbe, 0xb2, 0xec, 0xcc, 0xe3, 0x7b, 0xa0, 0x46, 0xdd, 0xce, 0xba, 0x21,
0x76, 0xf9, 0xc0, 0x38, 0xb0, 0xfb, 0x4d, 0x05, 0x7a, 0xe2, 0xf6, 0x98, 0x5a, 0xfe, 0xd9, 0xc3,
0xbb, 0xd7, 0xc5, 0x33, 0xed, 0xe7, 0x4f, 0xa1, 0x27, 0xc1, 0x13, 0x9d, 0x6c, 0xff, 0x6e, 0x89,
0x5e, 0x50, 0x20, 0xa9, 0xde, 0x96, 0x15, 0x84, 0xbe, 0xb5, 0x3f, 0x99, 0xef, 0x94, 0xd5, 0x80,
0xe6, 0xf0, 0x10, 0x0f, 0x1f, 0x8d, 0x3d, 0x2b, 0x91, 0xca, 0x5b, 0x32, 0x9a, 0xa6, 0xa3, 0x5d,
0xdb, 0x4c, 0x66, 0x60, 0xc7, 0x54, 0xe9, 0x39, 0xfb, 0x3f, 0x04, 0x35, 0xdb, 0x21, 0x7d, 0x3a,
0xd4, 0x60, 0xa7, 0x43, 0xb7, 0xc4, 0xd3, 0xa1, 0x19, 0x91, 0x46, 0xea, 0x70, 0xe8, 0x6f, 0x4b,
0xf0, 0x75, 0x29, 0x6d, 0xf3, 0x64, 0x49, 0xd3, 0xea, 0x48, 0x77, 0xa1, 0x9e, 0x49, 0x6a, 0x5f,
0x38, 0x45, 0x7e, 0xbc, 0xee, 0xca, 0x4a, 0x83, 0x41, 0x12, 0x5b, 0x25, 0x06, 0x5f, 0x99, 0x3e,
0x07, 0xb7, 0x3b, 0x61, 0x8e, 0x68, 0x1c, 0xba, 0x03, 0x2d, 0x56, 0x30, 0x18, 0x1c, 0x59, 0xf8,
0x38, 0x3a, 0x7b, 0xbd, 0x2a, 0x75, 0xcd, 0xb4, 0xdf, 0x87, 0x16, 0x3e, 0xd6, 0x9b, 0x76, 0xfc,
0x3b, 0xd0, 0x7e, 0xbf, 0x02, 0x90, 0xb4, 0x91, 0xec, 0x2c, 0xb1, 0x79, 0x6e, 0xc4, 0x29, 0x08,
0x89, 0x25, 0xc4, 0xc8, 0x35, 0xfa, 0x44, 0x7a, 0x72, 0xf6, 0x61, 0x5a, 0x41, 0xc8, 0xf9, 0xb2,
0x7e, 0x3a, 0x2d, 0x11, 0x8b, 0x88, 0xc8, 0xb8, 0xce, 0x04, 0x09, 0x04, 0xbd, 0x02, 0x68, 0xe4,
0x7b, 0xc7, 0x96, 0x3b, 0x4a, 0xe7, 0x1b, 0x2c, 0x2d, 0x59, 0xe4, 0x2d, 0xa9, 0x84, 0xe3, 0x47,
0xa0, 0x66, 0xba, 0x47, 0x2c, 0xb9, 0x35, 0x83, 0x8c, 0xfb, 0xc2, 0x5c, 0x5c, 0x7d, 0xbb, 0x22,
0x06, 0x7a, 0xd0, 0xfa, 0xc0, 0xf0, 0x47, 0x38, 0x92, 0x28, 0x8f, 0xc3, 0x44, 0x60, 0x7f, 0x00,
0x6a, 0x76, 0x55, 0x92, 0x63, 0xd0, 0x57, 0x45, 0x45, 0x3f, 0xcd, 0x1f, 0x91, 0x69, 0x52, 0xaa,
0xde, 0x37, 0x60, 0x59, 0x46, 0xaf, 0x04, 0xc9, 0xb9, 0xad, 0xe9, 0xad, 0x38, 0x24, 0xa6, 0x72,
0x98, 0xb6, 0xcb, 0xa4, 0x0a, 0xcf, 0x25, 0xa1, 0xf0, 0xac, 0xfd, 0x7a, 0x19, 0x50, 0x5e, 0xfd,
0x51, 0x07, 0x4a, 0xf1, 0x24, 0xa5, 0xed, 0xad, 0x8c, 0xba, 0x95, 0x72, 0xea, 0x76, 0x19, 0x1a,
0xf1, 0xae, 0xcf, 0x5d, 0x7c, 0x02, 0x48, 0x2b, 0x63, 0x45, 0x54, 0xc6, 0x14, 0x61, 0x55, 0xb1,
0x22, 0x7e, 0x13, 0x96, 0x6d, 0x23, 0x08, 0x07, 0xac, 0xf0, 0x1e, 0x5a, 0x0e, 0x0e, 0x42, 0xc3,
0x19, 0x53, 0x51, 0x56, 0x74, 0x44, 0xda, 0xb6, 0x48, 0xd3, 0x83, 0xa8, 0x05, 0x3d, 0x88, 0xa2,
0x6b, 0xe2, 0x7b, 0xf9, 0x05, 0x83, 0x57, 0x8b, 0x99, 0x7b, 0x52, 0xee, 0x66, 0x1a, 0xd5, 0x88,
0xc3, 0xce, 0xfe, 0x27, 0xd0, 0x11, 0x1b, 0x25, 0xe2, 0xbb, 0x2d, 0x8a, 0xaf, 0x48, 0x60, 0x9b,
0x92, 0xe1, 0x21, 0xa0, 0xbc, 0xf3, 0x48, 0xf3, 0x4c, 0x11, 0x79, 0x36, 0x4b, 0x16, 0x29, 0x9e,
0x96, 0x45, 0x61, 0xff, 0x63, 0x19, 0x50, 0x12, 0xc1, 0xc5, 0x07, 0xde, 0x45, 0xc2, 0x9e, 0x75,
0x58, 0xca, 0xc7, 0x77, 0x51, 0x50, 0x8b, 0x72, 0xd1, 0x9d, 0x2c, 0x12, 0x2b, 0xcb, 0xae, 0x97,
0xbe, 0x16, 0xbb, 0x7b, 0x16, 0xae, 0x5e, 0x9d, 0x7a, 0x9e, 0x21, 0x7a, 0xfc, 0x1f, 0x66, 0xaf,
0xa5, 0x32, 0xff, 0x71, 0x5b, 0xea, 0x9a, 0x73, 0x4b, 0x9e, 0x79, 0x27, 0x55, 0x08, 0xa4, 0x6b,
0x67, 0x0a, 0xa4, 0xaf, 0x43, 0xdb, 0xc7, 0x43, 0xef, 0x08, 0xfb, 0x4c, 0x6b, 0x69, 0x38, 0x5b,
0xd5, 0x5b, 0x1c, 0x48, 0xf5, 0x75, 0xfe, 0x9b, 0xa6, 0xff, 0x53, 0x82, 0xc5, 0x98, 0xdb, 0x67,
0x92, 0xe4, 0xec, 0x0b, 0x0c, 0x4f, 0x59, 0x74, 0x1f, 0xcb, 0x45, 0xf7, 0xed, 0x53, 0x33, 0x9e,
0xc2, 0x92, 0xfb, 0x7c, 0xd8, 0xff, 0x19, 0x2c, 0xf0, 0x02, 0x77, 0xce, 0x55, 0x16, 0x29, 0x3c,
0x2c, 0x43, 0x95, 0x78, 0xe6, 0xa8, 0x3a, 0xc9, 0x3e, 0x18, 0xdf, 0xd3, 0xd7, 0x9d, 0xb9, 0xb7,
0x6c, 0x0b, 0xb7, 0x9d, 0xb5, 0xdf, 0x2a, 0x03, 0xec, 0x9d, 0xb8, 0xc3, 0x3b, 0xcc, 0xdc, 0x6f,
0x42, 0x65, 0xd6, 0xe5, 0x38, 0xd2, 0x9b, 0x6a, 0x29, 0xed, 0x59, 0x40, 0x03, 0x84, 0xd2, 0x4a,
0x39, 0x5b, 0x5a, 0x99, 0x56, 0x14, 0x99, 0xee, 0xcc, 0xbf, 0x0d, 0x15, 0xea, 0x94, 0xd9, 0xdd,
0xb1, 0x42, 0xe7, 0xcb, 0x74, 0x00, 0x5a, 0x85, 0x68, 0x73, 0xdf, 0x76, 0xd9, 0xee, 0x4d, 0x1d,
0x7b, 0x59, 0xcf, 0x82, 0xd1, 0x0b, 0xd0, 0x61, 0x25, 0xb5, 0xb8, 0x23, 0xcb, 0x0e, 0x33, 0xd0,
0x7c, 0x6c, 0xd0, 0x90, 0xc4, 0x06, 0x04, 0xaf, 0xe9, 0x7b, 0xe3, 0x71, 0x6a, 0x3a, 0x56, 0x53,
0xc9, 0x82, 0xb5, 0x9f, 0x95, 0xe1, 0x12, 0xe1, 0xef, 0x93, 0x89, 0xef, 0x8b, 0x28, 0x4f, 0x6a,
0x67, 0x28, 0x8b, 0x3b, 0xc3, 0x6d, 0x58, 0x60, 0x85, 0x9b, 0x28, 0x52, 0xbd, 0x3a, 0x4d, 0x1b,
0x98, 0xee, 0xe8, 0x51, 0xf7, 0x79, 0xb3, 0x7f, 0xe1, 0xf4, 0xbd, 0x36, 0xdf, 0xe9, 0xfb, 0x42,
0xb6, 0xbc, 0x9b, 0x52, 0xab, 0xfa, 0xcc, 0x0b, 0x71, 0x8d, 0x73, 0x1c, 0x69, 0x3f, 0x84, 0xb6,
0x9e, 0xb6, 0x30, 0x84, 0xa0, 0x92, 0xba, 0x75, 0x4b, 0x7f, 0xd3, 0xbc, 0xdf, 0x18, 0x1b, 0x43,
0x2b, 0x3c, 0xa1, 0x52, 0xa9, 0xea, 0xf1, 0xb7, 0xdc, 0x9c, 0xb5, 0xff, 0x56, 0xe0, 0x62, 0x74,
0xca, 0xcb, 0x9d, 0xc5, 0xf9, 0x15, 0x63, 0x03, 0x56, 0xb8, 0x67, 0xc8, 0xb8, 0x08, 0x16, 0xdd,
0x2f, 0x31, 0x98, 0xb8, 0x8c, 0x0d, 0x58, 0x09, 0xa9, 0x92, 0x66, 0xc7, 0x30, 0xb5, 0x59, 0x62,
0x8d, 0xe2, 0x98, 0x22, 0xa7, 0xec, 0xcf, 0xb0, 0x6b, 0x64, 0x5c, 0x42, 0xdc, 0xd6, 0xc1, 0x9d,
0x38, 0x7c, 0x95, 0xda, 0x31, 0x5c, 0x66, 0xf7, 0xde, 0xf7, 0x45, 0x8a, 0xe6, 0x3a, 0x64, 0x91,
0xae, 0x3b, 0xe3, 0x1a, 0xff, 0x44, 0x81, 0x2b, 0x53, 0x30, 0xcf, 0x93, 0x5e, 0xbe, 0x27, 0xc5,
0x3e, 0xa5, 0x18, 0x20, 0xe0, 0x65, 0xea, 0x26, 0x12, 0xf9, 0x8b, 0x0a, 0x2c, 0xe6, 0x3a, 0x9d,
0x59, 0xe7, 0x5e, 0x06, 0x44, 0x84, 0x10, 0xbf, 0xf1, 0xa4, 0xf5, 0x15, 0xbe, 0x51, 0xab, 0xee,
0xc4, 0x89, 0xdf, 0x77, 0xee, 0x78, 0x26, 0x46, 0x16, 0xeb, 0xcd, 0x8e, 0x58, 0x62, 0xc9, 0x55,
0xa6, 0x3f, 0xe5, 0xc9, 0x11, 0xb8, 0xb6, 0x33, 0x71, 0xd8, 0x69, 0x0c, 0x97, 0x32, 0xdb, 0x7c,
0x09, 0x2a, 0x01, 0x8c, 0x0e, 0x60, 0x91, 0x5e, 0x32, 0x9c, 0x84, 0x23, 0x8f, 0x64, 0x78, 0x94,
0x2e, 0xb6, 0xc5, 0x7f, 0xb7, 0x30, 0xa6, 0x0f, 0xf8, 0x68, 0x42, 0x3c, 0x4f, 0xf2, 0x5c, 0x11,
0x1a, 0xe1, 0xb1, 0xdc, 0xa1, 0xe7, 0xc4, 0x78, 0x6a, 0x67, 0xc4, 0xb3, 0xcd, 0x47, 0x8b, 0x78,
0xd2, 0xd0, 0xfe, 0x26, 0xac, 0x48, 0x97, 0x3e, 0x2b, 0x5e, 0xa8, 0xa6, 0x53, 0xc1, 0xbb, 0xb0,
0x2c, 0x5b, 0xd5, 0x39, 0xe6, 0xc8, 0x51, 0x7c, 0x96, 0x39, 0xb4, 0xbf, 0x28, 0x41, 0x7b, 0x0b,
0xdb, 0x38, 0xc4, 0x4f, 0xf7, 0x10, 0x3c, 0x77, 0xa2, 0x5f, 0xce, 0x9f, 0xe8, 0xe7, 0xae, 0x27,
0x54, 0x24, 0xd7, 0x13, 0xae, 0xc4, 0xb7, 0x32, 0xc8, 0x2c, 0x55, 0x31, 0x14, 0x31, 0xd1, 0xeb,
0xd0, 0x1a, 0xfb, 0x96, 0x63, 0xf8, 0x27, 0x83, 0x47, 0xf8, 0x24, 0xe0, 0x7b, 0x4f, 0x4f, 0xba,
0x7b, 0x6d, 0x6f, 0x05, 0x7a, 0x93, 0xf7, 0x7e, 0x17, 0x9f, 0xd0, 0x1b, 0x1f, 0x71, 0x5e, 0xc9,
0xae, 0x05, 0x56, 0xf4, 0x14, 0xe4, 0xc6, 0x4b, 0xd0, 0x88, 0x6f, 0x52, 0xa1, 0x3a, 0x54, 0xee,
0x4d, 0x6c, 0x5b, 0xbd, 0x80, 0x1a, 0x50, 0xa5, 0x99, 0xa7, 0xaa, 0x90, 0x9f, 0x74, 0x57, 0x51,
0x4b, 0x37, 0x7e, 0x09, 0x1a, 0xf1, 0x8d, 0x0e, 0xd4, 0x84, 0x85, 0x87, 0xee, 0xbb, 0xae, 0x77,
0xec, 0xaa, 0x17, 0xd0, 0x02, 0x94, 0xef, 0xd8, 0xb6, 0xaa, 0xa0, 0x36, 0x34, 0xf6, 0x42, 0x1f,
0x1b, 0x44, 0x7c, 0x6a, 0x09, 0x75, 0x00, 0xde, 0xb1, 0x82, 0xd0, 0xf3, 0xad, 0xa1, 0x61, 0xab,
0xe5, 0x1b, 0x9f, 0x41, 0x47, 0x2c, 0xf0, 0xa3, 0x16, 0xd4, 0x77, 0xbc, 0xf0, 0xed, 0x4f, 0xad,
0x20, 0x54, 0x2f, 0x90, 0xfe, 0x3b, 0x5e, 0xb8, 0xeb, 0xe3, 0x00, 0xbb, 0xa1, 0xaa, 0x20, 0x80,
0xda, 0x07, 0xee, 0x96, 0x15, 0x3c, 0x52, 0x4b, 0x68, 0x89, 0x9f, 0xdd, 0x19, 0xf6, 0x36, 0xaf,
0x9a, 0xab, 0x65, 0x32, 0x3c, 0xfe, 0xaa, 0x20, 0x15, 0x5a, 0x71, 0x97, 0xfb, 0xbb, 0x0f, 0xd5,
0x2a, 0xa3, 0x9e, 0xfc, 0xac, 0xdd, 0x30, 0x41, 0xcd, 0x9e, 0x39, 0x93, 0x39, 0xd9, 0x22, 0x62,
0x90, 0x7a, 0x81, 0xac, 0x8c, 0x1f, 0xfa, 0xab, 0x0a, 0xea, 0x42, 0x33, 0x75, 0x84, 0xae, 0x96,
0x08, 0xe0, 0xbe, 0x3f, 0x1e, 0x72, 0xdd, 0x62, 0x24, 0x10, 0x45, 0xdd, 0x22, 0x9c, 0xa8, 0xdc,
0xb8, 0x0b, 0xf5, 0x28, 0x61, 0x22, 0x5d, 0x39, 0x8b, 0xc8, 0xa7, 0x7a, 0x01, 0x2d, 0x42, 0x5b,
0x78, 0x3f, 0xa8, 0x2a, 0x08, 0x41, 0x47, 0x7c, 0xe1, 0xab, 0x96, 0x6e, 0x6c, 0x00, 0x24, 0x39,
0x05, 0x21, 0x67, 0xdb, 0x3d, 0x32, 0x6c, 0xcb, 0x64, 0xb4, 0x91, 0x26, 0xc2, 0x5d, 0xca, 0x1d,
0x66, 0xb3, 0x6a, 0xe9, 0xc6, 0x9b, 0x50, 0x8f, 0x42, 0x60, 0x02, 0xd7, 0xb1, 0xe3, 0x1d, 0x61,
0x26, 0x99, 0x3d, 0x1c, 0x32, 0x39, 0xde, 0x71, 0xb0, 0x6b, 0xaa, 0x25, 0x42, 0xc6, 0xc3, 0xb1,
0x69, 0x84, 0xd1, 0x5d, 0x59, 0xb5, 0xbc, 0xf1, 0x1f, 0x4b, 0x00, 0xec, 0x10, 0xd9, 0xf3, 0x7c,
0x13, 0xd9, 0xf4, 0x32, 0xc9, 0xa6, 0xe7, 0x8c, 0x3d, 0x37, 0x3a, 0xe1, 0x0a, 0xd0, 0x5a, 0xa6,
0x66, 0xc3, 0x3e, 0xf2, 0x1d, 0x39, 0x6f, 0xfa, 0xcf, 0x49, 0xfb, 0x67, 0x3a, 0x6b, 0x17, 0x90,
0x43, 0xb1, 0x91, 0xb4, 0xe5, 0x81, 0x35, 0x7c, 0x14, 0x9f, 0x3c, 0x4f, 0x7f, 0x79, 0x9b, 0xe9,
0x1a, 0xe1, 0xbb, 0x2e, 0xc5, 0xb7, 0x17, 0xfa, 0x96, 0x3b, 0x8a, 0x76, 0x47, 0xed, 0x02, 0x7a,
0x9c, 0x79, 0xf7, 0x1b, 0x21, 0xdc, 0x28, 0xf2, 0xd4, 0xf7, 0x7c, 0x28, 0x6d, 0xe8, 0x66, 0xfe,
0x60, 0x01, 0xdd, 0x90, 0x3f, 0xa0, 0x92, 0xfd, 0x19, 0x44, 0xff, 0xa5, 0x42, 0x7d, 0x63, 0x6c,
0x16, 0x74, 0xc4, 0x7f, 0x06, 0x40, 0xdf, 0x98, 0x36, 0x41, 0xee, 0x09, 0x67, 0xff, 0x46, 0x91,
0xae, 0x31, 0xaa, 0x8f, 0x98, 0xfa, 0xce, 0x42, 0x25, 0x7d, 0x35, 0xdb, 0x3f, 0x2d, 0x30, 0xd1,
0x2e, 0xa0, 0x4f, 0x48, 0x0c, 0x91, 0x79, 0x68, 0x8a, 0x5e, 0x96, 0xef, 0x7b, 0xf2, 0xf7, 0xa8,
0xb3, 0x30, 0x7c, 0x94, 0x35, 0xbe, 0xe9, 0xd4, 0xe7, 0x5e, 0xb0, 0x17, 0xa7, 0x3e, 0x35, 0xfd,
0x69, 0xd4, 0x9f, 0x19, 0x83, 0xcd, 0xb2, 0x32, 0xc9, 0x13, 0xb7, 0xac, 0x2a, 0x27, 0x49, 0xd1,
0xf4, 0xf7, 0x70, 0xb3, 0xb0, 0x4d, 0xa8, 0x91, 0x66, 0x6f, 0x4f, 0xbc, 0x32, 0xe5, 0x5c, 0x46,
0xfe, 0xb6, 0xb6, 0xbf, 0x56, 0xb4, 0x7b, 0x5a, 0x97, 0xc5, 0xe7, 0x9b, 0x72, 0x11, 0x49, 0x9f,
0x9c, 0xca, 0x75, 0x59, 0xfe, 0x1a, 0x54, 0xbb, 0x80, 0x1e, 0x08, 0xae, 0x1e, 0xbd, 0x30, 0x4d,
0x15, 0xc4, 0xeb, 0x54, 0xb3, 0xf8, 0xf6, 0xab, 0x80, 0x98, 0xa5, 0xba, 0x07, 0xd6, 0x68, 0xe2,
0x1b, 0x4c, 0x8d, 0xa7, 0x39, 0xb7, 0x7c, 0xd7, 0x08, 0xcd, 0x37, 0xcf, 0x30, 0x22, 0x5e, 0xd2,
0x00, 0xe0, 0x3e, 0x0e, 0xdf, 0xa7, 0xef, 0xf8, 0x82, 0xec, 0x8a, 0x12, 0xff, 0xcd, 0x3b, 0x44,
0xa8, 0x5e, 0x9c, 0xd9, 0x2f, 0x46, 0xb0, 0x0f, 0xcd, 0xfb, 0x24, 0xbf, 0xa2, 0x31, 0x63, 0x80,
0xa6, 0x8e, 0x8c, 0x7a, 0x44, 0x28, 0x56, 0x67, 0x77, 0x4c, 0x3b, 0xcf, 0xcc, 0x53, 0x56, 0x34,
0x55, 0xb0, 0xf9, 0x07, 0xb6, 0x72, 0xe7, 0x39, 0xe5, 0x6d, 0x2c, 0x5b, 0x11, 0x3d, 0x1b, 0x7c,
0x07, 0x1b, 0x76, 0x78, 0x38, 0x65, 0x45, 0xa9, 0x1e, 0xa7, 0xaf, 0x48, 0xe8, 0x18, 0xe3, 0xc0,
0xb0, 0xc4, 0xac, 0x50, 0x4c, 0x4c, 0xd7, 0xe5, 0x53, 0xe4, 0x7b, 0x16, 0x54, 0x3d, 0x03, 0x16,
0xb7, 0x7c, 0x6f, 0x2c, 0x22, 0x79, 0x45, 0x8a, 0x24, 0xd7, 0xaf, 0x20, 0x8a, 0xef, 0x43, 0x2b,
0xca, 0xff, 0x69, 0xc6, 0x22, 0xe7, 0x42, 0xba, 0x4b, 0xc1, 0x89, 0x3f, 0x86, 0x6e, 0xa6, 0xb0,
0x20, 0x17, 0xba, 0xbc, 0xfa, 0x30, 0x6b, 0xf6, 0x63, 0x40, 0xf4, 0x7d, 0xb2, 0xf8, 0x17, 0x0b,
0xf2, 0xf8, 0x26, 0xdf, 0x31, 0x42, 0xb2, 0x5e, 0xb8, 0x7f, 0x2c, 0xf9, 0x5f, 0x83, 0x15, 0x69,
0xf2, 0x9e, 0x75, 0x08, 0xfc, 0xfe, 0xf4, 0x29, 0x15, 0x86, 0xac, 0x43, 0x38, 0x75, 0x44, 0x84,
0x7f, 0xe3, 0xdf, 0x10, 0x34, 0x68, 0x9c, 0x47, 0xa5, 0xf5, 0xff, 0x61, 0xde, 0x93, 0x0d, 0xf3,
0x3e, 0x86, 0x6e, 0xe6, 0xdd, 0xac, 0x5c, 0x69, 0xe5, 0x8f, 0x6b, 0x0b, 0x44, 0x2b, 0xe2, 0x93,
0x53, 0xf9, 0x56, 0x28, 0x7d, 0x96, 0x3a, 0x6b, 0xee, 0x0f, 0xd9, 0x9b, 0xf4, 0xf8, 0x78, 0xf9,
0xc5, 0xa9, 0x07, 0x1d, 0xe2, 0x3d, 0xe8, 0x2f, 0x3e, 0x0a, 0xfa, 0x6a, 0x47, 0xa0, 0x1f, 0x43,
0x37, 0xf3, 0xd2, 0x48, 0xae, 0x31, 0xf2, 0xe7, 0x48, 0xb3, 0x66, 0xff, 0x1c, 0x83, 0x27, 0x13,
0x96, 0x24, 0x0f, 0x3b, 0xd0, 0xda, 0xb4, 0x40, 0x54, 0xfe, 0x02, 0x64, 0xf6, 0x82, 0xda, 0x82,
0x99, 0x66, 0xf7, 0x9b, 0x84, 0xc8, 0xec, 0x7f, 0x33, 0xf5, 0x5f, 0x2e, 0xf6, 0x47, 0x4e, 0xf1,
0x82, 0xf6, 0xa0, 0xc6, 0xde, 0x1f, 0xa1, 0x67, 0xe5, 0x67, 0x39, 0xa9, 0xb7, 0x49, 0xfd, 0x59,
0x2f, 0x98, 0x82, 0x89, 0x1d, 0x12, 0xfa, 0x7f, 0x00, 0x1d, 0x06, 0x8a, 0x19, 0xf4, 0x04, 0x27,
0xdf, 0x83, 0x2a, 0x75, 0xed, 0x48, 0x7a, 0x2e, 0x91, 0x7e, 0x65, 0xd4, 0x9f, 0xfd, 0xb0, 0x28,
0xa1, 0xb8, 0x49, 0x47, 0xb2, 0xaa, 0xce, 0x93, 0x9c, 0xfa, 0xa6, 0x82, 0x7e, 0x00, 0x6d, 0x36,
0x79, 0xc4, 0x8d, 0x27, 0x49, 0xf9, 0x10, 0x96, 0x52, 0x94, 0x3f, 0x0d, 0x14, 0x37, 0x95, 0xff,
0xe3, 0xd1, 0xfd, 0xa7, 0xf4, 0x95, 0x4f, 0xf6, 0x1e, 0x1b, 0x5a, 0x3b, 0xdb, 0x65, 0xbc, 0xfe,
0x7a, 0xe1, 0xfe, 0x31, 0xe6, 0x1f, 0x81, 0x9a, 0x3d, 0x71, 0x44, 0x2f, 0x4d, 0xf3, 0x25, 0x32,
0x9c, 0x33, 0x1c, 0xc9, 0xf7, 0xa0, 0xc6, 0x6a, 0xc4, 0x72, 0x03, 0x14, 0xea, 0xc7, 0x33, 0xe6,
0xba, 0xfb, 0xad, 0x8f, 0x36, 0x46, 0x56, 0x78, 0x38, 0xd9, 0x27, 0x2d, 0xeb, 0xac, 0xeb, 0x2b,
0x96, 0xc7, 0x7f, 0xad, 0x47, 0xb2, 0x5c, 0xa7, 0xa3, 0xd7, 0x29, 0x82, 0xf1, 0xfe, 0x7e, 0x8d,
0x7e, 0xde, 0xfa, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8f, 0x7d, 0xe1, 0x59, 0x95, 0x54, 0x00,
0x00,
0x7a, 0x9a, 0x17, 0x39, 0xf3, 0xcd, 0xab, 0x59, 0x24, 0xa5, 0xd9, 0x59, 0x49, 0x96, 0x5b, 0x7e,
0x70, 0x65, 0x9b, 0xd2, 0x52, 0x6b, 0xaf, 0x76, 0x6d, 0xc3, 0x91, 0x48, 0x4b, 0xe6, 0xda, 0xa6,
0x95, 0xa6, 0xe4, 0x0d, 0xbc, 0xde, 0x1d, 0x37, 0xa7, 0x8b, 0xc3, 0x86, 0xfa, 0x31, 0xea, 0xee,
0x21, 0x4d, 0x07, 0x08, 0x72, 0xc8, 0x25, 0x9b, 0x6c, 0x10, 0xe4, 0x92, 0x1c, 0x82, 0x1c, 0x12,
0x04, 0xd8, 0x04, 0xc9, 0x25, 0x48, 0x80, 0x1c, 0x72, 0x58, 0xe4, 0x92, 0x5c, 0xf2, 0xfa, 0x0f,
0xc9, 0x2d, 0xc7, 0x2c, 0x82, 0x05, 0x72, 0x08, 0xea, 0xd5, 0xdd, 0xd5, 0x5d, 0xc3, 0x69, 0x72,
0x24, 0x3f, 0x82, 0xdc, 0xa6, 0xbf, 0x7a, 0x7c, 0x5f, 0x7d, 0xaf, 0xfa, 0xbe, 0xaf, 0xaa, 0x06,
0x96, 0x1e, 0x4f, 0x70, 0x70, 0x3c, 0x18, 0xfa, 0x7e, 0x60, 0xad, 0x8f, 0x03, 0x3f, 0xf2, 0x11,
0x72, 0x6d, 0xe7, 0x70, 0x12, 0xb2, 0xaf, 0x75, 0xda, 0xde, 0x6f, 0x0d, 0x7d, 0xd7, 0xf5, 0x3d,
0x06, 0xeb, 0xb7, 0xd2, 0x3d, 0xfa, 0x1d, 0xdb, 0x8b, 0x70, 0xe0, 0x99, 0x8e, 0x68, 0x0d, 0x87,
0x07, 0xd8, 0x35, 0xf9, 0x57, 0xc3, 0x0d, 0x47, 0xfc, 0xa7, 0x66, 0x99, 0x91, 0x99, 0x46, 0xd5,
0x5f, 0xb2, 0x3d, 0x0b, 0x7f, 0x9a, 0x06, 0xe9, 0xbf, 0x51, 0x82, 0xf3, 0xbb, 0x07, 0xfe, 0xd1,
0xa6, 0xef, 0x38, 0x78, 0x18, 0xd9, 0xbe, 0x17, 0x1a, 0xf8, 0xf1, 0x04, 0x87, 0x11, 0xba, 0x01,
0xd5, 0x3d, 0x33, 0xc4, 0xbd, 0xd2, 0x95, 0xd2, 0x5a, 0x73, 0xe3, 0xe2, 0xba, 0x44, 0x27, 0x27,
0xf0, 0xfd, 0x70, 0x74, 0xc7, 0x0c, 0xb1, 0x41, 0x7b, 0x22, 0x04, 0x55, 0x6b, 0x6f, 0x7b, 0xab,
0x57, 0xbe, 0x52, 0x5a, 0xab, 0x18, 0xf4, 0x37, 0x7a, 0x0e, 0xda, 0xc3, 0x78, 0xee, 0xed, 0xad,
0xb0, 0x57, 0xb9, 0x52, 0x59, 0xab, 0x18, 0x32, 0x50, 0xff, 0x71, 0x19, 0x2e, 0xe4, 0xc8, 0x08,
0xc7, 0xbe, 0x17, 0x62, 0x74, 0x13, 0x16, 0xc2, 0xc8, 0x8c, 0x26, 0x21, 0xa7, 0xe4, 0xeb, 0x4a,
0x4a, 0x76, 0x69, 0x17, 0x83, 0x77, 0xcd, 0xa3, 0x2d, 0x2b, 0xd0, 0xa2, 0x6f, 0xc2, 0x8a, 0xed,
0xbd, 0x8f, 0x5d, 0x3f, 0x38, 0x1e, 0x8c, 0x71, 0x30, 0xc4, 0x5e, 0x64, 0x8e, 0xb0, 0xa0, 0x71,
0x59, 0xb4, 0xdd, 0x4f, 0x9a, 0xd0, 0x6b, 0x70, 0x81, 0xc9, 0x30, 0xc4, 0xc1, 0xa1, 0x3d, 0xc4,
0x03, 0xf3, 0xd0, 0xb4, 0x1d, 0x73, 0xcf, 0xc1, 0xbd, 0xea, 0x95, 0xca, 0x5a, 0xdd, 0x58, 0xa5,
0xcd, 0xbb, 0xac, 0xf5, 0xb6, 0x68, 0x44, 0xdf, 0x00, 0x2d, 0xc0, 0xfb, 0x01, 0x0e, 0x0f, 0x06,
0xe3, 0xc0, 0x1f, 0x05, 0x38, 0x0c, 0x7b, 0x35, 0x8a, 0xa6, 0xcb, 0xe1, 0xf7, 0x39, 0x58, 0xff,
0xd3, 0x12, 0xac, 0x12, 0x66, 0xdc, 0x37, 0x83, 0xc8, 0x7e, 0x0a, 0x22, 0xd1, 0xa1, 0x95, 0x66,
0x43, 0xaf, 0x42, 0xdb, 0x24, 0x18, 0xe9, 0x33, 0x16, 0xe8, 0x09, 0xfb, 0xaa, 0x94, 0x54, 0x09,
0xa6, 0xff, 0x0b, 0xd7, 0x9d, 0x34, 0x9d, 0xf3, 0xc8, 0x2c, 0x8b, 0xb3, 0x9c, 0xc7, 0x79, 0x16,
0x89, 0xa9, 0x38, 0x5f, 0x55, 0x73, 0xfe, 0x9f, 0x2a, 0xb0, 0xfa, 0x9e, 0x6f, 0x5a, 0x89, 0x1a,
0x7e, 0xfe, 0x9c, 0x7f, 0x13, 0x16, 0x98, 0x45, 0xf7, 0xaa, 0x14, 0xd7, 0xf3, 0x32, 0x2e, 0x6e,
0xed, 0x09, 0x85, 0xbb, 0x14, 0x60, 0xf0, 0x41, 0xe8, 0x79, 0xe8, 0x04, 0x78, 0xec, 0xd8, 0x43,
0x73, 0xe0, 0x4d, 0xdc, 0x3d, 0x1c, 0xf4, 0x6a, 0x57, 0x4a, 0x6b, 0x35, 0xa3, 0xcd, 0xa1, 0x3b,
0x14, 0x88, 0x3e, 0x81, 0xf6, 0xbe, 0x8d, 0x1d, 0x6b, 0x40, 0x5d, 0xc2, 0xf6, 0x56, 0x6f, 0xe1,
0x4a, 0x65, 0xad, 0xb9, 0xf1, 0xfa, 0x7a, 0xde, 0x1b, 0xad, 0x2b, 0x39, 0xb2, 0x7e, 0x97, 0x0c,
0xdf, 0x66, 0xa3, 0xdf, 0xf6, 0xa2, 0xe0, 0xd8, 0x68, 0xed, 0xa7, 0x40, 0xa8, 0x07, 0x8b, 0x9c,
0xbd, 0xbd, 0xc5, 0x2b, 0xa5, 0xb5, 0xba, 0x21, 0x3e, 0xd1, 0x8b, 0xd0, 0x0d, 0x70, 0xe8, 0x4f,
0x82, 0x21, 0x1e, 0x8c, 0x02, 0x7f, 0x32, 0x0e, 0x7b, 0xf5, 0x2b, 0x95, 0xb5, 0x86, 0xd1, 0x11,
0xe0, 0x7b, 0x14, 0xda, 0x7f, 0x0b, 0x96, 0x72, 0x58, 0x90, 0x06, 0x95, 0x47, 0xf8, 0x98, 0x0a,
0xa2, 0x62, 0x90, 0x9f, 0x68, 0x05, 0x6a, 0x87, 0xa6, 0x33, 0xc1, 0x9c, 0xd5, 0xec, 0xe3, 0xbb,
0xe5, 0x5b, 0x25, 0xfd, 0x0f, 0x4b, 0xd0, 0x33, 0xb0, 0x83, 0xcd, 0x10, 0x7f, 0x91, 0x22, 0x3d,
0x0f, 0x0b, 0x9e, 0x6f, 0xe1, 0xed, 0x2d, 0x2a, 0xd2, 0x8a, 0xc1, 0xbf, 0xf4, 0x5f, 0x94, 0x60,
0xe5, 0x1e, 0x8e, 0x88, 0x19, 0xd8, 0x61, 0x64, 0x0f, 0x63, 0x3b, 0x7f, 0x13, 0x2a, 0x01, 0x7e,
0xcc, 0x29, 0x7b, 0x49, 0xa6, 0x2c, 0x76, 0xff, 0xaa, 0x91, 0x06, 0x19, 0x87, 0x9e, 0x85, 0x96,
0xe5, 0x3a, 0x83, 0xe1, 0x81, 0xe9, 0x79, 0xd8, 0x61, 0x86, 0xd4, 0x30, 0x9a, 0x96, 0xeb, 0x6c,
0x72, 0x10, 0xba, 0x0c, 0x10, 0xe2, 0x91, 0x8b, 0xbd, 0x28, 0xf1, 0xc9, 0x29, 0x08, 0xba, 0x06,
0x4b, 0xfb, 0x81, 0xef, 0x0e, 0xc2, 0x03, 0x33, 0xb0, 0x06, 0x0e, 0x36, 0x2d, 0x1c, 0x50, 0xea,
0xeb, 0x46, 0x97, 0x34, 0xec, 0x12, 0xf8, 0x7b, 0x14, 0x8c, 0x6e, 0x42, 0x2d, 0x1c, 0xfa, 0x63,
0x4c, 0x35, 0xad, 0xb3, 0x71, 0x49, 0xa5, 0x43, 0x5b, 0x66, 0x64, 0xee, 0x92, 0x4e, 0x06, 0xeb,
0xab, 0xff, 0x6d, 0x95, 0x99, 0xda, 0x97, 0xdc, 0xc9, 0xa5, 0xcc, 0xb1, 0xf6, 0x64, 0xcc, 0x71,
0xa1, 0x90, 0x39, 0x2e, 0x9e, 0x6c, 0x8e, 0x39, 0xae, 0x9d, 0xc6, 0x1c, 0xeb, 0x33, 0xcd, 0xb1,
0xa1, 0x32, 0x47, 0xf4, 0x36, 0x74, 0x59, 0x00, 0x61, 0x7b, 0xfb, 0xfe, 0xc0, 0xb1, 0xc3, 0xa8,
0x07, 0x94, 0xcc, 0x4b, 0x59, 0x0d, 0xb5, 0xf0, 0xa7, 0xeb, 0x0c, 0xb1, 0xb7, 0xef, 0x1b, 0x6d,
0x5b, 0xfc, 0x7c, 0xcf, 0x0e, 0xa3, 0xf9, 0xad, 0xfa, 0x67, 0x89, 0x55, 0x7f, 0xd9, 0xb5, 0x27,
0xb1, 0xfc, 0x9a, 0x64, 0xf9, 0x7f, 0x56, 0x82, 0xaf, 0xdd, 0xc3, 0x51, 0x4c, 0x3e, 0x31, 0x64,
0xfc, 0x25, 0xdd, 0xe6, 0xff, 0xb2, 0x04, 0x7d, 0x15, 0xad, 0xf3, 0x6c, 0xf5, 0x1f, 0xc1, 0xf9,
0x18, 0xc7, 0xc0, 0xc2, 0xe1, 0x30, 0xb0, 0xc7, 0x54, 0x8c, 0xd4, 0x57, 0x35, 0x37, 0xae, 0xaa,
0x14, 0x3f, 0x4b, 0xc1, 0x6a, 0x3c, 0xc5, 0x56, 0x6a, 0x06, 0xfd, 0x27, 0x25, 0x58, 0x25, 0xbe,
0x91, 0x3b, 0x33, 0xa2, 0x81, 0x67, 0xe6, 0xab, 0xec, 0x26, 0xcb, 0x39, 0x37, 0x59, 0x80, 0xc7,
0x34, 0xc4, 0xce, 0xd2, 0x33, 0x0f, 0xef, 0x5e, 0x85, 0x1a, 0x31, 0x40, 0xc1, 0xaa, 0x67, 0x54,
0xac, 0x4a, 0x23, 0x63, 0xbd, 0x75, 0x8f, 0x51, 0x91, 0xf8, 0xed, 0x39, 0xd4, 0x2d, 0xbb, 0xec,
0xb2, 0x62, 0xd9, 0xbf, 0x5d, 0x82, 0x0b, 0x39, 0x84, 0xf3, 0xac, 0xfb, 0x0d, 0x58, 0xa0, 0xbb,
0x91, 0x58, 0xf8, 0x73, 0xca, 0x85, 0xa7, 0xd0, 0x11, 0x6f, 0x63, 0xf0, 0x31, 0xba, 0x0f, 0x5a,
0xb6, 0x8d, 0xec, 0x93, 0x7c, 0x8f, 0x1c, 0x78, 0xa6, 0xcb, 0x18, 0xd0, 0x30, 0x9a, 0x1c, 0xb6,
0x63, 0xba, 0x18, 0x7d, 0x0d, 0xea, 0xc4, 0x64, 0x07, 0xb6, 0x25, 0xc4, 0xbf, 0x48, 0x4d, 0xd8,
0x0a, 0xd1, 0x25, 0x00, 0xda, 0x64, 0x5a, 0x56, 0xc0, 0xb6, 0xd0, 0x86, 0xd1, 0x20, 0x90, 0xdb,
0x04, 0xa0, 0xff, 0x41, 0x09, 0x2e, 0xef, 0x1e, 0x7b, 0xc3, 0x1d, 0x7c, 0xb4, 0x19, 0x60, 0x33,
0xc2, 0x89, 0xd3, 0x7e, 0xaa, 0x8c, 0x47, 0x57, 0xa0, 0x99, 0xb2, 0x5f, 0xae, 0x92, 0x69, 0x90,
0xfe, 0x57, 0x25, 0x68, 0x91, 0x5d, 0xe4, 0x7d, 0x1c, 0x99, 0x44, 0x45, 0xd0, 0x77, 0xa0, 0xe1,
0xf8, 0xa6, 0x35, 0x88, 0x8e, 0xc7, 0x8c, 0x9a, 0x4e, 0x96, 0x9a, 0x64, 0xeb, 0x79, 0x70, 0x3c,
0xc6, 0x46, 0xdd, 0xe1, 0xbf, 0x0a, 0x51, 0x94, 0xf5, 0x32, 0x15, 0x85, 0xa7, 0x7c, 0x06, 0x9a,
0x2e, 0x8e, 0x02, 0x7b, 0xc8, 0x88, 0xa8, 0x52, 0x51, 0x00, 0x03, 0x11, 0x44, 0xfa, 0x4f, 0x16,
0xe0, 0xfc, 0xf7, 0xcd, 0x68, 0x78, 0xb0, 0xe5, 0x8a, 0x28, 0xe6, 0xec, 0x7c, 0x4c, 0xfc, 0x72,
0x39, 0xed, 0x97, 0x9f, 0x98, 0xdf, 0x8f, 0x6d, 0xb4, 0xa6, 0xb2, 0x51, 0x92, 0x98, 0xaf, 0x7f,
0xc8, 0xd5, 0x2c, 0x65, 0xa3, 0xa9, 0x60, 0x63, 0xe1, 0x2c, 0xc1, 0xc6, 0x26, 0xb4, 0xf1, 0xa7,
0x43, 0x67, 0x42, 0xf4, 0x95, 0x62, 0x67, 0x51, 0xc4, 0x65, 0x05, 0xf6, 0xb4, 0x83, 0x68, 0xf1,
0x41, 0xdb, 0x9c, 0x06, 0xa6, 0x0b, 0x2e, 0x8e, 0x4c, 0x1a, 0x2a, 0x34, 0x37, 0xae, 0x4c, 0xd3,
0x05, 0xa1, 0x40, 0x4c, 0x1f, 0xc8, 0x17, 0xba, 0x08, 0x0d, 0x1e, 0xda, 0x6c, 0x6f, 0xf5, 0x1a,
0x94, 0x7d, 0x09, 0x00, 0x99, 0xd0, 0xe6, 0xde, 0x93, 0x53, 0xc8, 0x02, 0x88, 0x37, 0x54, 0x08,
0xd4, 0xc2, 0x4e, 0x53, 0x1e, 0xf2, 0x40, 0x27, 0x4c, 0x81, 0x48, 0xe6, 0xef, 0xef, 0xef, 0x3b,
0xb6, 0x87, 0x77, 0x98, 0x84, 0x9b, 0x94, 0x08, 0x19, 0x48, 0xc2, 0xa1, 0x43, 0x1c, 0x84, 0xb6,
0xef, 0xf5, 0x5a, 0xb4, 0x5d, 0x7c, 0xaa, 0xa2, 0x9c, 0xf6, 0x19, 0xa2, 0x9c, 0x01, 0x2c, 0xe5,
0x28, 0x55, 0x44, 0x39, 0xdf, 0x4a, 0x47, 0x39, 0xb3, 0x45, 0x95, 0x8a, 0x82, 0x7e, 0x5a, 0x82,
0xd5, 0x87, 0x5e, 0x38, 0xd9, 0x8b, 0x59, 0xf4, 0xc5, 0x98, 0x43, 0xd6, 0x89, 0x56, 0x73, 0x4e,
0x54, 0xff, 0xaf, 0x1a, 0x74, 0xf9, 0x2a, 0x88, 0xd6, 0x50, 0x97, 0x73, 0x11, 0x1a, 0xf1, 0x3e,
0xca, 0x19, 0x92, 0x00, 0xb2, 0x3e, 0xac, 0x9c, 0xf3, 0x61, 0x85, 0x48, 0x13, 0x51, 0x51, 0x35,
0x15, 0x15, 0x5d, 0x02, 0xd8, 0x77, 0x26, 0xe1, 0xc1, 0x20, 0xb2, 0x5d, 0xcc, 0xa3, 0xb2, 0x06,
0x85, 0x3c, 0xb0, 0x5d, 0x8c, 0x6e, 0x43, 0x6b, 0xcf, 0xf6, 0x1c, 0x7f, 0x34, 0x18, 0x9b, 0xd1,
0x41, 0xc8, 0xd3, 0x62, 0x95, 0x58, 0x68, 0x0c, 0x7b, 0x87, 0xf6, 0x35, 0x9a, 0x6c, 0xcc, 0x7d,
0x32, 0x04, 0x5d, 0x86, 0xa6, 0x37, 0x71, 0x07, 0xfe, 0xfe, 0x20, 0xf0, 0x8f, 0x42, 0x9a, 0xfc,
0x56, 0x8c, 0x86, 0x37, 0x71, 0x3f, 0xd8, 0x37, 0xfc, 0x23, 0xb2, 0x8f, 0x35, 0xc8, 0x8e, 0x16,
0x3a, 0xfe, 0x88, 0x25, 0xbe, 0xb3, 0xe7, 0x4f, 0x06, 0x90, 0xd1, 0x16, 0x76, 0x22, 0x93, 0x8e,
0x6e, 0x14, 0x1b, 0x1d, 0x0f, 0x40, 0x2f, 0x40, 0x67, 0xe8, 0xbb, 0x63, 0x93, 0x72, 0xe8, 0x6e,
0xe0, 0xbb, 0xd4, 0x00, 0x2b, 0x46, 0x06, 0x8a, 0x36, 0xa1, 0x99, 0x18, 0x41, 0xd8, 0x6b, 0x52,
0x3c, 0xba, 0xca, 0x4a, 0x53, 0xa1, 0x3c, 0x51, 0x50, 0x88, 0xad, 0x20, 0x24, 0x9a, 0x21, 0x8c,
0x3d, 0xb4, 0x3f, 0xc3, 0xdc, 0xd0, 0x9a, 0x1c, 0xb6, 0x6b, 0x7f, 0x86, 0x49, 0x7a, 0x64, 0x7b,
0x21, 0x0e, 0x22, 0x91, 0xac, 0xf6, 0xda, 0x54, 0x7d, 0xda, 0x0c, 0xca, 0x15, 0x1b, 0x6d, 0x41,
0x27, 0x8c, 0xcc, 0x20, 0x1a, 0x8c, 0xfd, 0x90, 0x2a, 0x40, 0xaf, 0x43, 0x75, 0x3b, 0x63, 0x92,
0x6e, 0x38, 0x22, 0x8a, 0x7d, 0x9f, 0x77, 0x32, 0xda, 0x74, 0x90, 0xf8, 0x24, 0xb3, 0x50, 0x4e,
0x24, 0xb3, 0x74, 0x0b, 0xcd, 0x42, 0x07, 0xc5, 0xb3, 0xac, 0x91, 0x74, 0xc9, 0xb4, 0xcc, 0x3d,
0x07, 0x7f, 0xc8, 0x3d, 0x88, 0x46, 0x17, 0x96, 0x05, 0xeb, 0x7f, 0x52, 0x81, 0x8e, 0xcc, 0x1e,
0xe2, 0x76, 0x58, 0x56, 0x26, 0x74, 0x5e, 0x7c, 0x12, 0x66, 0x61, 0x8f, 0x8c, 0x66, 0x29, 0x20,
0x55, 0xf9, 0xba, 0xd1, 0x64, 0x30, 0x3a, 0x01, 0x51, 0x5d, 0x26, 0x14, 0x6a, 0x67, 0x15, 0xca,
0xa8, 0x06, 0x85, 0xd0, 0x50, 0xa5, 0x07, 0x8b, 0x22, 0x7b, 0x64, 0x0a, 0x2f, 0x3e, 0x49, 0xcb,
0xde, 0xc4, 0xa6, 0x58, 0x99, 0xc2, 0x8b, 0x4f, 0xb4, 0x05, 0x2d, 0x36, 0xe5, 0xd8, 0x0c, 0x4c,
0x57, 0xa8, 0xfb, 0xb3, 0x4a, 0x97, 0xf1, 0x2e, 0x3e, 0xfe, 0x90, 0x78, 0x9f, 0xfb, 0xa6, 0x1d,
0x18, 0x4c, 0x3d, 0xee, 0xd3, 0x51, 0x68, 0x0d, 0x34, 0x36, 0xcb, 0xbe, 0xed, 0x60, 0x6e, 0x38,
0x8b, 0x2c, 0x85, 0xa4, 0xf0, 0xbb, 0xb6, 0x83, 0x99, 0x6d, 0xc4, 0x4b, 0xa0, 0x0a, 0x51, 0x67,
0xa6, 0x41, 0x21, 0x54, 0x1d, 0xae, 0x02, 0xf3, 0xa2, 0x03, 0xe1, 0x9b, 0xd9, 0x06, 0xc2, 0x68,
0xe4, 0x6c, 0xa5, 0x21, 0xd9, 0xc4, 0x65, 0xc6, 0x05, 0x6c, 0x39, 0xde, 0xc4, 0xa5, 0xa6, 0xb5,
0x01, 0xab, 0xc3, 0x49, 0x10, 0xb0, 0xed, 0x25, 0x3d, 0x4f, 0x93, 0x26, 0xdd, 0xcb, 0xbc, 0x71,
0x3b, 0x35, 0x9d, 0xfe, 0x7b, 0x35, 0x58, 0x26, 0x5e, 0x89, 0x3b, 0xa8, 0x39, 0x82, 0x8a, 0x4b,
0x00, 0x56, 0x18, 0x0d, 0x24, 0x4f, 0xda, 0xb0, 0xc2, 0x88, 0x6f, 0x39, 0xdf, 0x11, 0x31, 0x41,
0x65, 0x7a, 0x8a, 0x93, 0xf1, 0x92, 0xf9, 0xb8, 0xe0, 0x4c, 0x35, 0xc1, 0xab, 0xd0, 0xe6, 0xf9,
0xbd, 0x94, 0x8c, 0xb6, 0x18, 0x70, 0x47, 0xed, 0xeb, 0x17, 0x94, 0xb5, 0xc9, 0x54, 0x6c, 0xb0,
0x38, 0x5f, 0x6c, 0x50, 0xcf, 0xc6, 0x06, 0x77, 0xa1, 0x2b, 0x9b, 0xa7, 0xf0, 0x6f, 0x33, 0xec,
0xb3, 0x23, 0xd9, 0x67, 0x98, 0xde, 0xda, 0x41, 0xde, 0xda, 0xaf, 0x42, 0xdb, 0xc3, 0xd8, 0x1a,
0x44, 0x81, 0xe9, 0x85, 0xfb, 0x38, 0xa0, 0x6a, 0x51, 0x37, 0x5a, 0x04, 0xf8, 0x80, 0xc3, 0xd0,
0x1b, 0x00, 0x74, 0x8d, 0xac, 0xa4, 0xd5, 0x9a, 0x5e, 0xd2, 0xa2, 0x4a, 0x43, 0x4b, 0x5a, 0x94,
0x29, 0xf4, 0xe7, 0x13, 0x8a, 0x1e, 0xf4, 0x7f, 0x2e, 0xc3, 0x79, 0x5e, 0xe2, 0x98, 0x5f, 0x2f,
0xa7, 0xed, 0xee, 0x62, 0x7b, 0xac, 0x9c, 0x50, 0x34, 0xa8, 0x16, 0x08, 0x80, 0x6b, 0x8a, 0x00,
0x58, 0x4e, 0x9c, 0x17, 0x72, 0x89, 0x73, 0x5c, 0x33, 0x5c, 0x2c, 0x5e, 0x33, 0x44, 0x2b, 0x50,
0xa3, 0xd9, 0x1c, 0xd5, 0x9d, 0x86, 0xc1, 0x3e, 0x0a, 0x49, 0x55, 0xff, 0xfd, 0x32, 0xb4, 0x77,
0xb1, 0x19, 0x0c, 0x0f, 0x04, 0x1f, 0x5f, 0x4b, 0xd7, 0x58, 0x9f, 0x9b, 0x52, 0x63, 0x95, 0x86,
0x7c, 0x65, 0x8a, 0xab, 0x04, 0x41, 0xe4, 0x47, 0x66, 0x4c, 0xe5, 0xc0, 0x9b, 0xb8, 0xbc, 0xf0,
0xd8, 0xa5, 0x0d, 0x9c, 0xd4, 0x9d, 0x89, 0xab, 0xff, 0x67, 0x09, 0x5a, 0xbf, 0x4c, 0xa6, 0x11,
0x8c, 0xb9, 0x95, 0x66, 0xcc, 0x0b, 0x53, 0x18, 0x63, 0x90, 0xc4, 0x0c, 0x1f, 0xe2, 0xaf, 0x5c,
0xdd, 0xf9, 0x1f, 0x4a, 0xd0, 0x27, 0x69, 0xb9, 0xc1, 0xfc, 0xce, 0xfc, 0xd6, 0x75, 0x15, 0xda,
0x87, 0x52, 0x00, 0x5c, 0xa6, 0xca, 0xd9, 0x3a, 0x4c, 0x97, 0x11, 0x0c, 0xd0, 0x44, 0x19, 0x98,
0x2f, 0x56, 0x6c, 0x03, 0x2f, 0xaa, 0xa8, 0xce, 0x10, 0x47, 0x3d, 0x44, 0x37, 0x90, 0x81, 0xfa,
0xef, 0x94, 0x60, 0x59, 0xd1, 0x11, 0x5d, 0x80, 0x45, 0x5e, 0xb2, 0xe0, 0x31, 0x06, 0xb3, 0x77,
0x8b, 0x88, 0x27, 0x29, 0xba, 0xd9, 0x56, 0x3e, 0xaa, 0xb6, 0x48, 0x16, 0x1e, 0xe7, 0x67, 0x56,
0x4e, 0x3e, 0x56, 0x88, 0xfa, 0x50, 0xe7, 0xde, 0x54, 0x24, 0xbe, 0xf1, 0xb7, 0xfe, 0x08, 0xd0,
0x3d, 0x9c, 0xec, 0x5d, 0xf3, 0x70, 0x34, 0xf1, 0x37, 0x09, 0xa1, 0x69, 0x27, 0x64, 0xe9, 0xff,
0x5e, 0x82, 0x65, 0x09, 0xdb, 0x3c, 0xa5, 0xa5, 0x64, 0x7f, 0x2d, 0x9f, 0x65, 0x7f, 0x95, 0xca,
0x27, 0x95, 0x53, 0x95, 0x4f, 0x2e, 0x03, 0xc4, 0xfc, 0x17, 0x1c, 0x4d, 0x41, 0xf4, 0xbf, 0x2b,
0xc1, 0xf9, 0x77, 0x4c, 0xcf, 0xf2, 0xf7, 0xf7, 0xe7, 0x57, 0xd5, 0x4d, 0x90, 0x52, 0xe5, 0xa2,
0x05, 0x44, 0x39, 0xbf, 0x7e, 0x09, 0x96, 0x02, 0xb6, 0x33, 0x59, 0xb2, 0x2e, 0x57, 0x0c, 0x4d,
0x34, 0xc4, 0x3a, 0xfa, 0x17, 0x65, 0x40, 0x64, 0xd5, 0x77, 0x4c, 0xc7, 0xf4, 0x86, 0xf8, 0xec,
0xa4, 0x3f, 0x0f, 0x1d, 0x29, 0x84, 0x89, 0x0f, 0xf4, 0xd3, 0x31, 0x4c, 0x88, 0xde, 0x85, 0xce,
0x1e, 0x43, 0x35, 0x08, 0xb0, 0x19, 0xfa, 0x1e, 0x17, 0x87, 0xb2, 0x56, 0xf8, 0x20, 0xb0, 0x47,
0x23, 0x1c, 0x6c, 0xfa, 0x9e, 0xc5, 0x23, 0xfd, 0x3d, 0x41, 0x26, 0x19, 0x4a, 0x8c, 0x21, 0x89,
0xe7, 0x62, 0xe1, 0xc4, 0x01, 0x1d, 0x65, 0x45, 0x88, 0x4d, 0x27, 0x61, 0x44, 0xb2, 0x1b, 0x6a,
0xac, 0x61, 0x77, 0x7a, 0xa9, 0x58, 0x11, 0x5f, 0xe9, 0x7f, 0x5d, 0x02, 0x14, 0xa7, 0xf3, 0xb4,
0xfe, 0x41, 0x2d, 0x3a, 0x3b, 0xb4, 0xa4, 0xd8, 0x94, 0x2f, 0x42, 0xc3, 0x12, 0x23, 0xb9, 0x0b,
0x4a, 0x00, 0x74, 0x8f, 0xa4, 0x44, 0x0f, 0x88, 0xe6, 0x61, 0x4b, 0xa4, 0xcb, 0x0c, 0xf8, 0x1e,
0x85, 0xc9, 0xe1, 0x59, 0x35, 0x1b, 0x9e, 0xa5, 0x2b, 0xa1, 0x35, 0xa9, 0x12, 0xaa, 0xff, 0xb4,
0x0c, 0x1a, 0xdd, 0x42, 0x36, 0x93, 0x92, 0x56, 0x21, 0xa2, 0xaf, 0x42, 0x9b, 0x5f, 0x88, 0x91,
0x08, 0x6f, 0x3d, 0x4e, 0x4d, 0x86, 0x6e, 0xc0, 0x0a, 0xeb, 0x14, 0xe0, 0x70, 0xe2, 0x24, 0x99,
0x22, 0x4b, 0x80, 0xd0, 0x63, 0xb6, 0x77, 0x91, 0x26, 0x31, 0xe2, 0x21, 0x9c, 0x1f, 0x39, 0xfe,
0x9e, 0xe9, 0x0c, 0x64, 0xf1, 0x30, 0x19, 0x16, 0xd0, 0xf8, 0x15, 0x36, 0x7c, 0x37, 0x2d, 0xc3,
0x10, 0xdd, 0x81, 0x76, 0x88, 0xf1, 0xa3, 0x24, 0x7d, 0xac, 0x15, 0x49, 0x1f, 0x5b, 0x64, 0x8c,
0xf8, 0xd2, 0xff, 0xa8, 0x04, 0xdd, 0xcc, 0x39, 0x46, 0xb6, 0xd8, 0x51, 0xca, 0x17, 0x3b, 0x6e,
0x41, 0x8d, 0x78, 0x2a, 0xb6, 0xb7, 0x74, 0xd4, 0x89, 0xb8, 0x3c, 0xab, 0xc1, 0x06, 0xa0, 0xeb,
0xb0, 0xac, 0xb8, 0x2f, 0xc1, 0xc5, 0x8f, 0xf2, 0xd7, 0x25, 0xf4, 0x9f, 0x57, 0xa1, 0x99, 0x62,
0xc5, 0x8c, 0x3a, 0xcd, 0x13, 0xa9, 0x47, 0x4f, 0x3b, 0x1f, 0x27, 0x2a, 0xe7, 0x62, 0x97, 0xe5,
0x8a, 0x3c, 0x71, 0x75, 0xb1, 0x4b, 0x33, 0xc5, 0x74, 0x12, 0xb8, 0x20, 0x27, 0x81, 0x72, 0x9a,
0xbc, 0x78, 0x42, 0x9a, 0x5c, 0x97, 0xd3, 0x64, 0xc9, 0x84, 0x1a, 0x59, 0x13, 0x2a, 0x5a, 0x3a,
0xb9, 0x01, 0xcb, 0x43, 0x56, 0xef, 0xbf, 0x73, 0xbc, 0x19, 0x37, 0xf1, 0xa0, 0x54, 0xd5, 0x84,
0xee, 0x26, 0x45, 0x51, 0x26, 0x65, 0x96, 0x74, 0xa8, 0xb3, 0x70, 0x2e, 0x1b, 0x26, 0x64, 0xe1,
0x99, 0xe9, 0x57, 0xb6, 0x68, 0xd3, 0x3e, 0x53, 0xd1, 0xe6, 0x19, 0x68, 0x8a, 0x48, 0x85, 0x58,
0x7a, 0x87, 0x39, 0x3d, 0xe1, 0x06, 0xac, 0x50, 0xf2, 0x03, 0x5d, 0xf9, 0x44, 0x24, 0x5b, 0xc3,
0xd0, 0xf2, 0x35, 0x8c, 0x0b, 0xb0, 0x68, 0x87, 0x83, 0x7d, 0xf3, 0x11, 0xee, 0x2d, 0xd1, 0xd6,
0x05, 0x3b, 0xbc, 0x6b, 0x3e, 0xc2, 0xfa, 0xbf, 0x56, 0xa0, 0x93, 0x6c, 0xb0, 0x85, 0x3d, 0x48,
0x91, 0x3b, 0x43, 0x3b, 0xa0, 0x25, 0x71, 0x0f, 0xe5, 0xf0, 0x89, 0x39, 0x78, 0xf6, 0x98, 0xb1,
0x3b, 0xce, 0xd8, 0xab, 0xb4, 0xdd, 0x57, 0x4f, 0xb5, 0xdd, 0xcf, 0x79, 0x9b, 0xe0, 0x26, 0xac,
0xc6, 0x7b, 0xaf, 0xb4, 0x6c, 0x96, 0x60, 0xad, 0x88, 0xc6, 0xfb, 0xe9, 0xe5, 0x4f, 0x71, 0x01,
0x8b, 0xd3, 0x5c, 0x40, 0x56, 0x05, 0xea, 0x39, 0x15, 0xc8, 0x5f, 0x6a, 0x68, 0x28, 0x2e, 0x35,
0xe8, 0x0f, 0x61, 0x99, 0x16, 0xa8, 0xc3, 0x61, 0x60, 0xef, 0xe1, 0x38, 0x05, 0x28, 0x22, 0xd6,
0x3e, 0xd4, 0x33, 0x59, 0x44, 0xfc, 0xad, 0xff, 0xb8, 0x04, 0xe7, 0xf3, 0xf3, 0x52, 0x8d, 0x49,
0x1c, 0x49, 0x49, 0x72, 0x24, 0xbf, 0x02, 0xcb, 0xa9, 0x88, 0x52, 0x9a, 0x79, 0x4a, 0x04, 0xae,
0x20, 0xdc, 0x40, 0xc9, 0x1c, 0x02, 0xa6, 0xff, 0xbc, 0x14, 0xd7, 0xf9, 0x09, 0x6c, 0x44, 0x0f,
0x51, 0xc8, 0xbe, 0xe6, 0x7b, 0x8e, 0xed, 0xc5, 0x05, 0x17, 0xbe, 0x46, 0x06, 0xe4, 0x05, 0x97,
0x77, 0xa0, 0xcb, 0x3b, 0xc5, 0xdb, 0x53, 0xc1, 0x80, 0xac, 0xc3, 0xc6, 0xc5, 0x1b, 0xd3, 0xf3,
0xd0, 0xe1, 0xa7, 0x1b, 0x02, 0x5f, 0x45, 0x75, 0xe6, 0xf1, 0x3d, 0xd0, 0x44, 0xb7, 0xd3, 0x6e,
0x88, 0x5d, 0x3e, 0x30, 0x0e, 0xec, 0x7e, 0xb3, 0x04, 0x3d, 0x79, 0x7b, 0x4c, 0x2d, 0xff, 0xf4,
0xe1, 0xdd, 0xeb, 0xf2, 0x99, 0xf6, 0xf3, 0x27, 0xd0, 0x93, 0xe0, 0x11, 0x27, 0xdb, 0xbf, 0x5b,
0xa6, 0x17, 0x14, 0x48, 0xaa, 0xb7, 0x65, 0x87, 0x51, 0x60, 0xef, 0x4d, 0xe6, 0x3b, 0x65, 0x35,
0xa1, 0x39, 0x3c, 0xc0, 0xc3, 0x47, 0x63, 0xdf, 0x4e, 0xa4, 0xf2, 0x96, 0x8a, 0xa6, 0xe9, 0x68,
0xd7, 0x37, 0x93, 0x19, 0xd8, 0x31, 0x55, 0x7a, 0xce, 0xfe, 0x0f, 0x41, 0xcb, 0x76, 0x48, 0x9f,
0x0e, 0x35, 0xd8, 0xe9, 0xd0, 0x4d, 0xf9, 0x74, 0x68, 0x46, 0xa4, 0x91, 0x3a, 0x1c, 0xfa, 0x9b,
0x32, 0x7c, 0x5d, 0x49, 0xdb, 0x3c, 0x59, 0xd2, 0xb4, 0x3a, 0xd2, 0x1d, 0xa8, 0x67, 0x92, 0xda,
0x17, 0x4e, 0x90, 0x1f, 0xaf, 0xbb, 0xb2, 0xd2, 0x60, 0x98, 0xc4, 0x56, 0x89, 0xc1, 0x57, 0xa7,
0xcf, 0xc1, 0xed, 0x4e, 0x9a, 0x43, 0x8c, 0x43, 0xb7, 0xa1, 0xc5, 0x0a, 0x06, 0x83, 0x43, 0x1b,
0x1f, 0x89, 0xb3, 0xd7, 0xcb, 0x4a, 0xd7, 0x4c, 0xfb, 0x7d, 0x68, 0xe3, 0x23, 0xa3, 0xe9, 0xc4,
0xbf, 0x43, 0xfd, 0xef, 0xab, 0x00, 0x49, 0x1b, 0xc9, 0xce, 0x12, 0x9b, 0xe7, 0x46, 0x9c, 0x82,
0x90, 0x58, 0x42, 0x8e, 0x5c, 0xc5, 0x27, 0x32, 0x92, 0xb3, 0x0f, 0xcb, 0x0e, 0x23, 0xce, 0x97,
0xeb, 0x27, 0xd3, 0x22, 0x58, 0x44, 0x44, 0xc6, 0x75, 0x26, 0x4c, 0x20, 0xe8, 0x15, 0x40, 0xa3,
0xc0, 0x3f, 0xb2, 0xbd, 0x51, 0x3a, 0xdf, 0x60, 0x69, 0xc9, 0x12, 0x6f, 0x49, 0x25, 0x1c, 0x3f,
0x02, 0x2d, 0xd3, 0x5d, 0xb0, 0xe4, 0xe6, 0x0c, 0x32, 0xee, 0x49, 0x73, 0x71, 0xf5, 0xed, 0xca,
0x18, 0xe8, 0x41, 0xeb, 0x03, 0x33, 0x18, 0x61, 0x21, 0x51, 0x1e, 0x87, 0xc9, 0x40, 0xf4, 0x0a,
0x2c, 0xf3, 0xd3, 0x30, 0x41, 0x4c, 0xea, 0x54, 0x4c, 0xa3, 0xa7, 0x62, 0x1c, 0x1d, 0x09, 0xde,
0xfa, 0x03, 0xd0, 0xb2, 0x4c, 0x50, 0x9c, 0x9a, 0xbe, 0x2a, 0xdb, 0xc5, 0x49, 0xee, 0x8b, 0x4c,
0x93, 0xb2, 0x8c, 0xbe, 0x09, 0x2b, 0xaa, 0xe5, 0x29, 0x90, 0x9c, 0xd9, 0xf8, 0xde, 0x8a, 0x23,
0x68, 0x2a, 0xb6, 0x69, 0x9b, 0x52, 0xaa, 0x4e, 0x5d, 0x96, 0xea, 0xd4, 0xfa, 0xaf, 0x57, 0x00,
0xe5, 0xad, 0x05, 0x75, 0xa0, 0x1c, 0x4f, 0x52, 0xde, 0xde, 0xca, 0x68, 0x67, 0x39, 0xa7, 0x9d,
0x17, 0xa1, 0x11, 0x07, 0x09, 0x7c, 0x47, 0x48, 0x00, 0x69, 0xdd, 0xad, 0xca, 0xba, 0x9b, 0x22,
0xac, 0x26, 0x17, 0xd0, 0x6f, 0xc0, 0x8a, 0x63, 0x86, 0xd1, 0x80, 0xd5, 0xe9, 0x23, 0xdb, 0xc5,
0x61, 0x64, 0xba, 0x63, 0x2a, 0xf9, 0xaa, 0x81, 0x48, 0xdb, 0x16, 0x69, 0x7a, 0x20, 0x5a, 0xd0,
0x03, 0x11, 0x8c, 0x13, 0x57, 0xcd, 0xef, 0x23, 0xbc, 0x5a, 0xcc, 0x3b, 0x24, 0xd5, 0x71, 0xa6,
0x80, 0x8d, 0x38, 0x4a, 0xed, 0x7f, 0x02, 0x1d, 0xb9, 0x51, 0x21, 0xbe, 0x5b, 0xb2, 0xf8, 0x8a,
0xc4, 0xc1, 0x29, 0x19, 0x1e, 0x00, 0xca, 0xfb, 0x9a, 0x34, 0xcf, 0x4a, 0x32, 0xcf, 0x66, 0xc9,
0x22, 0xc5, 0xd3, 0x8a, 0x2c, 0xec, 0x7f, 0xac, 0x00, 0x4a, 0x02, 0xbe, 0xf8, 0x7c, 0xbc, 0x48,
0x94, 0x74, 0x1d, 0x96, 0xf3, 0xe1, 0xa0, 0x88, 0x81, 0x51, 0x2e, 0x18, 0x54, 0x05, 0x6e, 0x15,
0xd5, 0x6d, 0xd4, 0xd7, 0xe2, 0xdd, 0x81, 0x45, 0xb7, 0x97, 0xa7, 0x1e, 0x7f, 0xc8, 0x1b, 0xc4,
0x0f, 0xb3, 0xb7, 0x58, 0x99, 0xbb, 0xb9, 0xa5, 0xf4, 0xe4, 0xb9, 0x25, 0xcf, 0xbc, 0xc2, 0x2a,
0xc5, 0xdd, 0x0b, 0xa7, 0x8a, 0xbb, 0xaf, 0x42, 0x3b, 0xc0, 0x43, 0xff, 0x10, 0x07, 0x4c, 0x6b,
0xa9, 0xff, 0xa9, 0x19, 0x2d, 0x0e, 0xa4, 0xfa, 0x3a, 0xff, 0xc5, 0xd4, 0xff, 0x29, 0xc3, 0x52,
0xcc, 0xed, 0x53, 0x49, 0x72, 0xf6, 0x7d, 0x87, 0xa7, 0x2c, 0xba, 0x8f, 0xd5, 0xa2, 0xfb, 0xf6,
0x89, 0x09, 0x52, 0x61, 0xc9, 0x7d, 0x3e, 0xec, 0xff, 0x0c, 0x16, 0x79, 0x3d, 0x3c, 0xe7, 0x2a,
0x8b, 0xd4, 0x29, 0x56, 0xa0, 0x46, 0x3c, 0xb3, 0x28, 0x66, 0xb2, 0x0f, 0xc6, 0xf7, 0xf4, 0xed,
0x68, 0xee, 0x2d, 0xdb, 0xd2, 0xe5, 0x68, 0xfd, 0xb7, 0x2a, 0x00, 0xbb, 0xc7, 0xde, 0xf0, 0x36,
0x33, 0xf7, 0x1b, 0x50, 0x9d, 0x75, 0x97, 0x8e, 0xf4, 0xa6, 0x5a, 0x4a, 0x7b, 0x16, 0xd0, 0x00,
0xa9, 0x12, 0x53, 0xc9, 0x56, 0x62, 0xa6, 0xd5, 0x50, 0xa6, 0x3b, 0xf3, 0x6f, 0x43, 0x95, 0x3a,
0x65, 0x76, 0xd5, 0xac, 0xd0, 0x71, 0x34, 0x1d, 0x80, 0xd6, 0x40, 0xc4, 0x02, 0xdb, 0x1e, 0xdb,
0xec, 0xa9, 0x63, 0xaf, 0x18, 0x59, 0x30, 0x7a, 0x01, 0x3a, 0xac, 0x02, 0x17, 0x77, 0x64, 0xc9,
0x64, 0x06, 0x9a, 0x0f, 0x25, 0x1a, 0xaa, 0x50, 0x62, 0x0d, 0xba, 0x56, 0xe0, 0x8f, 0xc7, 0xa9,
0xe9, 0x58, 0x09, 0x26, 0x0b, 0xd6, 0x7f, 0x56, 0x81, 0x0b, 0x84, 0xbf, 0x4f, 0x26, 0x1d, 0x28,
0xa2, 0x3c, 0xa9, 0x9d, 0xa1, 0x22, 0xef, 0x0c, 0xb7, 0x60, 0x91, 0xd5, 0x79, 0x44, 0x60, 0x7b,
0x79, 0x9a, 0x36, 0x30, 0xdd, 0x31, 0x44, 0xf7, 0x79, 0x8b, 0x05, 0xd2, 0x61, 0xfd, 0xc2, 0x7c,
0x87, 0xf5, 0x8b, 0xd9, 0x6a, 0x70, 0x4a, 0xad, 0xea, 0x33, 0xef, 0xcf, 0x35, 0xce, 0x70, 0x02,
0xfe, 0x10, 0xda, 0x46, 0xda, 0xc2, 0x10, 0x82, 0x6a, 0xea, 0x92, 0x2e, 0xfd, 0x4d, 0xcb, 0x04,
0xe6, 0xd8, 0x1c, 0xda, 0xd1, 0x31, 0x95, 0x4a, 0xcd, 0x88, 0xbf, 0xd5, 0xe6, 0xac, 0xff, 0x77,
0x09, 0xce, 0x8b, 0x43, 0x61, 0xee, 0x2c, 0xce, 0xae, 0x18, 0x1b, 0xb0, 0xca, 0x3d, 0x43, 0xc6,
0x45, 0xb0, 0x64, 0x60, 0x99, 0xc1, 0xe4, 0x65, 0x6c, 0xc0, 0x6a, 0x44, 0x95, 0x34, 0x3b, 0x86,
0xa9, 0xcd, 0x32, 0x6b, 0x94, 0xc7, 0x14, 0x39, 0x94, 0x7f, 0x86, 0xdd, 0x3a, 0xe3, 0x12, 0xe2,
0xb6, 0x0e, 0xde, 0xc4, 0xe5, 0xab, 0xd4, 0x8f, 0xe0, 0x22, 0xbb, 0x26, 0xbf, 0x27, 0x53, 0x34,
0xd7, 0x99, 0x8c, 0x72, 0xdd, 0x19, 0xd7, 0xf8, 0xc7, 0x25, 0xb8, 0x34, 0x05, 0xf3, 0x3c, 0xd9,
0xe8, 0x7b, 0x4a, 0xec, 0x53, 0x6a, 0x07, 0x12, 0x5e, 0xa6, 0x6e, 0x32, 0x91, 0xbf, 0xa8, 0xc2,
0x52, 0xae, 0xd3, 0xa9, 0x75, 0xee, 0x65, 0x40, 0x44, 0x08, 0xf1, 0x93, 0x50, 0x5a, 0x8e, 0xe1,
0x1b, 0x35, 0xc9, 0x75, 0xe2, 0xe7, 0xa0, 0x3b, 0xbe, 0x85, 0x91, 0xcd, 0x7a, 0xb3, 0x13, 0x99,
0x58, 0x72, 0xd5, 0xe9, 0x2f, 0x7f, 0x72, 0x04, 0xae, 0xef, 0x4c, 0x5c, 0x76, 0x78, 0xc3, 0xa5,
0xcc, 0x36, 0x5f, 0x82, 0x4a, 0x02, 0xa3, 0x7d, 0x58, 0xa2, 0x59, 0xd8, 0x24, 0x1a, 0xf9, 0x24,
0x07, 0xa3, 0x74, 0xb1, 0x2d, 0xfe, 0xbb, 0x85, 0x31, 0x7d, 0xc0, 0x47, 0x13, 0xe2, 0x79, 0x4e,
0xe8, 0xc9, 0x50, 0x81, 0xc7, 0xf6, 0x86, 0xbe, 0x1b, 0xe3, 0x59, 0x38, 0x25, 0x9e, 0x6d, 0x3e,
0x5a, 0xc6, 0x93, 0x86, 0xf6, 0x37, 0x61, 0x55, 0xb9, 0xf4, 0x59, 0xf1, 0x42, 0x2d, 0x9d, 0x0a,
0xde, 0x81, 0x15, 0xd5, 0xaa, 0xce, 0x30, 0x47, 0x8e, 0xe2, 0xd3, 0xcc, 0xa1, 0xff, 0x79, 0x19,
0xda, 0x5b, 0xd8, 0xc1, 0x11, 0x7e, 0xba, 0x67, 0xe6, 0xb9, 0x0b, 0x00, 0x95, 0xfc, 0x05, 0x80,
0xdc, 0x6d, 0x86, 0xaa, 0xe2, 0x36, 0xc3, 0xa5, 0xf8, 0x12, 0x07, 0x99, 0xa5, 0x26, 0x87, 0x22,
0x16, 0x7a, 0x1d, 0x5a, 0xe3, 0xc0, 0x76, 0xcd, 0xe0, 0x78, 0xf0, 0x08, 0x1f, 0x87, 0x7c, 0xef,
0xe9, 0x29, 0x77, 0xaf, 0xed, 0xad, 0xd0, 0x68, 0xf2, 0xde, 0xef, 0xe2, 0x63, 0x7a, 0x41, 0x24,
0xce, 0x2b, 0xd9, 0x2d, 0xc2, 0xaa, 0x91, 0x82, 0x5c, 0x7b, 0x09, 0x1a, 0xf1, 0xc5, 0x2b, 0x54,
0x87, 0xea, 0xdd, 0x89, 0xe3, 0x68, 0xe7, 0x50, 0x03, 0x6a, 0x34, 0xf3, 0xd4, 0x4a, 0xe4, 0x27,
0xdd, 0x55, 0xb4, 0xf2, 0xb5, 0x5f, 0x82, 0x46, 0x7c, 0x01, 0x04, 0x35, 0x61, 0xf1, 0xa1, 0xf7,
0xae, 0xe7, 0x1f, 0x79, 0xda, 0x39, 0xb4, 0x08, 0x95, 0xdb, 0x8e, 0xa3, 0x95, 0x50, 0x1b, 0x1a,
0xbb, 0x51, 0x80, 0x4d, 0x22, 0x3e, 0xad, 0x8c, 0x3a, 0x00, 0xef, 0xd8, 0x61, 0xe4, 0x07, 0xf6,
0xd0, 0x74, 0xb4, 0xca, 0xb5, 0xcf, 0xa0, 0x23, 0x9f, 0x07, 0xa0, 0x16, 0xd4, 0x77, 0xfc, 0xe8,
0xed, 0x4f, 0xed, 0x30, 0xd2, 0xce, 0x91, 0xfe, 0x3b, 0x7e, 0x74, 0x3f, 0xc0, 0x21, 0xf6, 0x22,
0xad, 0x84, 0x00, 0x16, 0x3e, 0xf0, 0xb6, 0xec, 0xf0, 0x91, 0x56, 0x46, 0xcb, 0xfc, 0xa8, 0xcf,
0x74, 0xb6, 0x79, 0x91, 0x5d, 0xab, 0x90, 0xe1, 0xf1, 0x57, 0x15, 0x69, 0xd0, 0x8a, 0xbb, 0xdc,
0xbb, 0xff, 0x50, 0xab, 0x31, 0xea, 0xc9, 0xcf, 0x85, 0x6b, 0x16, 0x68, 0xd9, 0x23, 0x6a, 0x32,
0x27, 0x5b, 0x44, 0x0c, 0xd2, 0xce, 0x91, 0x95, 0xf1, 0x3b, 0x02, 0x5a, 0x09, 0x75, 0xa1, 0x99,
0x3a, 0x71, 0xd7, 0xca, 0x04, 0x70, 0x2f, 0x18, 0x0f, 0xb9, 0x6e, 0x31, 0x12, 0x88, 0xa2, 0x6e,
0x11, 0x4e, 0x54, 0xaf, 0xdd, 0x81, 0xba, 0x48, 0x98, 0x48, 0x57, 0xce, 0x22, 0xf2, 0xa9, 0x9d,
0x43, 0x4b, 0xd0, 0x96, 0x9e, 0x1b, 0x6a, 0x25, 0x84, 0xa0, 0x23, 0x3f, 0x08, 0xd6, 0xca, 0xd7,
0x36, 0x00, 0x92, 0x9c, 0x82, 0x90, 0xb3, 0xed, 0x1d, 0x9a, 0x8e, 0x6d, 0x31, 0xda, 0x48, 0x13,
0xe1, 0x2e, 0xe5, 0x0e, 0xb3, 0x59, 0xad, 0x7c, 0xed, 0x4d, 0xa8, 0x8b, 0x10, 0x98, 0xc0, 0x0d,
0xec, 0xfa, 0x87, 0x98, 0x49, 0x66, 0x17, 0x47, 0x4c, 0x8e, 0xb7, 0x5d, 0xec, 0x59, 0x5a, 0x99,
0x90, 0xf1, 0x70, 0x6c, 0x99, 0x91, 0xb8, 0x5a, 0xab, 0x55, 0x36, 0xfe, 0x63, 0x19, 0x80, 0x9d,
0x39, 0xfb, 0x7e, 0x60, 0x21, 0x87, 0xde, 0x3d, 0xd9, 0xf4, 0xdd, 0xb1, 0xef, 0x89, 0x03, 0xb1,
0x10, 0xad, 0x67, 0x6a, 0x36, 0xec, 0x23, 0xdf, 0x91, 0xf3, 0xa6, 0xff, 0x9c, 0xb2, 0x7f, 0xa6,
0xb3, 0x7e, 0x0e, 0xb9, 0x14, 0x1b, 0x49, 0x5b, 0x1e, 0xd8, 0xc3, 0x47, 0xf1, 0x41, 0xf5, 0xf4,
0x87, 0xba, 0x99, 0xae, 0x02, 0xdf, 0x55, 0x25, 0xbe, 0xdd, 0x28, 0xb0, 0xbd, 0x91, 0xd8, 0x1d,
0xf5, 0x73, 0xe8, 0x71, 0xe6, 0x99, 0xb0, 0x40, 0xb8, 0x51, 0xe4, 0x65, 0xf0, 0xd9, 0x50, 0x3a,
0xd0, 0xcd, 0xfc, 0x1f, 0x03, 0xba, 0xa6, 0x7e, 0x6f, 0xa5, 0xfa, 0xef, 0x88, 0xfe, 0x4b, 0x85,
0xfa, 0xc6, 0xd8, 0x6c, 0xe8, 0xc8, 0x7f, 0x24, 0x80, 0xbe, 0x31, 0x6d, 0x82, 0xdc, 0x8b, 0xcf,
0xfe, 0xb5, 0x22, 0x5d, 0x63, 0x54, 0x1f, 0x31, 0xf5, 0x9d, 0x85, 0x4a, 0xf9, 0xc8, 0xb6, 0x7f,
0x52, 0x60, 0xa2, 0x9f, 0x43, 0x9f, 0x90, 0x18, 0x22, 0xf3, 0x2e, 0x15, 0xbd, 0xac, 0xde, 0xf7,
0xd4, 0xcf, 0x57, 0x67, 0x61, 0xf8, 0x28, 0x6b, 0x7c, 0xd3, 0xa9, 0xcf, 0x3d, 0x78, 0x2f, 0x4e,
0x7d, 0x6a, 0xfa, 0x93, 0xa8, 0x3f, 0x35, 0x06, 0x87, 0x65, 0x65, 0x8a, 0x17, 0x71, 0x59, 0x55,
0x4e, 0x92, 0xa2, 0xe9, 0xcf, 0xe7, 0x66, 0x61, 0x9b, 0x50, 0x23, 0xcd, 0x5e, 0xb6, 0x78, 0x65,
0xca, 0x31, 0x8e, 0xfa, 0x29, 0x6e, 0x7f, 0xbd, 0x68, 0xf7, 0xb4, 0x2e, 0xcb, 0xaf, 0x3d, 0xd5,
0x22, 0x52, 0xbe, 0x50, 0x55, 0xeb, 0xb2, 0xfa, 0xf1, 0xa8, 0x7e, 0x0e, 0x3d, 0x90, 0x5c, 0x3d,
0x7a, 0x61, 0x9a, 0x2a, 0xc8, 0xb7, 0xaf, 0x66, 0xf1, 0xed, 0x57, 0x01, 0x31, 0x4b, 0xf5, 0xf6,
0xed, 0xd1, 0x24, 0x30, 0x99, 0x1a, 0x4f, 0x73, 0x6e, 0xf9, 0xae, 0x02, 0xcd, 0x37, 0x4f, 0x31,
0x22, 0x5e, 0xd2, 0x00, 0xe0, 0x1e, 0x8e, 0xde, 0xa7, 0xcf, 0xfe, 0xc2, 0xec, 0x8a, 0x12, 0xff,
0xcd, 0x3b, 0x08, 0x54, 0x2f, 0xce, 0xec, 0x17, 0x23, 0xd8, 0x83, 0xe6, 0x3d, 0x92, 0x5f, 0xd1,
0x98, 0x31, 0x44, 0x53, 0x47, 0x8a, 0x1e, 0x02, 0xc5, 0xda, 0xec, 0x8e, 0x69, 0xe7, 0x99, 0x79,
0xf9, 0x8a, 0xa6, 0x0a, 0x36, 0xff, 0x1e, 0x57, 0xed, 0x3c, 0xa7, 0x3c, 0xa5, 0x65, 0x2b, 0xa2,
0x47, 0x89, 0xef, 0x60, 0xd3, 0x89, 0x0e, 0xa6, 0xac, 0x28, 0xd5, 0xe3, 0xe4, 0x15, 0x49, 0x1d,
0x63, 0x1c, 0x18, 0x96, 0x99, 0x15, 0xca, 0x89, 0xe9, 0x75, 0xf5, 0x14, 0xf9, 0x9e, 0x05, 0x55,
0xcf, 0x84, 0xa5, 0xad, 0xc0, 0x1f, 0xcb, 0x48, 0x5e, 0x51, 0x22, 0xc9, 0xf5, 0x2b, 0x88, 0xe2,
0xfb, 0xd0, 0x12, 0xf9, 0x3f, 0xcd, 0x58, 0xd4, 0x5c, 0x48, 0x77, 0x29, 0x38, 0xf1, 0xc7, 0xd0,
0xcd, 0x14, 0x16, 0xd4, 0x42, 0x57, 0x57, 0x1f, 0x66, 0xcd, 0x7e, 0x04, 0x88, 0x3e, 0x67, 0x96,
0xff, 0x91, 0x41, 0x1d, 0xdf, 0xe4, 0x3b, 0x0a, 0x24, 0xd7, 0x0b, 0xf7, 0x8f, 0x25, 0xff, 0x6b,
0xb0, 0xaa, 0x4c, 0xde, 0xb3, 0x0e, 0x81, 0x5f, 0xb7, 0x3e, 0xa1, 0xc2, 0x90, 0x75, 0x08, 0x27,
0x8e, 0x10, 0xf8, 0x37, 0xfe, 0x0d, 0x41, 0x83, 0xc6, 0x79, 0x54, 0x5a, 0xff, 0x1f, 0xe6, 0x3d,
0xd9, 0x30, 0xef, 0x63, 0xe8, 0x66, 0x9e, 0xd9, 0xaa, 0x95, 0x56, 0xfd, 0x16, 0xb7, 0x40, 0xb4,
0x22, 0xbf, 0x50, 0x55, 0x6f, 0x85, 0xca, 0x57, 0xac, 0xb3, 0xe6, 0xfe, 0x90, 0x3d, 0x61, 0x8f,
0x4f, 0xa3, 0x5f, 0x9c, 0x7a, 0xd0, 0x21, 0x5f, 0x9b, 0xfe, 0xe2, 0xa3, 0xa0, 0xaf, 0x76, 0x04,
0xfa, 0x31, 0x74, 0x33, 0x0f, 0x93, 0xd4, 0x1a, 0xa3, 0x7e, 0xbd, 0x34, 0x6b, 0xf6, 0xcf, 0x31,
0x78, 0xb2, 0x60, 0x59, 0xf1, 0x0e, 0x04, 0xad, 0x4f, 0x0b, 0x44, 0xd5, 0x0f, 0x46, 0x66, 0x2f,
0xa8, 0x2d, 0x99, 0x69, 0x76, 0xbf, 0x49, 0x88, 0xcc, 0xfe, 0x95, 0x53, 0xff, 0xe5, 0x62, 0xff,
0xfb, 0x14, 0x2f, 0x68, 0x17, 0x16, 0xd8, 0x73, 0x25, 0xf4, 0xac, 0xfa, 0x2c, 0x27, 0xf5, 0x94,
0xa9, 0x3f, 0xeb, 0xc1, 0x53, 0x38, 0x71, 0x22, 0x42, 0xff, 0x0f, 0xa0, 0xc3, 0x40, 0x31, 0x83,
0x9e, 0xe0, 0xe4, 0xbb, 0x50, 0xa3, 0xae, 0x1d, 0x29, 0xcf, 0x25, 0xd2, 0x8f, 0x92, 0xfa, 0xb3,
0xdf, 0x21, 0x25, 0x14, 0x37, 0xe9, 0x48, 0x56, 0xd5, 0x79, 0x92, 0x53, 0xdf, 0x28, 0xa1, 0x1f,
0x40, 0x9b, 0x4d, 0x2e, 0xb8, 0xf1, 0x24, 0x29, 0x1f, 0xc2, 0x72, 0x8a, 0xf2, 0xa7, 0x81, 0xe2,
0x46, 0xe9, 0xff, 0x78, 0x74, 0xff, 0x29, 0x7d, 0x14, 0x94, 0xbd, 0xf6, 0x86, 0xd6, 0x4f, 0x77,
0x77, 0xaf, 0x7f, 0xbd, 0x70, 0xff, 0x18, 0xf3, 0x8f, 0x40, 0xcb, 0x9e, 0x38, 0xa2, 0x97, 0xa6,
0xf9, 0x12, 0x15, 0xce, 0x19, 0x8e, 0xe4, 0x7b, 0xb0, 0xc0, 0x6a, 0xc4, 0x6a, 0x03, 0x94, 0xea,
0xc7, 0x33, 0xe6, 0xba, 0xf3, 0xad, 0x8f, 0x36, 0x46, 0x76, 0x74, 0x30, 0xd9, 0x23, 0x2d, 0xd7,
0x59, 0xd7, 0x57, 0x6c, 0x9f, 0xff, 0xba, 0x2e, 0x64, 0x79, 0x9d, 0x8e, 0xbe, 0x4e, 0x11, 0x8c,
0xf7, 0xf6, 0x16, 0xe8, 0xe7, 0xcd, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xa3, 0x46, 0x19,
0xc4, 0x54, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -0,0 +1,93 @@
// Licensed to the LF AI & Data foundation under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package proxy
import (
"fmt"
"net/http"
"sync"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
management "github.com/milvus-io/milvus/internal/http"
"github.com/milvus-io/milvus/internal/proto/datapb"
"github.com/milvus-io/milvus/pkg/util/commonpbutil"
)
// this file contains proxy management restful API handler
const (
mgrRouteGcPause = `/management/datacoord/garbage_collection/pause`
mgrRouteGcResume = `/management/datacoord/garbage_collection/resume`
)
var mgrRouteRegisterOnce sync.Once
func RegisterMgrRoute(proxy *Proxy) {
mgrRouteRegisterOnce.Do(func() {
management.Register(&management.Handler{
Path: mgrRouteGcPause,
HandlerFunc: proxy.PauseDatacoordGC,
})
management.Register(&management.Handler{
Path: mgrRouteGcResume,
HandlerFunc: proxy.ResumeDatacoordGC,
})
})
}
func (node *Proxy) PauseDatacoordGC(w http.ResponseWriter, req *http.Request) {
pauseSeconds := req.URL.Query().Get("pause_seconds")
resp, err := node.dataCoord.GcControl(req.Context(), &datapb.GcControlRequest{
Base: commonpbutil.NewMsgBase(),
Command: datapb.GcCommand_Pause,
Params: []*commonpb.KeyValuePair{
{Key: "duration", Value: pauseSeconds},
},
})
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(fmt.Sprintf(`{"msg": "failed to pause garbage collection, %s"}`, err.Error())))
return
}
if resp.GetErrorCode() != commonpb.ErrorCode_Success {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(fmt.Sprintf(`{"msg": "failed to pause garbage collection, %s"}`, resp.GetReason())))
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"msg": "OK"}`))
}
func (node *Proxy) ResumeDatacoordGC(w http.ResponseWriter, req *http.Request) {
resp, err := node.dataCoord.GcControl(req.Context(), &datapb.GcControlRequest{
Base: commonpbutil.NewMsgBase(),
Command: datapb.GcCommand_Resume,
})
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(fmt.Sprintf(`{"msg": "failed to pause garbage collection, %s"}`, err.Error())))
return
}
if resp.GetErrorCode() != commonpb.ErrorCode_Success {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(fmt.Sprintf(`{"msg": "failed to pause garbage collection, %s"}`, resp.GetReason())))
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"msg": "OK"}`))
}

View File

@ -0,0 +1,163 @@
// Licensed to the LF AI & Data foundation under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package proxy
import (
"context"
"net/http"
"net/http/httptest"
"testing"
"github.com/cockroachdb/errors"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"
"google.golang.org/grpc"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus/internal/mocks"
"github.com/milvus-io/milvus/internal/proto/datapb"
)
type ProxyManagementSuite struct {
suite.Suite
datacoord *mocks.MockDataCoordClient
proxy *Proxy
}
func (s *ProxyManagementSuite) SetupTest() {
s.datacoord = mocks.NewMockDataCoordClient(s.T())
s.proxy = &Proxy{
dataCoord: s.datacoord,
}
}
func (s *ProxyManagementSuite) TearDownTest() {
s.datacoord.AssertExpectations(s.T())
}
func (s *ProxyManagementSuite) TestPauseDataCoordGC() {
s.Run("normal", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
s.Equal(datapb.GcCommand_Pause, req.GetCommand())
return &commonpb.Status{}, nil
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcPause+"?pause_seconds=60", nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.PauseDatacoordGC(recorder, req)
s.Equal(http.StatusOK, recorder.Code)
})
s.Run("return_error", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{}, errors.New("mock")
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcPause+"?pause_seconds=60", nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.PauseDatacoordGC(recorder, req)
s.Equal(http.StatusInternalServerError, recorder.Code)
})
s.Run("return_failure", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "mocked",
}, nil
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcPause+"?pause_seconds=60", nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.PauseDatacoordGC(recorder, req)
s.Equal(http.StatusInternalServerError, recorder.Code)
})
}
func (s *ProxyManagementSuite) TestResumeDatacoordGC() {
s.Run("normal", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
s.Equal(datapb.GcCommand_Resume, req.GetCommand())
return &commonpb.Status{}, nil
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcResume, nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.ResumeDatacoordGC(recorder, req)
s.Equal(http.StatusOK, recorder.Code)
})
s.Run("return_error", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{}, errors.New("mock")
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcResume, nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.ResumeDatacoordGC(recorder, req)
s.Equal(http.StatusInternalServerError, recorder.Code)
})
s.Run("return_failure", func() {
s.SetupTest()
defer s.TearDownTest()
s.datacoord.EXPECT().GcControl(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, req *datapb.GcControlRequest, options ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "mocked",
}, nil
})
req, err := http.NewRequest(http.MethodGet, mgrRouteGcResume, nil)
s.Require().NoError(err)
recorder := httptest.NewRecorder()
s.proxy.ResumeDatacoordGC(recorder, req)
s.Equal(http.StatusInternalServerError, recorder.Code)
})
}
func TestProxyManagement(t *testing.T) {
suite.Run(t, new(ProxyManagementSuite))
}