Add list import tasks api (#16605)

Signed-off-by: groot <yihua.mo@zilliz.com>
pull/16646/head
groot 2022-04-25 17:37:46 +08:00 committed by GitHub
parent bb69e09736
commit bc5e9ec929
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 1926 additions and 593 deletions

File diff suppressed because it is too large Load Diff

View File

@ -53,7 +53,7 @@ struct TableStruct_milvus_2eproto {
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[90]
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[92]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
@ -243,6 +243,12 @@ extern ListCredUsersRequestDefaultTypeInternal _ListCredUsersRequest_default_ins
class ListCredUsersResponse;
class ListCredUsersResponseDefaultTypeInternal;
extern ListCredUsersResponseDefaultTypeInternal _ListCredUsersResponse_default_instance_;
class ListImportTasksRequest;
class ListImportTasksRequestDefaultTypeInternal;
extern ListImportTasksRequestDefaultTypeInternal _ListImportTasksRequest_default_instance_;
class ListImportTasksResponse;
class ListImportTasksResponseDefaultTypeInternal;
extern ListImportTasksResponseDefaultTypeInternal _ListImportTasksResponse_default_instance_;
class LoadBalanceRequest;
class LoadBalanceRequestDefaultTypeInternal;
extern LoadBalanceRequestDefaultTypeInternal _LoadBalanceRequest_default_instance_;
@ -397,6 +403,8 @@ template<> ::milvus::proto::milvus::IndexDescription* Arena::CreateMaybeMessage<
template<> ::milvus::proto::milvus::InsertRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::InsertRequest>(Arena*);
template<> ::milvus::proto::milvus::ListCredUsersRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::ListCredUsersRequest>(Arena*);
template<> ::milvus::proto::milvus::ListCredUsersResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::ListCredUsersResponse>(Arena*);
template<> ::milvus::proto::milvus::ListImportTasksRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::ListImportTasksRequest>(Arena*);
template<> ::milvus::proto::milvus::ListImportTasksResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::ListImportTasksResponse>(Arena*);
template<> ::milvus::proto::milvus::LoadBalanceRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::LoadBalanceRequest>(Arena*);
template<> ::milvus::proto::milvus::LoadCollectionRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::LoadCollectionRequest>(Arena*);
template<> ::milvus::proto::milvus::LoadPartitionsRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::LoadPartitionsRequest>(Arena*);
@ -13890,6 +13898,276 @@ class GetImportStateResponse :
};
// -------------------------------------------------------------------
class ListImportTasksRequest :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.milvus.ListImportTasksRequest) */ {
public:
ListImportTasksRequest();
virtual ~ListImportTasksRequest();
ListImportTasksRequest(const ListImportTasksRequest& from);
ListImportTasksRequest(ListImportTasksRequest&& from) noexcept
: ListImportTasksRequest() {
*this = ::std::move(from);
}
inline ListImportTasksRequest& operator=(const ListImportTasksRequest& from) {
CopyFrom(from);
return *this;
}
inline ListImportTasksRequest& operator=(ListImportTasksRequest&& from) noexcept {
if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
if (this != &from) InternalSwap(&from);
} else {
CopyFrom(from);
}
return *this;
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
return GetDescriptor();
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
return GetMetadataStatic().descriptor;
}
static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
return GetMetadataStatic().reflection;
}
static const ListImportTasksRequest& default_instance();
static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
static inline const ListImportTasksRequest* internal_default_instance() {
return reinterpret_cast<const ListImportTasksRequest*>(
&_ListImportTasksRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
81;
friend void swap(ListImportTasksRequest& a, ListImportTasksRequest& b) {
a.Swap(&b);
}
inline void Swap(ListImportTasksRequest* other) {
if (other == this) return;
InternalSwap(other);
}
// implements Message ----------------------------------------------
inline ListImportTasksRequest* New() const final {
return CreateMaybeMessage<ListImportTasksRequest>(nullptr);
}
ListImportTasksRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
return CreateMaybeMessage<ListImportTasksRequest>(arena);
}
void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void CopyFrom(const ListImportTasksRequest& from);
void MergeFrom(const ListImportTasksRequest& from);
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
bool IsInitialized() const final;
size_t ByteSizeLong() const final;
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
#else
bool MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final;
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final;
::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const final;
int GetCachedSize() const final { return _cached_size_.Get(); }
private:
inline void SharedCtor();
inline void SharedDtor();
void SetCachedSize(int size) const final;
void InternalSwap(ListImportTasksRequest* other);
friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
return "milvus.proto.milvus.ListImportTasksRequest";
}
private:
inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
return nullptr;
}
inline void* MaybeArenaPtr() const {
return nullptr;
}
public:
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
private:
static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_milvus_2eproto);
return ::descriptor_table_milvus_2eproto.file_level_metadata[kIndexInFileMessages];
}
public:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
// @@protoc_insertion_point(class_scope:milvus.proto.milvus.ListImportTasksRequest)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_milvus_2eproto;
};
// -------------------------------------------------------------------
class ListImportTasksResponse :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.milvus.ListImportTasksResponse) */ {
public:
ListImportTasksResponse();
virtual ~ListImportTasksResponse();
ListImportTasksResponse(const ListImportTasksResponse& from);
ListImportTasksResponse(ListImportTasksResponse&& from) noexcept
: ListImportTasksResponse() {
*this = ::std::move(from);
}
inline ListImportTasksResponse& operator=(const ListImportTasksResponse& from) {
CopyFrom(from);
return *this;
}
inline ListImportTasksResponse& operator=(ListImportTasksResponse&& from) noexcept {
if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
if (this != &from) InternalSwap(&from);
} else {
CopyFrom(from);
}
return *this;
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
return GetDescriptor();
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
return GetMetadataStatic().descriptor;
}
static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
return GetMetadataStatic().reflection;
}
static const ListImportTasksResponse& default_instance();
static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
static inline const ListImportTasksResponse* internal_default_instance() {
return reinterpret_cast<const ListImportTasksResponse*>(
&_ListImportTasksResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
82;
friend void swap(ListImportTasksResponse& a, ListImportTasksResponse& b) {
a.Swap(&b);
}
inline void Swap(ListImportTasksResponse* other) {
if (other == this) return;
InternalSwap(other);
}
// implements Message ----------------------------------------------
inline ListImportTasksResponse* New() const final {
return CreateMaybeMessage<ListImportTasksResponse>(nullptr);
}
ListImportTasksResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
return CreateMaybeMessage<ListImportTasksResponse>(arena);
}
void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void CopyFrom(const ListImportTasksResponse& from);
void MergeFrom(const ListImportTasksResponse& from);
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
bool IsInitialized() const final;
size_t ByteSizeLong() const final;
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
#else
bool MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final;
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final;
::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const final;
int GetCachedSize() const final { return _cached_size_.Get(); }
private:
inline void SharedCtor();
inline void SharedDtor();
void SetCachedSize(int size) const final;
void InternalSwap(ListImportTasksResponse* other);
friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
return "milvus.proto.milvus.ListImportTasksResponse";
}
private:
inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
return nullptr;
}
inline void* MaybeArenaPtr() const {
return nullptr;
}
public:
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
private:
static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_milvus_2eproto);
return ::descriptor_table_milvus_2eproto.file_level_metadata[kIndexInFileMessages];
}
public:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
enum : int {
kTasksFieldNumber = 2,
kStatusFieldNumber = 1,
};
// repeated int64 tasks = 2;
int tasks_size() const;
void clear_tasks();
::PROTOBUF_NAMESPACE_ID::int64 tasks(int index) const;
void set_tasks(int index, ::PROTOBUF_NAMESPACE_ID::int64 value);
void add_tasks(::PROTOBUF_NAMESPACE_ID::int64 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
tasks() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
mutable_tasks();
// .milvus.proto.common.Status status = 1;
bool has_status() const;
void clear_status();
const ::milvus::proto::common::Status& status() const;
::milvus::proto::common::Status* release_status();
::milvus::proto::common::Status* mutable_status();
void set_allocated_status(::milvus::proto::common::Status* status);
// @@protoc_insertion_point(class_scope:milvus.proto.milvus.ListImportTasksResponse)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 > tasks_;
mutable std::atomic<int> _tasks_cached_byte_size_;
::milvus::proto::common::Status* status_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_milvus_2eproto;
};
// -------------------------------------------------------------------
class GetReplicasRequest :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.milvus.GetReplicasRequest) */ {
public:
@ -13932,7 +14210,7 @@ class GetReplicasRequest :
&_GetReplicasRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
81;
83;
friend void swap(GetReplicasRequest& a, GetReplicasRequest& b) {
a.Swap(&b);
@ -14080,7 +14358,7 @@ class GetReplicasResponse :
&_GetReplicasResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
82;
84;
friend void swap(GetReplicasResponse& a, GetReplicasResponse& b) {
a.Swap(&b);
@ -14227,7 +14505,7 @@ class ReplicaInfo :
&_ReplicaInfo_default_instance_);
}
static constexpr int kIndexInFileMessages =
83;
85;
friend void swap(ReplicaInfo& a, ReplicaInfo& b) {
a.Swap(&b);
@ -14406,7 +14684,7 @@ class ShardReplica :
&_ShardReplica_default_instance_);
}
static constexpr int kIndexInFileMessages =
84;
86;
friend void swap(ShardReplica& a, ShardReplica& b) {
a.Swap(&b);
@ -14577,7 +14855,7 @@ class CreateCredentialRequest :
&_CreateCredentialRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
85;
87;
friend void swap(CreateCredentialRequest& a, CreateCredentialRequest& b) {
a.Swap(&b);
@ -14751,7 +15029,7 @@ class UpdateCredentialRequest :
&_UpdateCredentialRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
86;
88;
friend void swap(UpdateCredentialRequest& a, UpdateCredentialRequest& b) {
a.Swap(&b);
@ -14938,7 +15216,7 @@ class DeleteCredentialRequest :
&_DeleteCredentialRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
87;
89;
friend void swap(DeleteCredentialRequest& a, DeleteCredentialRequest& b) {
a.Swap(&b);
@ -15085,7 +15363,7 @@ class ListCredUsersResponse :
&_ListCredUsersResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
88;
90;
friend void swap(ListCredUsersResponse& a, ListCredUsersResponse& b) {
a.Swap(&b);
@ -15238,7 +15516,7 @@ class ListCredUsersRequest :
&_ListCredUsersRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
89;
91;
friend void swap(ListCredUsersRequest& a, ListCredUsersRequest& b) {
a.Swap(&b);
@ -27412,6 +27690,89 @@ GetImportStateResponse::infos() const {
// -------------------------------------------------------------------
// ListImportTasksRequest
// -------------------------------------------------------------------
// ListImportTasksResponse
// .milvus.proto.common.Status status = 1;
inline bool ListImportTasksResponse::has_status() const {
return this != internal_default_instance() && status_ != nullptr;
}
inline const ::milvus::proto::common::Status& ListImportTasksResponse::status() const {
const ::milvus::proto::common::Status* p = status_;
// @@protoc_insertion_point(field_get:milvus.proto.milvus.ListImportTasksResponse.status)
return p != nullptr ? *p : *reinterpret_cast<const ::milvus::proto::common::Status*>(
&::milvus::proto::common::_Status_default_instance_);
}
inline ::milvus::proto::common::Status* ListImportTasksResponse::release_status() {
// @@protoc_insertion_point(field_release:milvus.proto.milvus.ListImportTasksResponse.status)
::milvus::proto::common::Status* temp = status_;
status_ = nullptr;
return temp;
}
inline ::milvus::proto::common::Status* ListImportTasksResponse::mutable_status() {
if (status_ == nullptr) {
auto* p = CreateMaybeMessage<::milvus::proto::common::Status>(GetArenaNoVirtual());
status_ = p;
}
// @@protoc_insertion_point(field_mutable:milvus.proto.milvus.ListImportTasksResponse.status)
return status_;
}
inline void ListImportTasksResponse::set_allocated_status(::milvus::proto::common::Status* status) {
::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
if (message_arena == nullptr) {
delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
}
if (status) {
::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
if (message_arena != submessage_arena) {
status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
message_arena, status, submessage_arena);
}
} else {
}
status_ = status;
// @@protoc_insertion_point(field_set_allocated:milvus.proto.milvus.ListImportTasksResponse.status)
}
// repeated int64 tasks = 2;
inline int ListImportTasksResponse::tasks_size() const {
return tasks_.size();
}
inline void ListImportTasksResponse::clear_tasks() {
tasks_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int64 ListImportTasksResponse::tasks(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.ListImportTasksResponse.tasks)
return tasks_.Get(index);
}
inline void ListImportTasksResponse::set_tasks(int index, ::PROTOBUF_NAMESPACE_ID::int64 value) {
tasks_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.milvus.ListImportTasksResponse.tasks)
}
inline void ListImportTasksResponse::add_tasks(::PROTOBUF_NAMESPACE_ID::int64 value) {
tasks_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.milvus.ListImportTasksResponse.tasks)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
ListImportTasksResponse::tasks() const {
// @@protoc_insertion_point(field_list:milvus.proto.milvus.ListImportTasksResponse.tasks)
return tasks_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
ListImportTasksResponse::mutable_tasks() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.milvus.ListImportTasksResponse.tasks)
return &tasks_;
}
// -------------------------------------------------------------------
// GetReplicasRequest
// .milvus.proto.common.MsgBase base = 1;
@ -28691,6 +29052,10 @@ inline void ListCredUsersRequest::set_allocated_base(::milvus::proto::common::Ms
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// @@protoc_insertion_point(namespace_scope)

View File

@ -460,6 +460,11 @@ func (m *mockRootCoordService) GetImportState(ctx context.Context, req *milvuspb
panic("not implemented") // TODO: Implement
}
// Returns id array of all import tasks
func (m *mockRootCoordService) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
panic("not implemented") // TODO: Implement
}
// Report impot task state to rootcoord
func (m *mockRootCoordService) ReportImport(ctx context.Context, req *rootcoordpb.ImportResult) (*commonpb.Status, error) {
panic("not implemented") // TODO: Implement

View File

@ -61,6 +61,7 @@ import (
"github.com/milvus-io/milvus/internal/util/paramtable"
"github.com/milvus-io/milvus/internal/util/retry"
"github.com/milvus-io/milvus/internal/util/sessionutil"
"github.com/milvus-io/milvus/internal/util/timerecord"
"github.com/milvus-io/milvus/internal/util/typeutil"
)
@ -878,9 +879,11 @@ func importFlushReqFunc(node *DataNode, req *datapb.ImportTaskRequest, res *root
)
return fmt.Errorf("syncSegmentID Failed: invalid shard number %d", shardNum)
}
log.Info("import task flush segment",
zap.Any("channel names", req.ImportTask.ChannelNames),
zap.Int("shard num", shardNum))
tr := timerecord.NewTimeRecorder("import callback function")
defer tr.Elapse("finished")
log.Info("import task flush segment", zap.Any("ChannelNames", req.ImportTask.ChannelNames), zap.Int("shardNum", shardNum))
segReqs := []*datapb.SegmentIDRequest{
{
ChannelName: req.ImportTask.ChannelNames[shardNum],

View File

@ -669,6 +669,10 @@ func (s *Server) GetImportState(ctx context.Context, req *milvuspb.GetImportStat
return s.proxy.GetImportState(ctx, req)
}
func (s *Server) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
return s.proxy.ListImportTasks(ctx, req)
}
func (s *Server) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return s.proxy.GetReplicas(ctx, req)
}

View File

@ -210,6 +210,10 @@ func (m *MockRootCoord) GetImportState(ctx context.Context, req *milvuspb.GetImp
return nil, nil
}
func (m *MockRootCoord) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
return nil, nil
}
func (m *MockRootCoord) ReportImport(ctx context.Context, req *rootcoordpb.ImportResult) (*commonpb.Status, error) {
return nil, nil
}
@ -736,6 +740,10 @@ func (m *MockProxy) GetImportState(ctx context.Context, req *milvuspb.GetImportS
return nil, nil
}
func (m *MockProxy) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
return nil, nil
}
func (m *MockProxy) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return nil, nil
}

View File

@ -517,6 +517,20 @@ func (c *Client) GetImportState(ctx context.Context, req *milvuspb.GetImportStat
return ret.(*milvuspb.GetImportStateResponse), err
}
// List id array of all import tasks
func (c *Client) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.(rootcoordpb.RootCoordClient).ListImportTasks(ctx, req)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*milvuspb.ListImportTasksResponse), err
}
// Report impot task state to rootcoord
func (c *Client) ReportImport(ctx context.Context, req *rootcoordpb.ImportResult) (*commonpb.Status, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) {

View File

@ -310,6 +310,9 @@ func Test_NewClient(t *testing.T) {
r34Timeout, err := client.ListCredUsers(shortCtx, nil)
retCheck(r34Timeout, err)
r35Timeout, err := client.ListImportTasks(shortCtx, nil)
retCheck(r35Timeout, err)
// clean up
err = client.Stop()
assert.Nil(t, err)

View File

@ -449,6 +449,11 @@ func (s *Server) GetImportState(ctx context.Context, in *milvuspb.GetImportState
return s.rootCoord.GetImportState(ctx, in)
}
// Returns id array of all import tasks
func (s *Server) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
return s.rootCoord.ListImportTasks(ctx, in)
}
// Report impot task state to datacoord
func (s *Server) ReportImport(ctx context.Context, in *rootcoordpb.ImportResult) (*commonpb.Status, error) {
return s.rootCoord.ReportImport(ctx, in)

View File

@ -66,6 +66,7 @@ service MilvusService {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
rpc Import(ImportRequest) returns (ImportResponse) {}
rpc GetImportState(GetImportStateRequest) returns (GetImportStateResponse) {}
rpc ListImportTasks(ListImportTasksRequest) returns (ListImportTasksResponse) {}
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
rpc CreateCredential(CreateCredentialRequest) returns (common.Status) {}
@ -832,6 +833,14 @@ message GetImportStateResponse {
repeated common.KeyValuePair infos = 5; // more informations about the task, progress percent, file path, failed reason, etc.
}
message ListImportTasksRequest {
}
message ListImportTasksResponse {
common.Status status = 1;
repeated int64 tasks = 2; // id list of all import tasks
}
message GetReplicasRequest {
common.MsgBase base = 1;
int64 collectionID = 2;

View File

@ -5216,6 +5216,84 @@ func (m *GetImportStateResponse) GetInfos() []*commonpb.KeyValuePair {
return nil
}
type ListImportTasksRequest struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListImportTasksRequest) Reset() { *m = ListImportTasksRequest{} }
func (m *ListImportTasksRequest) String() string { return proto.CompactTextString(m) }
func (*ListImportTasksRequest) ProtoMessage() {}
func (*ListImportTasksRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{80}
}
func (m *ListImportTasksRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListImportTasksRequest.Unmarshal(m, b)
}
func (m *ListImportTasksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListImportTasksRequest.Marshal(b, m, deterministic)
}
func (m *ListImportTasksRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListImportTasksRequest.Merge(m, src)
}
func (m *ListImportTasksRequest) XXX_Size() int {
return xxx_messageInfo_ListImportTasksRequest.Size(m)
}
func (m *ListImportTasksRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ListImportTasksRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ListImportTasksRequest proto.InternalMessageInfo
type ListImportTasksResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
Tasks []int64 `protobuf:"varint,2,rep,packed,name=tasks,proto3" json:"tasks,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListImportTasksResponse) Reset() { *m = ListImportTasksResponse{} }
func (m *ListImportTasksResponse) String() string { return proto.CompactTextString(m) }
func (*ListImportTasksResponse) ProtoMessage() {}
func (*ListImportTasksResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{81}
}
func (m *ListImportTasksResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListImportTasksResponse.Unmarshal(m, b)
}
func (m *ListImportTasksResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListImportTasksResponse.Marshal(b, m, deterministic)
}
func (m *ListImportTasksResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListImportTasksResponse.Merge(m, src)
}
func (m *ListImportTasksResponse) XXX_Size() int {
return xxx_messageInfo_ListImportTasksResponse.Size(m)
}
func (m *ListImportTasksResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ListImportTasksResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ListImportTasksResponse proto.InternalMessageInfo
func (m *ListImportTasksResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *ListImportTasksResponse) GetTasks() []int64 {
if m != nil {
return m.Tasks
}
return nil
}
type GetReplicasRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
@ -5229,7 +5307,7 @@ func (m *GetReplicasRequest) Reset() { *m = GetReplicasRequest{} }
func (m *GetReplicasRequest) String() string { return proto.CompactTextString(m) }
func (*GetReplicasRequest) ProtoMessage() {}
func (*GetReplicasRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{80}
return fileDescriptor_02345ba45cc0e303, []int{82}
}
func (m *GetReplicasRequest) XXX_Unmarshal(b []byte) error {
@ -5283,7 +5361,7 @@ func (m *GetReplicasResponse) Reset() { *m = GetReplicasResponse{} }
func (m *GetReplicasResponse) String() string { return proto.CompactTextString(m) }
func (*GetReplicasResponse) ProtoMessage() {}
func (*GetReplicasResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{81}
return fileDescriptor_02345ba45cc0e303, []int{83}
}
func (m *GetReplicasResponse) XXX_Unmarshal(b []byte) error {
@ -5333,7 +5411,7 @@ func (m *ReplicaInfo) Reset() { *m = ReplicaInfo{} }
func (m *ReplicaInfo) String() string { return proto.CompactTextString(m) }
func (*ReplicaInfo) ProtoMessage() {}
func (*ReplicaInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{82}
return fileDescriptor_02345ba45cc0e303, []int{84}
}
func (m *ReplicaInfo) XXX_Unmarshal(b []byte) error {
@ -5405,7 +5483,7 @@ func (m *ShardReplica) Reset() { *m = ShardReplica{} }
func (m *ShardReplica) String() string { return proto.CompactTextString(m) }
func (*ShardReplica) ProtoMessage() {}
func (*ShardReplica) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{83}
return fileDescriptor_02345ba45cc0e303, []int{85}
}
func (m *ShardReplica) XXX_Unmarshal(b []byte) error {
@ -5474,7 +5552,7 @@ func (m *CreateCredentialRequest) Reset() { *m = CreateCredentialRequest
func (m *CreateCredentialRequest) String() string { return proto.CompactTextString(m) }
func (*CreateCredentialRequest) ProtoMessage() {}
func (*CreateCredentialRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{84}
return fileDescriptor_02345ba45cc0e303, []int{86}
}
func (m *CreateCredentialRequest) XXX_Unmarshal(b []byte) error {
@ -5552,7 +5630,7 @@ func (m *UpdateCredentialRequest) Reset() { *m = UpdateCredentialRequest
func (m *UpdateCredentialRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateCredentialRequest) ProtoMessage() {}
func (*UpdateCredentialRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{85}
return fileDescriptor_02345ba45cc0e303, []int{87}
}
func (m *UpdateCredentialRequest) XXX_Unmarshal(b []byte) error {
@ -5629,7 +5707,7 @@ func (m *DeleteCredentialRequest) Reset() { *m = DeleteCredentialRequest
func (m *DeleteCredentialRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteCredentialRequest) ProtoMessage() {}
func (*DeleteCredentialRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{86}
return fileDescriptor_02345ba45cc0e303, []int{88}
}
func (m *DeleteCredentialRequest) XXX_Unmarshal(b []byte) error {
@ -5678,7 +5756,7 @@ func (m *ListCredUsersResponse) Reset() { *m = ListCredUsersResponse{} }
func (m *ListCredUsersResponse) String() string { return proto.CompactTextString(m) }
func (*ListCredUsersResponse) ProtoMessage() {}
func (*ListCredUsersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{87}
return fileDescriptor_02345ba45cc0e303, []int{89}
}
func (m *ListCredUsersResponse) XXX_Unmarshal(b []byte) error {
@ -5725,7 +5803,7 @@ func (m *ListCredUsersRequest) Reset() { *m = ListCredUsersRequest{} }
func (m *ListCredUsersRequest) String() string { return proto.CompactTextString(m) }
func (*ListCredUsersRequest) ProtoMessage() {}
func (*ListCredUsersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{88}
return fileDescriptor_02345ba45cc0e303, []int{90}
}
func (m *ListCredUsersRequest) XXX_Unmarshal(b []byte) error {
@ -5837,6 +5915,8 @@ func init() {
proto.RegisterType((*ImportResponse)(nil), "milvus.proto.milvus.ImportResponse")
proto.RegisterType((*GetImportStateRequest)(nil), "milvus.proto.milvus.GetImportStateRequest")
proto.RegisterType((*GetImportStateResponse)(nil), "milvus.proto.milvus.GetImportStateResponse")
proto.RegisterType((*ListImportTasksRequest)(nil), "milvus.proto.milvus.ListImportTasksRequest")
proto.RegisterType((*ListImportTasksResponse)(nil), "milvus.proto.milvus.ListImportTasksResponse")
proto.RegisterType((*GetReplicasRequest)(nil), "milvus.proto.milvus.GetReplicasRequest")
proto.RegisterType((*GetReplicasResponse)(nil), "milvus.proto.milvus.GetReplicasResponse")
proto.RegisterType((*ReplicaInfo)(nil), "milvus.proto.milvus.ReplicaInfo")
@ -5851,273 +5931,276 @@ func init() {
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
var fileDescriptor_02345ba45cc0e303 = []byte{
// 4255 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4d, 0x6f, 0x1c, 0xc9,
0x75, 0xec, 0x19, 0xce, 0xd7, 0x9b, 0x19, 0x72, 0x54, 0xfc, 0x9a, 0x1d, 0x49, 0x2b, 0xaa, 0xf7,
0x8b, 0x2b, 0x79, 0x25, 0x2f, 0xb5, 0xde, 0x75, 0x76, 0x9d, 0xac, 0x25, 0x31, 0x2b, 0x11, 0x2b,
0x29, 0x74, 0x73, 0xd7, 0x86, 0xb3, 0x10, 0x06, 0xc5, 0xee, 0xe2, 0xb0, 0xa3, 0x9e, 0xee, 0x71,
0x57, 0x8d, 0x28, 0xee, 0xc9, 0x80, 0x83, 0x7c, 0xc0, 0x9b, 0x35, 0x82, 0x18, 0x49, 0x7c, 0x48,
0x10, 0xe4, 0xe3, 0x90, 0x43, 0x82, 0xd8, 0x01, 0x12, 0x23, 0x97, 0xe4, 0x90, 0x43, 0x0e, 0x01,
0xf2, 0x71, 0x09, 0x02, 0x5f, 0xf2, 0x07, 0x72, 0x08, 0x90, 0x63, 0x0e, 0x41, 0x7d, 0x74, 0x4f,
0x77, 0x4f, 0xf5, 0x70, 0xa8, 0xb1, 0x4c, 0xea, 0x36, 0xfd, 0xea, 0xbd, 0xaa, 0x57, 0xaf, 0x5e,
0xbd, 0x7a, 0xf5, 0xde, 0xab, 0x81, 0x46, 0xdf, 0xf5, 0x1e, 0x0f, 0xe9, 0xb5, 0x41, 0x18, 0xb0,
0x00, 0x2d, 0x25, 0xbf, 0xae, 0xc9, 0x8f, 0x4e, 0xc3, 0x0e, 0xfa, 0xfd, 0xc0, 0x97, 0xc0, 0x4e,
0x83, 0xda, 0x07, 0xa4, 0x8f, 0xe5, 0x97, 0xf9, 0x87, 0x06, 0xa0, 0xdb, 0x21, 0xc1, 0x8c, 0xdc,
0xf4, 0x5c, 0x4c, 0x2d, 0xf2, 0xad, 0x21, 0xa1, 0x0c, 0x7d, 0x11, 0xe6, 0xf7, 0x30, 0x25, 0x6d,
0x63, 0xdd, 0xd8, 0xa8, 0x6f, 0x5e, 0xb8, 0x96, 0xea, 0x56, 0x75, 0x77, 0x9f, 0xf6, 0x6e, 0x61,
0x4a, 0x2c, 0x81, 0x89, 0xd6, 0xa0, 0xe2, 0xec, 0x75, 0x7d, 0xdc, 0x27, 0xed, 0xc2, 0xba, 0xb1,
0x51, 0xb3, 0xca, 0xce, 0xde, 0x03, 0xdc, 0x27, 0xe8, 0x35, 0x58, 0xb4, 0x03, 0xcf, 0x23, 0x36,
0x73, 0x03, 0x5f, 0x22, 0x14, 0x05, 0xc2, 0xc2, 0x08, 0x2c, 0x10, 0x97, 0xa1, 0x84, 0x39, 0x0f,
0xed, 0x79, 0xd1, 0x2c, 0x3f, 0x4c, 0x0a, 0xad, 0xad, 0x30, 0x18, 0x3c, 0x2b, 0xee, 0xe2, 0x41,
0x8b, 0xc9, 0x41, 0xff, 0xc0, 0x80, 0x73, 0x37, 0x3d, 0x46, 0xc2, 0x33, 0x2a, 0x94, 0xdf, 0x2f,
0xc0, 0x9a, 0x5c, 0xb5, 0xdb, 0x31, 0xfa, 0x69, 0x72, 0xb9, 0x0a, 0x65, 0xa9, 0x55, 0x82, 0xcd,
0x86, 0xa5, 0xbe, 0xd0, 0x45, 0x00, 0x7a, 0x80, 0x43, 0x87, 0x76, 0xfd, 0x61, 0xbf, 0x5d, 0x5a,
0x37, 0x36, 0x4a, 0x56, 0x4d, 0x42, 0x1e, 0x0c, 0xfb, 0xc8, 0x82, 0x73, 0x76, 0xe0, 0x53, 0x97,
0x32, 0xe2, 0xdb, 0x47, 0x5d, 0x8f, 0x3c, 0x26, 0x5e, 0xbb, 0xbc, 0x6e, 0x6c, 0x2c, 0x6c, 0xbe,
0xa2, 0xe5, 0xfb, 0xf6, 0x08, 0xfb, 0x1e, 0x47, 0xb6, 0x5a, 0x76, 0x06, 0x62, 0x7e, 0xd7, 0x80,
0x15, 0xae, 0x30, 0x67, 0x42, 0x30, 0xe6, 0x9f, 0x1b, 0xb0, 0x7c, 0x17, 0xd3, 0xb3, 0xb1, 0x4a,
0x17, 0x01, 0x98, 0xdb, 0x27, 0x5d, 0xca, 0x70, 0x7f, 0x20, 0x56, 0x6a, 0xde, 0xaa, 0x71, 0xc8,
0x2e, 0x07, 0x98, 0xdf, 0x84, 0xc6, 0xad, 0x20, 0xf0, 0x2c, 0x42, 0x07, 0x81, 0x4f, 0x09, 0xba,
0x01, 0x65, 0xca, 0x30, 0x1b, 0x52, 0xc5, 0xe4, 0x79, 0x2d, 0x93, 0xbb, 0x02, 0xc5, 0x52, 0xa8,
0x5c, 0x5f, 0x1f, 0x63, 0x6f, 0x28, 0x79, 0xac, 0x5a, 0xf2, 0xc3, 0xfc, 0x04, 0x16, 0x76, 0x59,
0xe8, 0xfa, 0xbd, 0x9f, 0x62, 0xe7, 0xb5, 0xa8, 0xf3, 0x7f, 0x37, 0xe0, 0x85, 0x2d, 0x42, 0xed,
0xd0, 0xdd, 0x3b, 0x23, 0xdb, 0xc1, 0x84, 0xc6, 0x08, 0xb2, 0xbd, 0x25, 0x44, 0x5d, 0xb4, 0x52,
0xb0, 0xcc, 0x62, 0x94, 0xb2, 0x8b, 0xf1, 0xed, 0x12, 0x74, 0x74, 0x93, 0x9a, 0x45, 0x7c, 0x3f,
0x1f, 0xef, 0xd2, 0x82, 0x20, 0xca, 0xec, 0x31, 0x75, 0x2e, 0x8c, 0x46, 0xdb, 0x15, 0x80, 0x78,
0x33, 0x67, 0x67, 0x55, 0xd4, 0xcc, 0x6a, 0x13, 0x56, 0x1e, 0xbb, 0x21, 0x1b, 0x62, 0xaf, 0x6b,
0x1f, 0x60, 0xdf, 0x27, 0x9e, 0x90, 0x13, 0x37, 0x5f, 0xc5, 0x8d, 0x9a, 0xb5, 0xa4, 0x1a, 0x6f,
0xcb, 0x36, 0x2e, 0x2c, 0x8a, 0xde, 0x82, 0xd5, 0xc1, 0xc1, 0x11, 0x75, 0xed, 0x31, 0xa2, 0x92,
0x20, 0x5a, 0x8e, 0x5a, 0x53, 0x54, 0x57, 0xe1, 0x9c, 0x2d, 0x2c, 0xa0, 0xd3, 0xe5, 0x52, 0x93,
0x62, 0x2c, 0x0b, 0x31, 0xb6, 0x54, 0xc3, 0x47, 0x11, 0x9c, 0xb3, 0x15, 0x21, 0x0f, 0x99, 0x9d,
0x20, 0xa8, 0x08, 0x82, 0x25, 0xd5, 0xf8, 0x31, 0xb3, 0x47, 0x34, 0x69, 0xdb, 0x55, 0xcd, 0xda,
0xae, 0x36, 0x54, 0x84, 0x2d, 0x26, 0xb4, 0x5d, 0x13, 0x6c, 0x46, 0x9f, 0x68, 0x1b, 0x16, 0x29,
0xc3, 0x21, 0xeb, 0x0e, 0x02, 0xea, 0x72, 0xb9, 0xd0, 0x36, 0xac, 0x17, 0x37, 0xea, 0x9b, 0xeb,
0xda, 0x45, 0xfa, 0x90, 0x1c, 0x6d, 0x61, 0x86, 0x77, 0xb0, 0x1b, 0x5a, 0x0b, 0x82, 0x70, 0x27,
0xa2, 0xd3, 0x1b, 0xc8, 0xfa, 0x4c, 0x06, 0x52, 0xa7, 0xc5, 0x0d, 0xad, 0xed, 0xfa, 0x91, 0x01,
0x2b, 0xf7, 0x02, 0xec, 0x9c, 0x8d, 0x3d, 0xf5, 0x0a, 0x2c, 0x84, 0x64, 0xe0, 0xb9, 0x36, 0xe6,
0xeb, 0xb1, 0x47, 0x42, 0xb1, 0xab, 0x4a, 0x56, 0x53, 0x41, 0x1f, 0x08, 0xa0, 0xf9, 0xb9, 0x01,
0x6d, 0x8b, 0x78, 0x04, 0xd3, 0xb3, 0x61, 0x0b, 0xcc, 0xef, 0x1b, 0xf0, 0xe2, 0x1d, 0xc2, 0x12,
0xbb, 0x8a, 0x61, 0xe6, 0x52, 0xe6, 0xda, 0xa7, 0xe9, 0x57, 0x98, 0xdf, 0x33, 0xe0, 0x52, 0x2e,
0x5b, 0xb3, 0x18, 0x99, 0x77, 0xa0, 0xc4, 0x7f, 0xd1, 0x76, 0x41, 0xe8, 0xfc, 0xe5, 0x3c, 0x9d,
0xff, 0x3a, 0xb7, 0xdd, 0x42, 0xe9, 0x25, 0xbe, 0xf9, 0x5f, 0x06, 0xac, 0xee, 0x1e, 0x04, 0x87,
0x23, 0x96, 0x9e, 0x85, 0x80, 0xd2, 0x66, 0xb7, 0x98, 0x31, 0xbb, 0xe8, 0x4d, 0x98, 0x67, 0x47,
0x03, 0x22, 0x74, 0x6b, 0x61, 0xf3, 0xe2, 0x35, 0x8d, 0x3b, 0x7d, 0x8d, 0x33, 0xf9, 0xd1, 0xd1,
0x80, 0x58, 0x02, 0x15, 0xbd, 0x0e, 0xad, 0x8c, 0xc8, 0x23, 0xc3, 0xb5, 0x98, 0x96, 0x39, 0x35,
0x7f, 0x5c, 0x80, 0xb5, 0xb1, 0x29, 0xce, 0x22, 0x6c, 0xdd, 0xd8, 0x05, 0xed, 0xd8, 0x7c, 0xff,
0x24, 0x50, 0x5d, 0x87, 0x7b, 0xbc, 0xc5, 0x8d, 0xa2, 0xd5, 0x4c, 0xd8, 0x6f, 0x87, 0xa2, 0x37,
0x00, 0x8d, 0x99, 0x55, 0x69, 0xbd, 0xe7, 0xad, 0x73, 0x59, 0xbb, 0x2a, 0x6c, 0xb7, 0xd6, 0xb0,
0x4a, 0x11, 0xcc, 0x5b, 0xcb, 0x1a, 0xcb, 0x4a, 0xd1, 0x9b, 0xb0, 0xec, 0xfa, 0xf7, 0x49, 0x3f,
0x08, 0x8f, 0xba, 0x03, 0x12, 0xda, 0xc4, 0x67, 0xb8, 0x47, 0x68, 0xbb, 0x2c, 0x38, 0x5a, 0x8a,
0xda, 0x76, 0x46, 0x4d, 0xe6, 0x5f, 0x1b, 0xb0, 0x2a, 0x3d, 0xde, 0x1d, 0x1c, 0x32, 0xf7, 0x0c,
0x58, 0xa3, 0x41, 0xc4, 0x87, 0xc4, 0x93, 0xfe, 0x79, 0x33, 0x86, 0x8a, 0x5d, 0xf6, 0x43, 0x03,
0x96, 0xb9, 0x33, 0xfa, 0x3c, 0xf1, 0xfc, 0x57, 0x06, 0x2c, 0xdd, 0xc5, 0xf4, 0x79, 0x62, 0xf9,
0x27, 0xea, 0xa4, 0x8a, 0x79, 0x3e, 0xd5, 0x2b, 0xdb, 0x6b, 0xb0, 0x98, 0x66, 0x3a, 0xf2, 0x7e,
0x16, 0x52, 0x5c, 0x53, 0xcd, 0x91, 0x56, 0xd2, 0x1d, 0x69, 0x7f, 0x3b, 0x3a, 0xd2, 0x9e, 0xaf,
0x09, 0x9a, 0x7f, 0x67, 0xc0, 0xc5, 0x3b, 0x84, 0xc5, 0x5c, 0x9f, 0x89, 0xa3, 0x6f, 0x5a, 0xa5,
0xfa, 0x5c, 0x1e, 0xdc, 0x5a, 0xe6, 0x4f, 0xe5, 0x80, 0xfc, 0x6e, 0x01, 0x56, 0xf8, 0xe9, 0x71,
0x36, 0x94, 0x60, 0x9a, 0x3b, 0x8e, 0x46, 0x51, 0x4a, 0xda, 0x9d, 0x10, 0x1d, 0xbb, 0xe5, 0xa9,
0x8f, 0x5d, 0xf3, 0x47, 0x05, 0xe9, 0x2e, 0x24, 0xa5, 0x31, 0xcb, 0xb2, 0x68, 0x78, 0x2d, 0x68,
0x79, 0x35, 0xa1, 0x11, 0x43, 0xb6, 0xb7, 0xa2, 0x63, 0x34, 0x05, 0x3b, 0xb3, 0xa7, 0xe8, 0x67,
0x06, 0xac, 0x46, 0xb7, 0xca, 0x5d, 0xd2, 0xeb, 0x13, 0x9f, 0x3d, 0xbd, 0x0e, 0x65, 0x35, 0xa0,
0xa0, 0xd1, 0x80, 0x0b, 0x50, 0xa3, 0x72, 0x9c, 0xf8, 0xc2, 0x38, 0x02, 0x98, 0x7f, 0x6f, 0xc0,
0xda, 0x18, 0x3b, 0xb3, 0x2c, 0x62, 0x1b, 0x2a, 0xae, 0xef, 0x90, 0x27, 0x31, 0x37, 0xd1, 0x27,
0x6f, 0xd9, 0x1b, 0xba, 0x9e, 0x13, 0xb3, 0x11, 0x7d, 0xa2, 0xcb, 0xd0, 0x20, 0x3e, 0xde, 0xf3,
0x48, 0x57, 0xe0, 0x0a, 0x45, 0xae, 0x5a, 0x75, 0x09, 0xdb, 0xe6, 0x20, 0x4e, 0xbc, 0xef, 0x12,
0x41, 0x5c, 0x92, 0xc4, 0xea, 0xd3, 0xfc, 0x2d, 0x03, 0x96, 0xb8, 0x16, 0x2a, 0xee, 0xe9, 0xb3,
0x95, 0xe6, 0x3a, 0xd4, 0x13, 0x6a, 0xa6, 0x26, 0x92, 0x04, 0x99, 0x8f, 0x60, 0x39, 0xcd, 0xce,
0x2c, 0xd2, 0x7c, 0x11, 0x20, 0x5e, 0x2b, 0xb9, 0x1b, 0x8a, 0x56, 0x02, 0x62, 0x7e, 0x56, 0x88,
0x62, 0xc7, 0x42, 0x4c, 0xa7, 0x1c, 0xda, 0x12, 0x4b, 0x92, 0xb4, 0xe7, 0x35, 0x01, 0x11, 0xcd,
0x5b, 0xd0, 0x20, 0x4f, 0x58, 0x88, 0xbb, 0x03, 0x1c, 0xe2, 0xbe, 0xdc, 0x56, 0x53, 0x99, 0xde,
0xba, 0x20, 0xdb, 0x11, 0x54, 0x7c, 0x10, 0xa1, 0x22, 0x72, 0x90, 0xb2, 0x1c, 0x44, 0x40, 0xc4,
0x81, 0xf1, 0x4f, 0xdc, 0xd9, 0x53, 0xda, 0x7c, 0xd6, 0x05, 0x92, 0x9e, 0x4a, 0x29, 0x3b, 0x95,
0x3f, 0x33, 0xa0, 0x25, 0xa6, 0x20, 0xe7, 0x33, 0xe0, 0xdd, 0x66, 0x68, 0x8c, 0x0c, 0xcd, 0x84,
0xbd, 0xf7, 0x73, 0x50, 0x56, 0x72, 0x2f, 0x4e, 0x2b, 0x77, 0x45, 0x70, 0xcc, 0x34, 0xcc, 0x3f,
0x36, 0x60, 0x25, 0x23, 0xf2, 0x59, 0x14, 0xfe, 0x23, 0x40, 0x72, 0x86, 0xce, 0x68, 0xda, 0xd1,
0x39, 0xfd, 0x8a, 0xf6, 0x50, 0xca, 0x0a, 0xc9, 0x3a, 0xe7, 0x66, 0x20, 0xd4, 0xfc, 0x57, 0x03,
0x2e, 0xdc, 0x21, 0x4c, 0xa0, 0xde, 0xe2, 0x46, 0x67, 0x27, 0x0c, 0x7a, 0x21, 0xa1, 0xf4, 0xf9,
0xd5, 0x8f, 0xdf, 0x95, 0x8e, 0x9d, 0x6e, 0x4a, 0xb3, 0xc8, 0xff, 0x32, 0x34, 0xc4, 0x18, 0xc4,
0xe9, 0x86, 0xc1, 0x21, 0x55, 0x7a, 0x54, 0x57, 0x30, 0x2b, 0x38, 0x14, 0x0a, 0xc1, 0x02, 0x86,
0x3d, 0x89, 0xa0, 0x4e, 0x14, 0x01, 0xe1, 0xcd, 0x62, 0x0f, 0x46, 0x8c, 0xf1, 0xce, 0xc9, 0xf3,
0x2b, 0xe3, 0x3f, 0x35, 0x60, 0x25, 0x33, 0x95, 0x59, 0x64, 0xfb, 0x25, 0xe9, 0x76, 0xca, 0xc9,
0x2c, 0x6c, 0x5e, 0xd2, 0xd2, 0x24, 0x06, 0x93, 0xd8, 0xe8, 0x12, 0xd4, 0xf7, 0xb1, 0xeb, 0x75,
0x43, 0x82, 0x69, 0xe0, 0xab, 0x89, 0x02, 0x07, 0x59, 0x02, 0x62, 0xfe, 0xa3, 0x21, 0x13, 0x74,
0xcf, 0xb9, 0xc5, 0xfb, 0x93, 0x02, 0x34, 0xb7, 0x7d, 0x4a, 0x42, 0x76, 0xf6, 0xaf, 0x26, 0xe8,
0x7d, 0xa8, 0x8b, 0x89, 0xd1, 0xae, 0x83, 0x19, 0x56, 0xa7, 0xd9, 0x8b, 0xda, 0x68, 0xfe, 0x07,
0x1c, 0x6f, 0x0b, 0x33, 0x6c, 0x49, 0xe9, 0x50, 0xfe, 0x1b, 0x9d, 0x87, 0xda, 0x01, 0xa6, 0x07,
0xdd, 0x47, 0xe4, 0x48, 0xfa, 0x8b, 0x4d, 0xab, 0xca, 0x01, 0x1f, 0x92, 0x23, 0x8a, 0x5e, 0x80,
0xaa, 0x3f, 0xec, 0xcb, 0x0d, 0x56, 0x59, 0x37, 0x36, 0x9a, 0x56, 0xc5, 0x1f, 0xf6, 0xc5, 0xf6,
0xfa, 0xe7, 0x02, 0x2c, 0xdc, 0x1f, 0xf2, 0x8b, 0x90, 0xc8, 0x45, 0x0c, 0x3d, 0xf6, 0x74, 0xca,
0x78, 0x05, 0x8a, 0xd2, 0xa5, 0xe0, 0x14, 0x6d, 0x2d, 0xe3, 0xdb, 0x5b, 0xd4, 0xe2, 0x48, 0x22,
0x0e, 0x3f, 0xb4, 0x6d, 0xe5, 0x9d, 0x15, 0x05, 0xb3, 0x35, 0x0e, 0x91, 0xbe, 0xd9, 0x79, 0xa8,
0x91, 0x30, 0x8c, 0x7d, 0x37, 0x31, 0x15, 0x12, 0x86, 0xb2, 0xd1, 0x84, 0x06, 0xb6, 0x1f, 0xf9,
0xc1, 0xa1, 0x47, 0x9c, 0x1e, 0x71, 0xc4, 0xb2, 0x57, 0xad, 0x14, 0x4c, 0x2a, 0x06, 0x5f, 0xf8,
0xae, 0xed, 0x33, 0x71, 0xaa, 0x17, 0xb9, 0x62, 0x70, 0xc8, 0x6d, 0x9f, 0xf1, 0x66, 0x87, 0x78,
0x84, 0x11, 0xd1, 0x5c, 0x91, 0xcd, 0x12, 0xa2, 0x9a, 0x87, 0x83, 0x98, 0xba, 0x2a, 0x9b, 0x25,
0x84, 0x37, 0x5f, 0x80, 0xda, 0x28, 0xd9, 0x50, 0x1b, 0x45, 0x1b, 0x05, 0xc0, 0xfc, 0x89, 0x01,
0xcd, 0x2d, 0xd1, 0xd5, 0x73, 0xa0, 0x74, 0x08, 0xe6, 0xc9, 0x93, 0x41, 0xa8, 0xb6, 0x8e, 0xf8,
0x3d, 0x51, 0x8f, 0xcc, 0xc7, 0xd0, 0xda, 0xf1, 0xb0, 0x4d, 0x0e, 0x02, 0xcf, 0x21, 0xa1, 0x38,
0xdb, 0x51, 0x0b, 0x8a, 0x0c, 0xf7, 0x94, 0xf3, 0xc0, 0x7f, 0xa2, 0x2f, 0xab, 0xab, 0x9f, 0x34,
0x4b, 0x2f, 0x6b, 0x4f, 0xd9, 0x44, 0x37, 0x89, 0xc0, 0xeb, 0x2a, 0x94, 0x45, 0x02, 0x50, 0xba,
0x15, 0x0d, 0x4b, 0x7d, 0x99, 0x0f, 0x53, 0xe3, 0xde, 0x09, 0x83, 0xe1, 0x00, 0x6d, 0x43, 0x63,
0x30, 0x82, 0x71, 0x5d, 0xcd, 0x3f, 0xd3, 0xb3, 0x4c, 0x5b, 0x29, 0x52, 0xf3, 0xbf, 0x8b, 0xd0,
0xdc, 0x25, 0x38, 0xb4, 0x0f, 0x9e, 0x8b, 0x20, 0x53, 0x0b, 0x8a, 0x0e, 0xf5, 0xd4, 0xaa, 0xf1,
0x9f, 0xe8, 0x2a, 0x9c, 0x4b, 0x4c, 0xa8, 0xdb, 0xe3, 0x02, 0x12, 0x7a, 0xdf, 0xb0, 0x5a, 0x83,
0xac, 0xe0, 0xde, 0x81, 0xaa, 0x43, 0xbd, 0xae, 0x58, 0xa2, 0x8a, 0x58, 0x22, 0xfd, 0xfc, 0xb6,
0xa8, 0x27, 0x96, 0xa6, 0xe2, 0xc8, 0x1f, 0xe8, 0x25, 0x68, 0x06, 0x43, 0x36, 0x18, 0xb2, 0xae,
0xb4, 0x3b, 0xed, 0xaa, 0x60, 0xaf, 0x21, 0x81, 0xc2, 0x2c, 0x51, 0xf4, 0x01, 0x34, 0xa9, 0x10,
0x65, 0xe4, 0x98, 0xd7, 0xa6, 0x75, 0x10, 0x1b, 0x92, 0x4e, 0x79, 0xe6, 0xaf, 0x43, 0x8b, 0x85,
0xf8, 0x31, 0xf1, 0x12, 0xa9, 0x3d, 0x10, 0xbb, 0x6d, 0x51, 0xc2, 0x47, 0x69, 0xbd, 0xeb, 0xb0,
0xd4, 0x1b, 0xe2, 0x10, 0xfb, 0x8c, 0x90, 0x04, 0x76, 0x5d, 0x60, 0xa3, 0xb8, 0x29, 0x26, 0x30,
0x3f, 0x84, 0xf9, 0xbb, 0x2e, 0x13, 0x82, 0xe4, 0x36, 0xcb, 0x10, 0xd7, 0x20, 0x61, 0x99, 0x5e,
0x80, 0x6a, 0x18, 0x1c, 0x4a, 0x1b, 0x5c, 0x10, 0x2a, 0x58, 0x09, 0x83, 0x43, 0x61, 0x60, 0x45,
0x41, 0x44, 0x10, 0x2a, 0xdd, 0x2c, 0x58, 0xea, 0xcb, 0xfc, 0x4b, 0x63, 0xa4, 0x3c, 0xdc, 0x7c,
0xd2, 0xa7, 0xb3, 0x9f, 0xef, 0x43, 0x25, 0x94, 0xf4, 0x13, 0x53, 0xb9, 0xc9, 0x91, 0xc4, 0x19,
0x10, 0x51, 0x4d, 0x9f, 0x27, 0xfa, 0x55, 0x03, 0x1a, 0x1f, 0x78, 0x43, 0xfa, 0x2c, 0x94, 0x5d,
0x97, 0xbd, 0x28, 0xea, 0x33, 0x27, 0xbf, 0x5d, 0x80, 0xa6, 0x62, 0x63, 0x16, 0x27, 0x28, 0x97,
0x95, 0x5d, 0xa8, 0xf3, 0x21, 0xbb, 0x94, 0xf4, 0xa2, 0x98, 0x4e, 0x7d, 0x73, 0x53, 0x6b, 0x1e,
0x52, 0x6c, 0x88, 0x6c, 0xf9, 0xae, 0x20, 0xfa, 0x45, 0x9f, 0x85, 0x47, 0x16, 0xd8, 0x31, 0xa0,
0xf3, 0x10, 0x16, 0x33, 0xcd, 0x5c, 0x89, 0x1e, 0x91, 0xa3, 0xc8, 0xfe, 0x3d, 0x22, 0x47, 0xe8,
0xad, 0x64, 0x4d, 0x43, 0xde, 0x29, 0x7e, 0x2f, 0xf0, 0x7b, 0x37, 0xc3, 0x10, 0x1f, 0xa9, 0x9a,
0x87, 0x77, 0x0b, 0x5f, 0x36, 0xcc, 0x7f, 0x28, 0x40, 0xe3, 0x6b, 0x43, 0x12, 0x1e, 0x9d, 0xa6,
0x1d, 0x8a, 0x4e, 0x85, 0xf9, 0xc4, 0xa9, 0x30, 0xb6, 0xf5, 0x4b, 0x9a, 0xad, 0xaf, 0x31, 0x60,
0x65, 0xad, 0x01, 0xd3, 0xed, 0xed, 0xca, 0x89, 0xf6, 0x76, 0x35, 0x77, 0x6f, 0xff, 0x85, 0x11,
0x8b, 0x70, 0xa6, 0xdd, 0x98, 0x72, 0xc7, 0x0a, 0x27, 0x76, 0xc7, 0xa6, 0xde, 0x8d, 0x3f, 0x34,
0xa0, 0xf6, 0x75, 0x62, 0xb3, 0x20, 0xe4, 0xf6, 0x47, 0x43, 0x66, 0x4c, 0xe1, 0x1a, 0x17, 0xb2,
0xae, 0xf1, 0x0d, 0xa8, 0xba, 0x4e, 0x17, 0x73, 0xfd, 0x12, 0xe3, 0x4e, 0x72, 0xc9, 0x2a, 0xae,
0x23, 0x14, 0x71, 0xfa, 0x24, 0xc0, 0xef, 0x19, 0xd0, 0x90, 0x3c, 0x53, 0x49, 0xf9, 0x5e, 0x62,
0x38, 0x43, 0xa7, 0xf4, 0xea, 0x23, 0x9e, 0xe8, 0xdd, 0xb9, 0xd1, 0xb0, 0x37, 0x01, 0xb8, 0x90,
0x15, 0xb9, 0xdc, 0x33, 0xeb, 0x5a, 0x6e, 0x25, 0xb9, 0x10, 0xf8, 0xdd, 0x39, 0xab, 0xc6, 0xa9,
0x44, 0x17, 0xb7, 0x2a, 0x50, 0x12, 0xd4, 0xe6, 0xff, 0x19, 0xb0, 0x74, 0x1b, 0x7b, 0xf6, 0x96,
0x4b, 0x19, 0xf6, 0xed, 0x19, 0x9c, 0xb0, 0x77, 0xa1, 0x12, 0x0c, 0xba, 0x1e, 0xd9, 0x67, 0x8a,
0xa5, 0xcb, 0x13, 0x66, 0x24, 0xc5, 0x60, 0x95, 0x83, 0xc1, 0x3d, 0xb2, 0xcf, 0xd0, 0x57, 0xa0,
0x1a, 0x0c, 0xba, 0xa1, 0xdb, 0x3b, 0x60, 0x4a, 0xfa, 0x53, 0x10, 0x57, 0x82, 0x81, 0xc5, 0x29,
0x12, 0xb1, 0x95, 0xf9, 0x13, 0xc6, 0x56, 0xcc, 0x7f, 0x1b, 0x9b, 0xfe, 0x0c, 0x7b, 0xe0, 0x5d,
0xa8, 0xba, 0x3e, 0xeb, 0x3a, 0x2e, 0x8d, 0x44, 0x70, 0x51, 0xaf, 0x43, 0x3e, 0x13, 0x33, 0x10,
0x6b, 0xea, 0x33, 0x3e, 0x36, 0xfa, 0x2a, 0xc0, 0xbe, 0x17, 0x60, 0x45, 0x2d, 0x65, 0x70, 0x49,
0xbf, 0x7d, 0x38, 0x5a, 0x44, 0x5f, 0x13, 0x44, 0xbc, 0x87, 0xd1, 0x92, 0xfe, 0x8b, 0x01, 0x2b,
0x3b, 0x24, 0x94, 0x15, 0x2f, 0x4c, 0x85, 0x41, 0xb7, 0xfd, 0xfd, 0x20, 0x1d, 0x89, 0x36, 0x32,
0x91, 0xe8, 0x9f, 0x4e, 0xf4, 0x35, 0x75, 0x73, 0x92, 0xf9, 0x90, 0xe8, 0xe6, 0x14, 0x65, 0x7d,
0xe4, 0xcd, 0x73, 0x21, 0x67, 0x99, 0x14, 0xbf, 0xc9, 0x0b, 0xb8, 0xf9, 0x3b, 0xb2, 0x50, 0x43,
0x3b, 0xa9, 0xa7, 0x57, 0xd8, 0x55, 0x50, 0x96, 0x3e, 0x63, 0xf7, 0x5f, 0x85, 0x8c, 0xed, 0xc8,
0x31, 0x44, 0x3f, 0x30, 0x60, 0x3d, 0x9f, 0xab, 0x59, 0x8e, 0xe8, 0xaf, 0x42, 0xc9, 0xf5, 0xf7,
0x83, 0x28, 0xec, 0x76, 0x45, 0xef, 0xa2, 0x6b, 0xc7, 0x95, 0x84, 0xe6, 0xdf, 0x14, 0xa0, 0x25,
0x8c, 0xfa, 0x29, 0x2c, 0x7f, 0x9f, 0xf4, 0xbb, 0xd4, 0xfd, 0x94, 0x44, 0xcb, 0xdf, 0x27, 0xfd,
0x5d, 0xf7, 0x53, 0x92, 0xd2, 0x8c, 0x52, 0x5a, 0x33, 0x26, 0x47, 0x95, 0x93, 0x61, 0xd5, 0x4a,
0x3a, 0xac, 0xba, 0x0a, 0x65, 0x3f, 0x70, 0xc8, 0xf6, 0x96, 0xba, 0x76, 0xaa, 0xaf, 0x91, 0xaa,
0xd5, 0x4e, 0xa8, 0x6a, 0x9f, 0x1b, 0xd0, 0xb9, 0x43, 0x58, 0x56, 0x76, 0xa7, 0xa7, 0x65, 0xdf,
0x33, 0xe0, 0xbc, 0x96, 0xa1, 0x59, 0x14, 0xec, 0xbd, 0xb4, 0x82, 0xe9, 0xef, 0x80, 0x63, 0x43,
0x2a, 0xdd, 0x7a, 0x13, 0x1a, 0x5b, 0xc3, 0x7e, 0x3f, 0x76, 0xb9, 0x2e, 0x43, 0x23, 0x94, 0x3f,
0xe5, 0x15, 0x49, 0x9e, 0xbf, 0x75, 0x05, 0xe3, 0x17, 0x21, 0xf3, 0x2a, 0x34, 0x15, 0x89, 0xe2,
0xba, 0x03, 0xd5, 0x50, 0xfd, 0x56, 0xf8, 0xf1, 0xb7, 0xb9, 0x02, 0x4b, 0x16, 0xe9, 0x71, 0xd5,
0x0e, 0xef, 0xb9, 0xfe, 0x23, 0x35, 0x8c, 0xf9, 0x1d, 0x03, 0x96, 0xd3, 0x70, 0xd5, 0xd7, 0xdb,
0x50, 0xc1, 0x8e, 0x13, 0x12, 0x4a, 0x27, 0x2e, 0xcb, 0x4d, 0x89, 0x63, 0x45, 0xc8, 0x09, 0xc9,
0x15, 0xa6, 0x96, 0x9c, 0xd9, 0x85, 0x73, 0x77, 0x08, 0xbb, 0x4f, 0x58, 0x38, 0x53, 0x06, 0xbf,
0xcd, 0x2f, 0x2f, 0x82, 0x58, 0xa9, 0x45, 0xf4, 0x69, 0x7e, 0x66, 0x00, 0x4a, 0x8e, 0x30, 0xcb,
0x32, 0x27, 0xa5, 0x5c, 0x48, 0x4b, 0x59, 0xd6, 0x42, 0xf5, 0x07, 0x81, 0x4f, 0x7c, 0x96, 0x74,
0xb7, 0x9a, 0x31, 0x34, 0x2a, 0x2b, 0x41, 0xf7, 0x02, 0xec, 0xdc, 0xc2, 0xde, 0x6c, 0xee, 0xc1,
0x45, 0x00, 0x1a, 0xda, 0x5d, 0xb5, 0x5b, 0x0b, 0xca, 0xfa, 0x84, 0xf6, 0x03, 0xb9, 0x61, 0x2f,
0x41, 0xdd, 0xa1, 0x4c, 0x35, 0x47, 0x09, 0x65, 0x70, 0x28, 0x93, 0xed, 0xa2, 0xd6, 0x95, 0x12,
0xec, 0x11, 0xa7, 0x9b, 0xc8, 0xc7, 0xcd, 0x0b, 0xb4, 0x96, 0x6c, 0xd8, 0x8d, 0xe1, 0x9a, 0xcd,
0x55, 0xd2, 0x6e, 0xae, 0x87, 0xb0, 0x76, 0x1f, 0xfb, 0x43, 0xec, 0xdd, 0x0e, 0xfa, 0x03, 0x9c,
0xaa, 0x93, 0xcc, 0x9a, 0x43, 0x43, 0x63, 0x0e, 0x5f, 0x94, 0x85, 0x74, 0xd2, 0x05, 0x17, 0x73,
0x9a, 0xb7, 0x12, 0x10, 0x93, 0x42, 0x7b, 0xbc, 0xfb, 0x59, 0x16, 0x54, 0x30, 0x15, 0x75, 0x95,
0xb4, 0xd1, 0x23, 0x98, 0xf9, 0x3e, 0xbc, 0x20, 0x8a, 0x1a, 0x23, 0x50, 0x2a, 0x05, 0x90, 0xed,
0xc0, 0xd0, 0x74, 0xf0, 0xeb, 0x05, 0x61, 0x02, 0xc7, 0x7a, 0x98, 0x85, 0xf1, 0x77, 0xd3, 0x91,
0xf7, 0x97, 0x73, 0x0a, 0x77, 0xd3, 0x23, 0xaa, 0xf0, 0xfb, 0x06, 0x2c, 0x92, 0x27, 0xc4, 0x1e,
0x32, 0xd7, 0xef, 0xed, 0x78, 0xd8, 0x7f, 0x10, 0xa8, 0x83, 0x27, 0x0b, 0x46, 0x2f, 0x43, 0x93,
0x4b, 0x3f, 0x18, 0x32, 0x85, 0x27, 0x4f, 0xa0, 0x34, 0x90, 0xf7, 0xc7, 0xe7, 0xeb, 0x11, 0x46,
0x1c, 0x85, 0x27, 0x8f, 0xa3, 0x2c, 0x78, 0x4c, 0x94, 0x1c, 0x4c, 0x4f, 0x22, 0xca, 0xff, 0x30,
0x32, 0xa2, 0x54, 0x3d, 0x9c, 0x96, 0x28, 0xef, 0x02, 0xf4, 0x49, 0xd8, 0x23, 0xdb, 0xc2, 0xf8,
0xcb, 0x1b, 0xfe, 0x86, 0xd6, 0xf8, 0x8f, 0x3a, 0xb8, 0x1f, 0x11, 0x58, 0x09, 0x5a, 0xf3, 0x0e,
0x2c, 0x69, 0x50, 0xb8, 0x5d, 0xa3, 0xc1, 0x30, 0xb4, 0x49, 0x14, 0x24, 0x8a, 0x3e, 0xf9, 0x39,
0xc8, 0x70, 0xd8, 0x23, 0x4c, 0x29, 0xad, 0xfa, 0x32, 0xdf, 0x16, 0xc9, 0x2a, 0x11, 0x50, 0x48,
0x69, 0x6a, 0x3a, 0xf1, 0x6e, 0x8c, 0x25, 0xde, 0xf7, 0x45, 0x66, 0x28, 0x49, 0x37, 0x63, 0xd1,
0xc4, 0x3e, 0xef, 0x8a, 0x38, 0xea, 0xd1, 0x46, 0xf4, 0x69, 0xfe, 0xaf, 0x01, 0xcd, 0xed, 0xfe,
0x20, 0x18, 0x25, 0x45, 0xa6, 0xbe, 0x72, 0x8e, 0x07, 0x95, 0x0b, 0xba, 0xa0, 0xf2, 0x4b, 0xd0,
0x4c, 0x97, 0xfc, 0xcb, 0xf8, 0x4f, 0xc3, 0x4e, 0x96, 0xfa, 0x9f, 0x87, 0x5a, 0x18, 0x1c, 0x76,
0xb9, 0x29, 0x75, 0x54, 0x79, 0x46, 0x35, 0x0c, 0x0e, 0xb9, 0x81, 0x75, 0xd0, 0x32, 0x94, 0xf6,
0x5d, 0x2f, 0xae, 0x2c, 0x92, 0x1f, 0xe8, 0x3d, 0x7e, 0x21, 0x93, 0xe9, 0xdb, 0xf2, 0xb4, 0xf7,
0xa2, 0x88, 0xc2, 0xfc, 0x04, 0x16, 0xa2, 0x59, 0xcf, 0xf8, 0x5a, 0x85, 0x61, 0xfa, 0x28, 0xaa,
0x9c, 0x90, 0x1f, 0xe6, 0x55, 0x99, 0xd5, 0x13, 0xfd, 0xa7, 0x16, 0x1d, 0xc1, 0x3c, 0xc7, 0x50,
0x7b, 0x49, 0xfc, 0xe6, 0x0b, 0xb0, 0x9a, 0xc5, 0x9e, 0x85, 0xa5, 0xb7, 0xd3, 0xfb, 0x47, 0xff,
0x20, 0x21, 0x39, 0x9a, 0xda, 0x3b, 0x6a, 0x05, 0xec, 0x60, 0xe8, 0x33, 0x65, 0x80, 0xf8, 0x0a,
0xdc, 0xe6, 0xdf, 0x68, 0x0d, 0x2a, 0xae, 0xd3, 0xf5, 0xf8, 0xdd, 0x4d, 0x9e, 0x49, 0x65, 0xd7,
0xb9, 0xc7, 0xef, 0x75, 0xef, 0x44, 0x9e, 0xd6, 0xd4, 0xe5, 0x16, 0xca, 0xcb, 0xfa, 0xbe, 0xf4,
0x03, 0x2c, 0x59, 0x06, 0xf9, 0x8c, 0x8b, 0x6a, 0x36, 0xa0, 0x75, 0xe8, 0xb2, 0x83, 0xae, 0x78,
0xda, 0x21, 0x0e, 0x61, 0x99, 0x57, 0xae, 0x5a, 0x0b, 0x1c, 0xbe, 0xcb, 0xc1, 0xfc, 0x20, 0xa6,
0xe6, 0x6f, 0x18, 0xb0, 0x94, 0x62, 0x6b, 0x96, 0xa5, 0xf8, 0x0a, 0xf7, 0x4f, 0x64, 0x47, 0xca,
0x13, 0x5d, 0xd7, 0x1a, 0x23, 0x35, 0x9a, 0x30, 0x42, 0x31, 0x85, 0xf9, 0x9f, 0x06, 0xd4, 0x13,
0x2d, 0xfc, 0x7a, 0xa3, 0xda, 0x46, 0xd7, 0x9b, 0x18, 0x30, 0x95, 0x18, 0x5e, 0x82, 0xd1, 0xd6,
0x4c, 0x94, 0x87, 0x27, 0xea, 0xda, 0x1c, 0x8a, 0xee, 0xc2, 0x82, 0x14, 0x53, 0xcc, 0xba, 0x36,
0xea, 0x10, 0x57, 0xec, 0xe1, 0xd0, 0x51, 0x5c, 0x5a, 0x4d, 0x9a, 0xf8, 0x92, 0x49, 0xc6, 0xc0,
0x21, 0x62, 0xa4, 0x92, 0xb4, 0x96, 0xc2, 0xff, 0x71, 0x28, 0xbf, 0x86, 0x34, 0x92, 0xa4, 0xdc,
0x95, 0xf3, 0x08, 0x76, 0x48, 0x18, 0xcf, 0x2d, 0xfe, 0xe6, 0xbe, 0x93, 0xfc, 0xdd, 0xe5, 0xae,
0xad, 0x32, 0x32, 0x20, 0x41, 0xdc, 0xeb, 0x45, 0xaf, 0xc2, 0xa2, 0xd3, 0x4f, 0xbd, 0x2b, 0x8a,
0x9c, 0x3d, 0xa7, 0x9f, 0x78, 0x50, 0x94, 0x62, 0x68, 0x3e, 0xcd, 0xd0, 0xff, 0x18, 0xf1, 0x6b,
0xcb, 0x90, 0x38, 0xc4, 0x67, 0x2e, 0xf6, 0x9e, 0x5e, 0x27, 0x3b, 0x50, 0x1d, 0x52, 0x12, 0x26,
0x6c, 0x62, 0xfc, 0xcd, 0xdb, 0x06, 0x98, 0xd2, 0xc3, 0x20, 0x74, 0x14, 0x97, 0xf1, 0xf7, 0x84,
0x22, 0x41, 0xf9, 0x92, 0x4f, 0x5f, 0x24, 0xf8, 0x36, 0xac, 0xf5, 0x03, 0xc7, 0xdd, 0x77, 0x75,
0xb5, 0x85, 0x9c, 0x6c, 0x25, 0x6a, 0x4e, 0xd1, 0x99, 0x3f, 0x28, 0xc0, 0xda, 0xc7, 0x03, 0xe7,
0x67, 0x30, 0xe7, 0x75, 0xa8, 0x07, 0x9e, 0xb3, 0x93, 0x9e, 0x76, 0x12, 0xc4, 0x31, 0x7c, 0x72,
0x18, 0x63, 0xc8, 0x50, 0x73, 0x12, 0x34, 0xb1, 0x80, 0xf2, 0xa9, 0x64, 0x53, 0x9e, 0x24, 0x9b,
0x1e, 0xac, 0xc9, 0xac, 0xed, 0x33, 0x16, 0x8d, 0xf9, 0x2b, 0xb0, 0xc2, 0x0d, 0x29, 0x1f, 0xe6,
0x63, 0x4a, 0xc2, 0x19, 0x2d, 0xce, 0x05, 0xa8, 0x45, 0x3d, 0x47, 0xb5, 0xad, 0x23, 0x80, 0x79,
0x17, 0x96, 0x33, 0x63, 0x3d, 0xe5, 0x8c, 0xae, 0x5c, 0x86, 0x6a, 0x54, 0xab, 0x8b, 0x2a, 0x50,
0xbc, 0xe9, 0x79, 0xad, 0x39, 0xd4, 0x80, 0xea, 0xb6, 0x2a, 0x48, 0x6d, 0x19, 0x57, 0x7e, 0x01,
0x16, 0x33, 0x39, 0x5d, 0x54, 0x85, 0xf9, 0x07, 0x81, 0x4f, 0x5a, 0x73, 0xa8, 0x05, 0x8d, 0x5b,
0xae, 0x8f, 0xc3, 0x23, 0x19, 0xf1, 0x6c, 0x39, 0x68, 0x11, 0xea, 0x22, 0xf2, 0xa7, 0x00, 0x64,
0xf3, 0xc7, 0x2f, 0x43, 0xf3, 0xbe, 0x60, 0x64, 0x97, 0x84, 0x8f, 0x5d, 0x9b, 0xa0, 0x2e, 0xb4,
0xb2, 0x0f, 0xa2, 0xd1, 0x17, 0xf4, 0xde, 0x9d, 0xfe, 0xdd, 0x74, 0x67, 0x92, 0x0c, 0xcd, 0x39,
0xf4, 0x09, 0x2c, 0xa4, 0x9f, 0x15, 0x23, 0x7d, 0x68, 0x4a, 0xfb, 0xf6, 0xf8, 0xb8, 0xce, 0xbb,
0xd0, 0x4c, 0xbd, 0x12, 0x46, 0xaf, 0x6b, 0xfb, 0xd6, 0xbd, 0x24, 0xee, 0xe8, 0x6d, 0x6f, 0xf2,
0x25, 0xaf, 0xe4, 0x3e, 0xfd, 0x94, 0x2f, 0x87, 0x7b, 0xed, 0x7b, 0xbf, 0xe3, 0xb8, 0xc7, 0x70,
0x6e, 0xec, 0xc9, 0x1d, 0x7a, 0x23, 0xe7, 0x34, 0xd3, 0x3f, 0xcd, 0x3b, 0x6e, 0x88, 0x43, 0x40,
0xe3, 0xaf, 0x61, 0xd1, 0x35, 0xfd, 0x0a, 0xe4, 0xbd, 0x05, 0xee, 0x5c, 0x9f, 0x1a, 0x3f, 0x16,
0xdc, 0xaf, 0x19, 0xb0, 0x96, 0xf3, 0x4e, 0x0e, 0xdd, 0xd0, 0x76, 0x37, 0xf9, 0xb1, 0x5f, 0xe7,
0xad, 0x93, 0x11, 0xc5, 0x8c, 0xf8, 0xb0, 0x98, 0x79, 0x3a, 0x86, 0xae, 0xe6, 0xd6, 0xc9, 0x8f,
0xbf, 0xa1, 0xeb, 0x7c, 0x61, 0x3a, 0xe4, 0x78, 0xbc, 0x87, 0xb0, 0x98, 0x79, 0x6f, 0x95, 0x33,
0x9e, 0xfe, 0x55, 0xd6, 0x71, 0x0b, 0xfa, 0x4d, 0x68, 0xa6, 0x1e, 0x46, 0xe5, 0x68, 0xbc, 0xee,
0xf1, 0xd4, 0x71, 0x5d, 0x3f, 0x84, 0x46, 0xf2, 0xfd, 0x12, 0xda, 0xc8, 0xdb, 0x4b, 0x63, 0x1d,
0x9f, 0x64, 0x2b, 0x8d, 0xde, 0x1d, 0x4c, 0xd8, 0x4a, 0x63, 0x4f, 0x35, 0xa6, 0xdf, 0x4a, 0x89,
0xfe, 0x27, 0x6e, 0xa5, 0x13, 0x0f, 0xf1, 0x1d, 0x79, 0xa7, 0xd0, 0xbc, 0x6b, 0x41, 0x9b, 0x79,
0xba, 0x99, 0xff, 0x82, 0xa7, 0x73, 0xe3, 0x44, 0x34, 0xb1, 0x14, 0x1f, 0xc1, 0x42, 0xfa, 0xf5,
0x46, 0x8e, 0x14, 0xb5, 0x0f, 0x5e, 0x3a, 0x57, 0xa7, 0xc2, 0x8d, 0x07, 0xfb, 0x18, 0xea, 0x89,
0xff, 0x38, 0x41, 0xaf, 0x4d, 0xd0, 0xe3, 0xe4, 0x1f, 0x7e, 0x1c, 0x27, 0xc9, 0xaf, 0x41, 0x2d,
0xfe, 0x6b, 0x12, 0xf4, 0x4a, 0xae, 0xfe, 0x9e, 0xa4, 0xcb, 0x5d, 0x80, 0xd1, 0xff, 0x8e, 0xa0,
0x57, 0xb5, 0x7d, 0x8e, 0xfd, 0x31, 0xc9, 0x71, 0x9d, 0xc6, 0xd3, 0x97, 0x45, 0x71, 0x93, 0xa6,
0x9f, 0xac, 0xe2, 0x3c, 0xae, 0xdb, 0x03, 0x68, 0xa6, 0x6a, 0xaf, 0xf3, 0xb6, 0xb0, 0xa6, 0x24,
0xbe, 0x73, 0x65, 0x1a, 0xd4, 0x78, 0xfd, 0x0e, 0xa0, 0x99, 0xaa, 0x84, 0xcd, 0x19, 0x49, 0x57,
0xf8, 0x9b, 0x33, 0x92, 0xb6, 0xb0, 0xd6, 0x9c, 0x43, 0xdf, 0x4e, 0x14, 0xdd, 0xa6, 0x0a, 0x9b,
0xd1, 0x9b, 0x13, 0xfb, 0xd1, 0xd5, 0x75, 0x77, 0x36, 0x4f, 0x42, 0x12, 0xb3, 0xa0, 0xb4, 0x4a,
0x8a, 0x34, 0x5f, 0xab, 0x4e, 0xb2, 0x52, 0xbb, 0x50, 0x96, 0xb5, 0xad, 0xc8, 0xcc, 0xa9, 0x62,
0x4f, 0x14, 0xbe, 0x76, 0x5e, 0xd2, 0xe2, 0xa4, 0xcb, 0x3e, 0x65, 0xa7, 0xd2, 0x0b, 0xce, 0xe9,
0x34, 0x55, 0xd8, 0x38, 0x6d, 0xa7, 0x16, 0x94, 0x65, 0xd1, 0x52, 0x4e, 0xa7, 0xa9, 0xc2, 0xbb,
0xce, 0x64, 0x1c, 0x91, 0xcd, 0x36, 0xe7, 0xd0, 0x0e, 0x94, 0x44, 0xa8, 0x0c, 0x5d, 0x9e, 0x54,
0xcf, 0x33, 0xa9, 0xc7, 0x54, 0xc9, 0x8f, 0x39, 0x87, 0x7e, 0x09, 0x4a, 0x22, 0x41, 0x94, 0xd3,
0x63, 0xb2, 0x28, 0xa7, 0x33, 0x11, 0x25, 0x62, 0xd1, 0x81, 0x46, 0x32, 0x13, 0x9f, 0x73, 0x64,
0x69, 0x6a, 0x15, 0x3a, 0xd3, 0x60, 0x46, 0xa3, 0xc8, 0x6d, 0x34, 0x0a, 0x1b, 0xe6, 0x6f, 0xa3,
0xb1, 0x90, 0x64, 0xfe, 0x36, 0x1a, 0x8f, 0x42, 0x9a, 0x73, 0xe8, 0x37, 0x0d, 0x68, 0xe7, 0xa5,
0x87, 0x51, 0xae, 0x07, 0x34, 0x29, 0xc7, 0xdd, 0xf9, 0xd2, 0x09, 0xa9, 0x62, 0x5e, 0x3e, 0x15,
0x41, 0x9b, 0xb1, 0x84, 0xf0, 0xf5, 0xbc, 0xfe, 0x72, 0xd2, 0x9f, 0x9d, 0x2f, 0x4e, 0x4f, 0x10,
0x8f, 0xbd, 0x07, 0xf5, 0x44, 0xc0, 0x28, 0xc7, 0xf2, 0x8e, 0x47, 0xba, 0x72, 0x56, 0x55, 0x13,
0x7b, 0x92, 0xea, 0x2d, 0xf2, 0x8b, 0x39, 0xca, 0x98, 0x4c, 0x57, 0xe6, 0xa8, 0x77, 0x2a, 0x3d,
0x69, 0xce, 0x21, 0x02, 0x8d, 0x64, 0xb2, 0x31, 0x47, 0x1b, 0x35, 0x79, 0xca, 0xce, 0xeb, 0x53,
0x60, 0xc6, 0xc3, 0x74, 0x01, 0x46, 0xc9, 0xbe, 0x9c, 0xb3, 0x6e, 0x2c, 0xdf, 0xd8, 0x79, 0xed,
0x58, 0xbc, 0xe4, 0xb1, 0x9f, 0x48, 0xdf, 0xe5, 0x48, 0x7f, 0x3c, 0xc1, 0x37, 0xc5, 0x5d, 0x64,
0x3c, 0x45, 0x94, 0x73, 0x17, 0xc9, 0xcd, 0x46, 0x75, 0xae, 0x4f, 0x8d, 0x1f, 0xcf, 0xe7, 0x5b,
0xd0, 0xca, 0xa6, 0xd4, 0x72, 0xee, 0xb8, 0x39, 0x89, 0xbd, 0xce, 0x1b, 0x53, 0x62, 0x27, 0xcf,
0xc3, 0xf3, 0xe3, 0x3c, 0x7d, 0xc3, 0x65, 0x07, 0x22, 0x9b, 0x33, 0xcd, 0xac, 0x93, 0x89, 0xa3,
0x69, 0x66, 0x9d, 0x4a, 0x13, 0xa9, 0xc3, 0x4b, 0x44, 0xa4, 0xf3, 0x0e, 0xaf, 0x64, 0x82, 0x22,
0xe7, 0x9c, 0x49, 0x87, 0xf3, 0xa5, 0xfb, 0x99, 0x8e, 0xab, 0xa3, 0x7c, 0x3f, 0x61, 0x2c, 0x54,
0x9f, 0xe3, 0x7e, 0xea, 0x03, 0xf5, 0x42, 0xd1, 0x5b, 0xd9, 0xf0, 0xe1, 0xe4, 0xd8, 0x44, 0x36,
0xac, 0x74, 0x7c, 0xf8, 0xa0, 0x95, 0x8d, 0xd5, 0xe5, 0x0c, 0x90, 0x13, 0xd2, 0x9b, 0x62, 0x80,
0x6c, 0xc4, 0x2b, 0x67, 0x80, 0x9c, 0xc0, 0xd8, 0x14, 0xbe, 0x64, 0x2a, 0xfa, 0x94, 0x73, 0x34,
0xe9, 0x22, 0x54, 0x39, 0x47, 0x93, 0x36, 0x70, 0x66, 0xce, 0x6d, 0x0e, 0xa1, 0xb1, 0x13, 0x06,
0x4f, 0x8e, 0xa2, 0xc0, 0xd1, 0xcf, 0xc6, 0xd8, 0xdd, 0xfa, 0x06, 0x2c, 0xb8, 0x31, 0x4e, 0x2f,
0x1c, 0xd8, 0xb7, 0xea, 0x32, 0x80, 0xb5, 0xc3, 0x89, 0x77, 0x8c, 0x5f, 0xbe, 0xd1, 0x73, 0xd9,
0xc1, 0x70, 0x8f, 0x4b, 0xe6, 0xba, 0x44, 0x7b, 0xc3, 0x0d, 0xd4, 0xaf, 0xeb, 0xae, 0xcf, 0x48,
0xe8, 0x63, 0xef, 0xba, 0x18, 0x4a, 0x41, 0x07, 0x7b, 0x7f, 0x64, 0x18, 0x7b, 0x65, 0x01, 0xba,
0xf1, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x77, 0xf8, 0xe0, 0x92, 0x08, 0x52, 0x00, 0x00,
// 4292 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4d, 0x8f, 0x1b, 0x47,
0x76, 0xd3, 0xe4, 0xf0, 0xeb, 0x91, 0x9c, 0xa1, 0x6a, 0xbe, 0x68, 0x4a, 0xb2, 0x46, 0x6d, 0xcb,
0x1e, 0x4b, 0x6b, 0x69, 0x3d, 0xf2, 0xda, 0x1b, 0x7b, 0x13, 0xaf, 0xa4, 0x89, 0xa5, 0x81, 0x25,
0x65, 0xb6, 0xc7, 0xde, 0xc5, 0xc6, 0x10, 0x88, 0x9a, 0xee, 0x1a, 0x4e, 0x47, 0xcd, 0x6e, 0x6e,
0x57, 0x51, 0xa3, 0xf1, 0x69, 0x81, 0x0d, 0xf2, 0x81, 0x75, 0xbc, 0x08, 0xb2, 0x48, 0xb2, 0x87,
0x04, 0x41, 0x3e, 0x80, 0xe4, 0x90, 0x20, 0xbb, 0x01, 0x92, 0x20, 0x97, 0xe4, 0x90, 0x43, 0x0e,
0x01, 0xf2, 0x71, 0x09, 0x82, 0xbd, 0xe4, 0x0f, 0xe4, 0x10, 0x20, 0xc7, 0x1c, 0x82, 0xfa, 0xe8,
0x66, 0x77, 0xb3, 0x9a, 0xc3, 0x11, 0x2d, 0x6b, 0x74, 0x63, 0xbf, 0x7a, 0xaf, 0xea, 0xd5, 0xab,
0x57, 0xaf, 0x5e, 0xbd, 0xf7, 0x8a, 0xd0, 0xe8, 0xbb, 0xde, 0xa3, 0x21, 0xbd, 0x3a, 0x08, 0x03,
0x16, 0xa0, 0xa5, 0xe4, 0xd7, 0x55, 0xf9, 0xd1, 0x69, 0xd8, 0x41, 0xbf, 0x1f, 0xf8, 0x12, 0xd8,
0x69, 0x50, 0xfb, 0x80, 0xf4, 0xb1, 0xfc, 0x32, 0x7f, 0xdf, 0x00, 0x74, 0x2b, 0x24, 0x98, 0x91,
0x1b, 0x9e, 0x8b, 0xa9, 0x45, 0xbe, 0x33, 0x24, 0x94, 0xa1, 0x2f, 0xc3, 0xfc, 0x1e, 0xa6, 0xa4,
0x6d, 0xac, 0x1b, 0x1b, 0xf5, 0xcd, 0x73, 0x57, 0x53, 0xdd, 0xaa, 0xee, 0xee, 0xd1, 0xde, 0x4d,
0x4c, 0x89, 0x25, 0x30, 0xd1, 0x1a, 0x54, 0x9c, 0xbd, 0xae, 0x8f, 0xfb, 0xa4, 0x5d, 0x58, 0x37,
0x36, 0x6a, 0x56, 0xd9, 0xd9, 0xbb, 0x8f, 0xfb, 0x04, 0xbd, 0x0a, 0x8b, 0x76, 0xe0, 0x79, 0xc4,
0x66, 0x6e, 0xe0, 0x4b, 0x84, 0xa2, 0x40, 0x58, 0x18, 0x81, 0x05, 0xe2, 0x32, 0x94, 0x30, 0xe7,
0xa1, 0x3d, 0x2f, 0x9a, 0xe5, 0x87, 0x49, 0xa1, 0xb5, 0x15, 0x06, 0x83, 0xa7, 0xc5, 0x5d, 0x3c,
0x68, 0x31, 0x39, 0xe8, 0xef, 0x19, 0x70, 0xe6, 0x86, 0xc7, 0x48, 0x78, 0x4a, 0x85, 0xf2, 0xbb,
0x05, 0x58, 0x93, 0xab, 0x76, 0x2b, 0x46, 0x7f, 0x96, 0x5c, 0xae, 0x42, 0x59, 0x6a, 0x95, 0x60,
0xb3, 0x61, 0xa9, 0x2f, 0x74, 0x1e, 0x80, 0x1e, 0xe0, 0xd0, 0xa1, 0x5d, 0x7f, 0xd8, 0x6f, 0x97,
0xd6, 0x8d, 0x8d, 0x92, 0x55, 0x93, 0x90, 0xfb, 0xc3, 0x3e, 0xb2, 0xe0, 0x8c, 0x1d, 0xf8, 0xd4,
0xa5, 0x8c, 0xf8, 0xf6, 0x51, 0xd7, 0x23, 0x8f, 0x88, 0xd7, 0x2e, 0xaf, 0x1b, 0x1b, 0x0b, 0x9b,
0x97, 0xb4, 0x7c, 0xdf, 0x1a, 0x61, 0xdf, 0xe5, 0xc8, 0x56, 0xcb, 0xce, 0x40, 0xcc, 0xef, 0x1b,
0xb0, 0xc2, 0x15, 0xe6, 0x54, 0x08, 0xc6, 0xfc, 0x33, 0x03, 0x96, 0xef, 0x60, 0x7a, 0x3a, 0x56,
0xe9, 0x3c, 0x00, 0x73, 0xfb, 0xa4, 0x4b, 0x19, 0xee, 0x0f, 0xc4, 0x4a, 0xcd, 0x5b, 0x35, 0x0e,
0xd9, 0xe5, 0x00, 0xf3, 0xdb, 0xd0, 0xb8, 0x19, 0x04, 0x9e, 0x45, 0xe8, 0x20, 0xf0, 0x29, 0x41,
0xd7, 0xa1, 0x4c, 0x19, 0x66, 0x43, 0xaa, 0x98, 0x3c, 0xab, 0x65, 0x72, 0x57, 0xa0, 0x58, 0x0a,
0x95, 0xeb, 0xeb, 0x23, 0xec, 0x0d, 0x25, 0x8f, 0x55, 0x4b, 0x7e, 0x98, 0x1f, 0xc3, 0xc2, 0x2e,
0x0b, 0x5d, 0xbf, 0xf7, 0x39, 0x76, 0x5e, 0x8b, 0x3a, 0xff, 0x77, 0x03, 0x5e, 0xd8, 0x22, 0xd4,
0x0e, 0xdd, 0xbd, 0x53, 0xb2, 0x1d, 0x4c, 0x68, 0x8c, 0x20, 0xdb, 0x5b, 0x42, 0xd4, 0x45, 0x2b,
0x05, 0xcb, 0x2c, 0x46, 0x29, 0xbb, 0x18, 0xdf, 0x2d, 0x41, 0x47, 0x37, 0xa9, 0x59, 0xc4, 0xf7,
0xb3, 0xf1, 0x2e, 0x2d, 0x08, 0xa2, 0xcc, 0x1e, 0x53, 0xe7, 0xc2, 0x68, 0xb4, 0x5d, 0x01, 0x88,
0x37, 0x73, 0x76, 0x56, 0x45, 0xcd, 0xac, 0x36, 0x61, 0xe5, 0x91, 0x1b, 0xb2, 0x21, 0xf6, 0xba,
0xf6, 0x01, 0xf6, 0x7d, 0xe2, 0x09, 0x39, 0x71, 0xf3, 0x55, 0xdc, 0xa8, 0x59, 0x4b, 0xaa, 0xf1,
0x96, 0x6c, 0xe3, 0xc2, 0xa2, 0xe8, 0x4d, 0x58, 0x1d, 0x1c, 0x1c, 0x51, 0xd7, 0x1e, 0x23, 0x2a,
0x09, 0xa2, 0xe5, 0xa8, 0x35, 0x45, 0x75, 0x05, 0xce, 0xd8, 0xc2, 0x02, 0x3a, 0x5d, 0x2e, 0x35,
0x29, 0xc6, 0xb2, 0x10, 0x63, 0x4b, 0x35, 0x7c, 0x18, 0xc1, 0x39, 0x5b, 0x11, 0xf2, 0x90, 0xd9,
0x09, 0x82, 0x8a, 0x20, 0x58, 0x52, 0x8d, 0x1f, 0x31, 0x7b, 0x44, 0x93, 0xb6, 0x5d, 0xd5, 0xac,
0xed, 0x6a, 0x43, 0x45, 0xd8, 0x62, 0x42, 0xdb, 0x35, 0xc1, 0x66, 0xf4, 0x89, 0xb6, 0x61, 0x91,
0x32, 0x1c, 0xb2, 0xee, 0x20, 0xa0, 0x2e, 0x97, 0x0b, 0x6d, 0xc3, 0x7a, 0x71, 0xa3, 0xbe, 0xb9,
0xae, 0x5d, 0xa4, 0x0f, 0xc8, 0xd1, 0x16, 0x66, 0x78, 0x07, 0xbb, 0xa1, 0xb5, 0x20, 0x08, 0x77,
0x22, 0x3a, 0xbd, 0x81, 0xac, 0xcf, 0x64, 0x20, 0x75, 0x5a, 0xdc, 0xd0, 0xda, 0xae, 0x9f, 0x18,
0xb0, 0x72, 0x37, 0xc0, 0xce, 0xe9, 0xd8, 0x53, 0x97, 0x60, 0x21, 0x24, 0x03, 0xcf, 0xb5, 0x31,
0x5f, 0x8f, 0x3d, 0x12, 0x8a, 0x5d, 0x55, 0xb2, 0x9a, 0x0a, 0x7a, 0x5f, 0x00, 0xcd, 0xcf, 0x0c,
0x68, 0x5b, 0xc4, 0x23, 0x98, 0x9e, 0x0e, 0x5b, 0x60, 0xfe, 0xd0, 0x80, 0x17, 0x6f, 0x13, 0x96,
0xd8, 0x55, 0x0c, 0x33, 0x97, 0x32, 0xd7, 0x7e, 0x96, 0x7e, 0x85, 0xf9, 0x03, 0x03, 0x2e, 0xe4,
0xb2, 0x35, 0x8b, 0x91, 0x79, 0x1b, 0x4a, 0xfc, 0x17, 0x6d, 0x17, 0x84, 0xce, 0x5f, 0xcc, 0xd3,
0xf9, 0x6f, 0x72, 0xdb, 0x2d, 0x94, 0x5e, 0xe2, 0x9b, 0xff, 0x65, 0xc0, 0xea, 0xee, 0x41, 0x70,
0x38, 0x62, 0xe9, 0x69, 0x08, 0x28, 0x6d, 0x76, 0x8b, 0x19, 0xb3, 0x8b, 0xde, 0x80, 0x79, 0x76,
0x34, 0x20, 0x42, 0xb7, 0x16, 0x36, 0xcf, 0x5f, 0xd5, 0xb8, 0xd3, 0x57, 0x39, 0x93, 0x1f, 0x1e,
0x0d, 0x88, 0x25, 0x50, 0xd1, 0x6b, 0xd0, 0xca, 0x88, 0x3c, 0x32, 0x5c, 0x8b, 0x69, 0x99, 0x53,
0xf3, 0x6f, 0x0b, 0xb0, 0x36, 0x36, 0xc5, 0x59, 0x84, 0xad, 0x1b, 0xbb, 0xa0, 0x1d, 0x9b, 0xef,
0x9f, 0x04, 0xaa, 0xeb, 0x70, 0x8f, 0xb7, 0xb8, 0x51, 0xb4, 0x9a, 0x09, 0xfb, 0xed, 0x50, 0xf4,
0x3a, 0xa0, 0x31, 0xb3, 0x2a, 0xad, 0xf7, 0xbc, 0x75, 0x26, 0x6b, 0x57, 0x85, 0xed, 0xd6, 0x1a,
0x56, 0x29, 0x82, 0x79, 0x6b, 0x59, 0x63, 0x59, 0x29, 0x7a, 0x03, 0x96, 0x5d, 0xff, 0x1e, 0xe9,
0x07, 0xe1, 0x51, 0x77, 0x40, 0x42, 0x9b, 0xf8, 0x0c, 0xf7, 0x08, 0x6d, 0x97, 0x05, 0x47, 0x4b,
0x51, 0xdb, 0xce, 0xa8, 0xc9, 0xfc, 0x2b, 0x03, 0x56, 0xa5, 0xc7, 0xbb, 0x83, 0x43, 0xe6, 0x9e,
0x02, 0x6b, 0x34, 0x88, 0xf8, 0x90, 0x78, 0xd2, 0x3f, 0x6f, 0xc6, 0x50, 0xb1, 0xcb, 0x7e, 0x6c,
0xc0, 0x32, 0x77, 0x46, 0x9f, 0x27, 0x9e, 0xff, 0xd2, 0x80, 0xa5, 0x3b, 0x98, 0x3e, 0x4f, 0x2c,
0xff, 0x54, 0x9d, 0x54, 0x31, 0xcf, 0xcf, 0xf4, 0xca, 0xf6, 0x2a, 0x2c, 0xa6, 0x99, 0x8e, 0xbc,
0x9f, 0x85, 0x14, 0xd7, 0x54, 0x73, 0xa4, 0x95, 0x74, 0x47, 0xda, 0xdf, 0x8c, 0x8e, 0xb4, 0xe7,
0x6b, 0x82, 0xe6, 0xdf, 0x19, 0x70, 0xfe, 0x36, 0x61, 0x31, 0xd7, 0xa7, 0xe2, 0xe8, 0x9b, 0x56,
0xa9, 0x3e, 0x93, 0x07, 0xb7, 0x96, 0xf9, 0x67, 0x72, 0x40, 0x7e, 0xbf, 0x00, 0x2b, 0xfc, 0xf4,
0x38, 0x1d, 0x4a, 0x30, 0xcd, 0x1d, 0x47, 0xa3, 0x28, 0x25, 0xed, 0x4e, 0x88, 0x8e, 0xdd, 0xf2,
0xd4, 0xc7, 0xae, 0xf9, 0x93, 0x82, 0x74, 0x17, 0x92, 0xd2, 0x98, 0x65, 0x59, 0x34, 0xbc, 0x16,
0xb4, 0xbc, 0x9a, 0xd0, 0x88, 0x21, 0xdb, 0x5b, 0xd1, 0x31, 0x9a, 0x82, 0x9d, 0xda, 0x53, 0xf4,
0x53, 0x03, 0x56, 0xa3, 0x5b, 0xe5, 0x2e, 0xe9, 0xf5, 0x89, 0xcf, 0x9e, 0x5c, 0x87, 0xb2, 0x1a,
0x50, 0xd0, 0x68, 0xc0, 0x39, 0xa8, 0x51, 0x39, 0x4e, 0x7c, 0x61, 0x1c, 0x01, 0xcc, 0xbf, 0x37,
0x60, 0x6d, 0x8c, 0x9d, 0x59, 0x16, 0xb1, 0x0d, 0x15, 0xd7, 0x77, 0xc8, 0xe3, 0x98, 0x9b, 0xe8,
0x93, 0xb7, 0xec, 0x0d, 0x5d, 0xcf, 0x89, 0xd9, 0x88, 0x3e, 0xd1, 0x45, 0x68, 0x10, 0x1f, 0xef,
0x79, 0xa4, 0x2b, 0x70, 0x85, 0x22, 0x57, 0xad, 0xba, 0x84, 0x6d, 0x73, 0x10, 0x27, 0xde, 0x77,
0x89, 0x20, 0x2e, 0x49, 0x62, 0xf5, 0x69, 0xfe, 0x86, 0x01, 0x4b, 0x5c, 0x0b, 0x15, 0xf7, 0xf4,
0xe9, 0x4a, 0x73, 0x1d, 0xea, 0x09, 0x35, 0x53, 0x13, 0x49, 0x82, 0xcc, 0x87, 0xb0, 0x9c, 0x66,
0x67, 0x16, 0x69, 0xbe, 0x08, 0x10, 0xaf, 0x95, 0xdc, 0x0d, 0x45, 0x2b, 0x01, 0x31, 0x3f, 0x2d,
0x44, 0xb1, 0x63, 0x21, 0xa6, 0x67, 0x1c, 0xda, 0x12, 0x4b, 0x92, 0xb4, 0xe7, 0x35, 0x01, 0x11,
0xcd, 0x5b, 0xd0, 0x20, 0x8f, 0x59, 0x88, 0xbb, 0x03, 0x1c, 0xe2, 0xbe, 0xdc, 0x56, 0x53, 0x99,
0xde, 0xba, 0x20, 0xdb, 0x11, 0x54, 0x7c, 0x10, 0xa1, 0x22, 0x72, 0x90, 0xb2, 0x1c, 0x44, 0x40,
0xc4, 0x81, 0xf1, 0x4f, 0xdc, 0xd9, 0x53, 0xda, 0x7c, 0xda, 0x05, 0x92, 0x9e, 0x4a, 0x29, 0x3b,
0x95, 0x3f, 0x31, 0xa0, 0x25, 0xa6, 0x20, 0xe7, 0x33, 0xe0, 0xdd, 0x66, 0x68, 0x8c, 0x0c, 0xcd,
0x84, 0xbd, 0xf7, 0x33, 0x50, 0x56, 0x72, 0x2f, 0x4e, 0x2b, 0x77, 0x45, 0x70, 0xcc, 0x34, 0xcc,
0x3f, 0x34, 0x60, 0x25, 0x23, 0xf2, 0x59, 0x14, 0xfe, 0x43, 0x40, 0x72, 0x86, 0xce, 0x68, 0xda,
0xd1, 0x39, 0x7d, 0x49, 0x7b, 0x28, 0x65, 0x85, 0x64, 0x9d, 0x71, 0x33, 0x10, 0x6a, 0xfe, 0xab,
0x01, 0xe7, 0x6e, 0x13, 0x26, 0x50, 0x6f, 0x72, 0xa3, 0xb3, 0x13, 0x06, 0xbd, 0x90, 0x50, 0xfa,
0xfc, 0xea, 0xc7, 0x6f, 0x4b, 0xc7, 0x4e, 0x37, 0xa5, 0x59, 0xe4, 0x7f, 0x11, 0x1a, 0x62, 0x0c,
0xe2, 0x74, 0xc3, 0xe0, 0x90, 0x2a, 0x3d, 0xaa, 0x2b, 0x98, 0x15, 0x1c, 0x0a, 0x85, 0x60, 0x01,
0xc3, 0x9e, 0x44, 0x50, 0x27, 0x8a, 0x80, 0xf0, 0x66, 0xb1, 0x07, 0x23, 0xc6, 0x78, 0xe7, 0xe4,
0xf9, 0x95, 0xf1, 0x1f, 0x1b, 0xb0, 0x92, 0x99, 0xca, 0x2c, 0xb2, 0xfd, 0x8a, 0x74, 0x3b, 0xe5,
0x64, 0x16, 0x36, 0x2f, 0x68, 0x69, 0x12, 0x83, 0x49, 0x6c, 0x74, 0x01, 0xea, 0xfb, 0xd8, 0xf5,
0xba, 0x21, 0xc1, 0x34, 0xf0, 0xd5, 0x44, 0x81, 0x83, 0x2c, 0x01, 0x31, 0xff, 0xd1, 0x90, 0x09,
0xba, 0xe7, 0xdc, 0xe2, 0xfd, 0x51, 0x01, 0x9a, 0xdb, 0x3e, 0x25, 0x21, 0x3b, 0xfd, 0x57, 0x13,
0xf4, 0x1e, 0xd4, 0xc5, 0xc4, 0x68, 0xd7, 0xc1, 0x0c, 0xab, 0xd3, 0xec, 0x45, 0x6d, 0x34, 0xff,
0x7d, 0x8e, 0xb7, 0x85, 0x19, 0xb6, 0xa4, 0x74, 0x28, 0xff, 0x8d, 0xce, 0x42, 0xed, 0x00, 0xd3,
0x83, 0xee, 0x43, 0x72, 0x24, 0xfd, 0xc5, 0xa6, 0x55, 0xe5, 0x80, 0x0f, 0xc8, 0x11, 0x45, 0x2f,
0x40, 0xd5, 0x1f, 0xf6, 0xe5, 0x06, 0xab, 0xac, 0x1b, 0x1b, 0x4d, 0xab, 0xe2, 0x0f, 0xfb, 0x62,
0x7b, 0xfd, 0x73, 0x01, 0x16, 0xee, 0x0d, 0xf9, 0x45, 0x48, 0xe4, 0x22, 0x86, 0x1e, 0x7b, 0x32,
0x65, 0xbc, 0x0c, 0x45, 0xe9, 0x52, 0x70, 0x8a, 0xb6, 0x96, 0xf1, 0xed, 0x2d, 0x6a, 0x71, 0x24,
0x11, 0x87, 0x1f, 0xda, 0xb6, 0xf2, 0xce, 0x8a, 0x82, 0xd9, 0x1a, 0x87, 0x48, 0xdf, 0xec, 0x2c,
0xd4, 0x48, 0x18, 0xc6, 0xbe, 0x9b, 0x98, 0x0a, 0x09, 0x43, 0xd9, 0x68, 0x42, 0x03, 0xdb, 0x0f,
0xfd, 0xe0, 0xd0, 0x23, 0x4e, 0x8f, 0x38, 0x62, 0xd9, 0xab, 0x56, 0x0a, 0x26, 0x15, 0x83, 0x2f,
0x7c, 0xd7, 0xf6, 0x99, 0x38, 0xd5, 0x8b, 0x5c, 0x31, 0x38, 0xe4, 0x96, 0xcf, 0x78, 0xb3, 0x43,
0x3c, 0xc2, 0x88, 0x68, 0xae, 0xc8, 0x66, 0x09, 0x51, 0xcd, 0xc3, 0x41, 0x4c, 0x5d, 0x95, 0xcd,
0x12, 0xc2, 0x9b, 0xcf, 0x41, 0x6d, 0x94, 0x6c, 0xa8, 0x8d, 0xa2, 0x8d, 0x02, 0x60, 0xfe, 0xd4,
0x80, 0xe6, 0x96, 0xe8, 0xea, 0x39, 0x50, 0x3a, 0x04, 0xf3, 0xe4, 0xf1, 0x20, 0x54, 0x5b, 0x47,
0xfc, 0x9e, 0xa8, 0x47, 0xe6, 0x23, 0x68, 0xed, 0x78, 0xd8, 0x26, 0x07, 0x81, 0xe7, 0x90, 0x50,
0x9c, 0xed, 0xa8, 0x05, 0x45, 0x86, 0x7b, 0xca, 0x79, 0xe0, 0x3f, 0xd1, 0x57, 0xd5, 0xd5, 0x4f,
0x9a, 0xa5, 0x97, 0xb5, 0xa7, 0x6c, 0xa2, 0x9b, 0x44, 0xe0, 0x75, 0x15, 0xca, 0x22, 0x01, 0x28,
0xdd, 0x8a, 0x86, 0xa5, 0xbe, 0xcc, 0x07, 0xa9, 0x71, 0x6f, 0x87, 0xc1, 0x70, 0x80, 0xb6, 0xa1,
0x31, 0x18, 0xc1, 0xb8, 0xae, 0xe6, 0x9f, 0xe9, 0x59, 0xa6, 0xad, 0x14, 0xa9, 0xf9, 0xdf, 0x45,
0x68, 0xee, 0x12, 0x1c, 0xda, 0x07, 0xcf, 0x45, 0x90, 0xa9, 0x05, 0x45, 0x87, 0x7a, 0x6a, 0xd5,
0xf8, 0x4f, 0x74, 0x05, 0xce, 0x24, 0x26, 0xd4, 0xed, 0x71, 0x01, 0x09, 0xbd, 0x6f, 0x58, 0xad,
0x41, 0x56, 0x70, 0x6f, 0x43, 0xd5, 0xa1, 0x5e, 0x57, 0x2c, 0x51, 0x45, 0x2c, 0x91, 0x7e, 0x7e,
0x5b, 0xd4, 0x13, 0x4b, 0x53, 0x71, 0xe4, 0x0f, 0xf4, 0x12, 0x34, 0x83, 0x21, 0x1b, 0x0c, 0x59,
0x57, 0xda, 0x9d, 0x76, 0x55, 0xb0, 0xd7, 0x90, 0x40, 0x61, 0x96, 0x28, 0x7a, 0x1f, 0x9a, 0x54,
0x88, 0x32, 0x72, 0xcc, 0x6b, 0xd3, 0x3a, 0x88, 0x0d, 0x49, 0xa7, 0x3c, 0xf3, 0xd7, 0xa0, 0xc5,
0x42, 0xfc, 0x88, 0x78, 0x89, 0xd4, 0x1e, 0x88, 0xdd, 0xb6, 0x28, 0xe1, 0xa3, 0xb4, 0xde, 0x35,
0x58, 0xea, 0x0d, 0x71, 0x88, 0x7d, 0x46, 0x48, 0x02, 0xbb, 0x2e, 0xb0, 0x51, 0xdc, 0x14, 0x13,
0x98, 0x1f, 0xc0, 0xfc, 0x1d, 0x97, 0x09, 0x41, 0x72, 0x9b, 0x65, 0x88, 0x6b, 0x90, 0xb0, 0x4c,
0x2f, 0x40, 0x35, 0x0c, 0x0e, 0xa5, 0x0d, 0x2e, 0x08, 0x15, 0xac, 0x84, 0xc1, 0xa1, 0x30, 0xb0,
0xa2, 0x20, 0x22, 0x08, 0x95, 0x6e, 0x16, 0x2c, 0xf5, 0x65, 0xfe, 0x85, 0x31, 0x52, 0x1e, 0x6e,
0x3e, 0xe9, 0x93, 0xd9, 0xcf, 0xf7, 0xa0, 0x12, 0x4a, 0xfa, 0x89, 0xa9, 0xdc, 0xe4, 0x48, 0xe2,
0x0c, 0x88, 0xa8, 0xa6, 0xcf, 0x13, 0xfd, 0xb2, 0x01, 0x8d, 0xf7, 0xbd, 0x21, 0x7d, 0x1a, 0xca,
0xae, 0xcb, 0x5e, 0x14, 0xf5, 0x99, 0x93, 0xdf, 0x2c, 0x40, 0x53, 0xb1, 0x31, 0x8b, 0x13, 0x94,
0xcb, 0xca, 0x2e, 0xd4, 0xf9, 0x90, 0x5d, 0x4a, 0x7a, 0x51, 0x4c, 0xa7, 0xbe, 0xb9, 0xa9, 0x35,
0x0f, 0x29, 0x36, 0x44, 0xb6, 0x7c, 0x57, 0x10, 0xfd, 0xbc, 0xcf, 0xc2, 0x23, 0x0b, 0xec, 0x18,
0xd0, 0x79, 0x00, 0x8b, 0x99, 0x66, 0xae, 0x44, 0x0f, 0xc9, 0x51, 0x64, 0xff, 0x1e, 0x92, 0x23,
0xf4, 0x66, 0xb2, 0xa6, 0x21, 0xef, 0x14, 0xbf, 0x1b, 0xf8, 0xbd, 0x1b, 0x61, 0x88, 0x8f, 0x54,
0xcd, 0xc3, 0x3b, 0x85, 0xaf, 0x1a, 0xe6, 0x3f, 0x14, 0xa0, 0xf1, 0x8d, 0x21, 0x09, 0x8f, 0x9e,
0xa5, 0x1d, 0x8a, 0x4e, 0x85, 0xf9, 0xc4, 0xa9, 0x30, 0xb6, 0xf5, 0x4b, 0x9a, 0xad, 0xaf, 0x31,
0x60, 0x65, 0xad, 0x01, 0xd3, 0xed, 0xed, 0xca, 0x89, 0xf6, 0x76, 0x35, 0x77, 0x6f, 0xff, 0xb9,
0x11, 0x8b, 0x70, 0xa6, 0xdd, 0x98, 0x72, 0xc7, 0x0a, 0x27, 0x76, 0xc7, 0xa6, 0xde, 0x8d, 0x3f,
0x36, 0xa0, 0xf6, 0x4d, 0x62, 0xb3, 0x20, 0xe4, 0xf6, 0x47, 0x43, 0x66, 0x4c, 0xe1, 0x1a, 0x17,
0xb2, 0xae, 0xf1, 0x75, 0xa8, 0xba, 0x4e, 0x17, 0x73, 0xfd, 0x12, 0xe3, 0x4e, 0x72, 0xc9, 0x2a,
0xae, 0x23, 0x14, 0x71, 0xfa, 0x24, 0xc0, 0xef, 0x18, 0xd0, 0x90, 0x3c, 0x53, 0x49, 0xf9, 0x6e,
0x62, 0x38, 0x43, 0xa7, 0xf4, 0xea, 0x23, 0x9e, 0xe8, 0x9d, 0xb9, 0xd1, 0xb0, 0x37, 0x00, 0xb8,
0x90, 0x15, 0xb9, 0xdc, 0x33, 0xeb, 0x5a, 0x6e, 0x25, 0xb9, 0x10, 0xf8, 0x9d, 0x39, 0xab, 0xc6,
0xa9, 0x44, 0x17, 0x37, 0x2b, 0x50, 0x12, 0xd4, 0xe6, 0xff, 0x19, 0xb0, 0x74, 0x0b, 0x7b, 0xf6,
0x96, 0x4b, 0x19, 0xf6, 0xed, 0x19, 0x9c, 0xb0, 0x77, 0xa0, 0x12, 0x0c, 0xba, 0x1e, 0xd9, 0x67,
0x8a, 0xa5, 0x8b, 0x13, 0x66, 0x24, 0xc5, 0x60, 0x95, 0x83, 0xc1, 0x5d, 0xb2, 0xcf, 0xd0, 0xd7,
0xa0, 0x1a, 0x0c, 0xba, 0xa1, 0xdb, 0x3b, 0x60, 0x4a, 0xfa, 0x53, 0x10, 0x57, 0x82, 0x81, 0xc5,
0x29, 0x12, 0xb1, 0x95, 0xf9, 0x13, 0xc6, 0x56, 0xcc, 0x7f, 0x1b, 0x9b, 0xfe, 0x0c, 0x7b, 0xe0,
0x1d, 0xa8, 0xba, 0x3e, 0xeb, 0x3a, 0x2e, 0x8d, 0x44, 0x70, 0x5e, 0xaf, 0x43, 0x3e, 0x13, 0x33,
0x10, 0x6b, 0xea, 0x33, 0x3e, 0x36, 0xfa, 0x3a, 0xc0, 0xbe, 0x17, 0x60, 0x45, 0x2d, 0x65, 0x70,
0x41, 0xbf, 0x7d, 0x38, 0x5a, 0x44, 0x5f, 0x13, 0x44, 0xbc, 0x87, 0xd1, 0x92, 0xfe, 0x8b, 0x01,
0x2b, 0x3b, 0x24, 0x94, 0x15, 0x2f, 0x4c, 0x85, 0x41, 0xb7, 0xfd, 0xfd, 0x20, 0x1d, 0x89, 0x36,
0x32, 0x91, 0xe8, 0xcf, 0x27, 0xfa, 0x9a, 0xba, 0x39, 0xc9, 0x7c, 0x48, 0x74, 0x73, 0x8a, 0xb2,
0x3e, 0xf2, 0xe6, 0xb9, 0x90, 0xb3, 0x4c, 0x8a, 0xdf, 0xe4, 0x05, 0xdc, 0xfc, 0x2d, 0x59, 0xa8,
0xa1, 0x9d, 0xd4, 0x93, 0x2b, 0xec, 0x2a, 0x28, 0x4b, 0x9f, 0xb1, 0xfb, 0xaf, 0x40, 0xc6, 0x76,
0xe4, 0x18, 0xa2, 0x1f, 0x19, 0xb0, 0x9e, 0xcf, 0xd5, 0x2c, 0x47, 0xf4, 0xd7, 0xa1, 0xe4, 0xfa,
0xfb, 0x41, 0x14, 0x76, 0xbb, 0xac, 0x77, 0xd1, 0xb5, 0xe3, 0x4a, 0x42, 0xf3, 0xaf, 0x0b, 0xd0,
0x12, 0x46, 0xfd, 0x19, 0x2c, 0x7f, 0x9f, 0xf4, 0xbb, 0xd4, 0xfd, 0x84, 0x44, 0xcb, 0xdf, 0x27,
0xfd, 0x5d, 0xf7, 0x13, 0x92, 0xd2, 0x8c, 0x52, 0x5a, 0x33, 0x26, 0x47, 0x95, 0x93, 0x61, 0xd5,
0x4a, 0x3a, 0xac, 0xba, 0x0a, 0x65, 0x3f, 0x70, 0xc8, 0xf6, 0x96, 0xba, 0x76, 0xaa, 0xaf, 0x91,
0xaa, 0xd5, 0x4e, 0xa8, 0x6a, 0x9f, 0x19, 0xd0, 0xb9, 0x4d, 0x58, 0x56, 0x76, 0xcf, 0x4e, 0xcb,
0x7e, 0x60, 0xc0, 0x59, 0x2d, 0x43, 0xb3, 0x28, 0xd8, 0xbb, 0x69, 0x05, 0xd3, 0xdf, 0x01, 0xc7,
0x86, 0x54, 0xba, 0xf5, 0x06, 0x34, 0xb6, 0x86, 0xfd, 0x7e, 0xec, 0x72, 0x5d, 0x84, 0x46, 0x28,
0x7f, 0xca, 0x2b, 0x92, 0x3c, 0x7f, 0xeb, 0x0a, 0xc6, 0x2f, 0x42, 0xe6, 0x15, 0x68, 0x2a, 0x12,
0xc5, 0x75, 0x07, 0xaa, 0xa1, 0xfa, 0xad, 0xf0, 0xe3, 0x6f, 0x73, 0x05, 0x96, 0x2c, 0xd2, 0xe3,
0xaa, 0x1d, 0xde, 0x75, 0xfd, 0x87, 0x6a, 0x18, 0xf3, 0x7b, 0x06, 0x2c, 0xa7, 0xe1, 0xaa, 0xaf,
0xb7, 0xa0, 0x82, 0x1d, 0x27, 0x24, 0x94, 0x4e, 0x5c, 0x96, 0x1b, 0x12, 0xc7, 0x8a, 0x90, 0x13,
0x92, 0x2b, 0x4c, 0x2d, 0x39, 0xb3, 0x0b, 0x67, 0x6e, 0x13, 0x76, 0x8f, 0xb0, 0x70, 0xa6, 0x0c,
0x7e, 0x9b, 0x5f, 0x5e, 0x04, 0xb1, 0x52, 0x8b, 0xe8, 0xd3, 0xfc, 0xd4, 0x00, 0x94, 0x1c, 0x61,
0x96, 0x65, 0x4e, 0x4a, 0xb9, 0x90, 0x96, 0xb2, 0xac, 0x85, 0xea, 0x0f, 0x02, 0x9f, 0xf8, 0x2c,
0xe9, 0x6e, 0x35, 0x63, 0x68, 0x54, 0x56, 0x82, 0xee, 0x06, 0xd8, 0xb9, 0x89, 0xbd, 0xd9, 0xdc,
0x83, 0xf3, 0x00, 0x34, 0xb4, 0xbb, 0x6a, 0xb7, 0x16, 0x94, 0xf5, 0x09, 0xed, 0xfb, 0x72, 0xc3,
0x5e, 0x80, 0xba, 0x43, 0x99, 0x6a, 0x8e, 0x12, 0xca, 0xe0, 0x50, 0x26, 0xdb, 0x45, 0xad, 0x2b,
0x25, 0xd8, 0x23, 0x4e, 0x37, 0x91, 0x8f, 0x9b, 0x17, 0x68, 0x2d, 0xd9, 0xb0, 0x1b, 0xc3, 0x35,
0x9b, 0xab, 0xa4, 0xdd, 0x5c, 0x0f, 0x60, 0xed, 0x1e, 0xf6, 0x87, 0xd8, 0xbb, 0x15, 0xf4, 0x07,
0x38, 0x55, 0x27, 0x99, 0x35, 0x87, 0x86, 0xc6, 0x1c, 0xbe, 0x28, 0x0b, 0xe9, 0xa4, 0x0b, 0x2e,
0xe6, 0x34, 0x6f, 0x25, 0x20, 0x26, 0x85, 0xf6, 0x78, 0xf7, 0xb3, 0x2c, 0xa8, 0x60, 0x2a, 0xea,
0x2a, 0x69, 0xa3, 0x47, 0x30, 0xf3, 0x3d, 0x78, 0x41, 0x14, 0x35, 0x46, 0xa0, 0x54, 0x0a, 0x20,
0xdb, 0x81, 0xa1, 0xe9, 0xe0, 0x57, 0x0b, 0xc2, 0x04, 0x8e, 0xf5, 0x30, 0x0b, 0xe3, 0xef, 0xa4,
0x23, 0xef, 0x2f, 0xe7, 0x14, 0xee, 0xa6, 0x47, 0x54, 0xe1, 0xf7, 0x0d, 0x58, 0x24, 0x8f, 0x89,
0x3d, 0x64, 0xae, 0xdf, 0xdb, 0xf1, 0xb0, 0x7f, 0x3f, 0x50, 0x07, 0x4f, 0x16, 0x8c, 0x5e, 0x86,
0x26, 0x97, 0x7e, 0x30, 0x64, 0x0a, 0x4f, 0x9e, 0x40, 0x69, 0x20, 0xef, 0x8f, 0xcf, 0xd7, 0x23,
0x8c, 0x38, 0x0a, 0x4f, 0x1e, 0x47, 0x59, 0xf0, 0x98, 0x28, 0x39, 0x98, 0x9e, 0x44, 0x94, 0xff,
0x61, 0x64, 0x44, 0xa9, 0x7a, 0x78, 0x56, 0xa2, 0xbc, 0x03, 0xd0, 0x27, 0x61, 0x8f, 0x6c, 0x0b,
0xe3, 0x2f, 0x6f, 0xf8, 0x1b, 0x5a, 0xe3, 0x3f, 0xea, 0xe0, 0x5e, 0x44, 0x60, 0x25, 0x68, 0xcd,
0xdb, 0xb0, 0xa4, 0x41, 0xe1, 0x76, 0x8d, 0x06, 0xc3, 0xd0, 0x26, 0x51, 0x90, 0x28, 0xfa, 0xe4,
0xe7, 0x20, 0xc3, 0x61, 0x8f, 0x30, 0xa5, 0xb4, 0xea, 0xcb, 0x7c, 0x4b, 0x24, 0xab, 0x44, 0x40,
0x21, 0xa5, 0xa9, 0xe9, 0xc4, 0xbb, 0x31, 0x96, 0x78, 0xdf, 0x17, 0x99, 0xa1, 0x24, 0xdd, 0x8c,
0x45, 0x13, 0xfb, 0xbc, 0x2b, 0xe2, 0xa8, 0x47, 0x1b, 0xd1, 0xa7, 0xf9, 0xbf, 0x06, 0x34, 0xb7,
0xfb, 0x83, 0x60, 0x94, 0x14, 0x99, 0xfa, 0xca, 0x39, 0x1e, 0x54, 0x2e, 0xe8, 0x82, 0xca, 0x2f,
0x41, 0x33, 0x5d, 0xf2, 0x2f, 0xe3, 0x3f, 0x0d, 0x3b, 0x59, 0xea, 0x7f, 0x16, 0x6a, 0x61, 0x70,
0xd8, 0xe5, 0xa6, 0xd4, 0x51, 0xe5, 0x19, 0xd5, 0x30, 0x38, 0xe4, 0x06, 0xd6, 0x41, 0xcb, 0x50,
0xda, 0x77, 0xbd, 0xb8, 0xb2, 0x48, 0x7e, 0xa0, 0x77, 0xf9, 0x85, 0x4c, 0xa6, 0x6f, 0xcb, 0xd3,
0xde, 0x8b, 0x22, 0x0a, 0xf3, 0x63, 0x58, 0x88, 0x66, 0x3d, 0xe3, 0x6b, 0x15, 0x86, 0xe9, 0xc3,
0xa8, 0x72, 0x42, 0x7e, 0x98, 0x57, 0x64, 0x56, 0x4f, 0xf4, 0x9f, 0x5a, 0x74, 0x04, 0xf3, 0x1c,
0x43, 0xed, 0x25, 0xf1, 0x9b, 0x2f, 0xc0, 0x6a, 0x16, 0x7b, 0x16, 0x96, 0xde, 0x4a, 0xef, 0x1f,
0xfd, 0x83, 0x84, 0xe4, 0x68, 0x6a, 0xef, 0xa8, 0x15, 0xb0, 0x83, 0xa1, 0xcf, 0x94, 0x01, 0xe2,
0x2b, 0x70, 0x8b, 0x7f, 0xa3, 0x35, 0xa8, 0xb8, 0x4e, 0xd7, 0xe3, 0x77, 0x37, 0x79, 0x26, 0x95,
0x5d, 0xe7, 0x2e, 0xbf, 0xd7, 0xbd, 0x1d, 0x79, 0x5a, 0x53, 0x97, 0x5b, 0x28, 0x2f, 0xab, 0x0d,
0xab, 0xbc, 0x03, 0xc9, 0xc8, 0x87, 0x5c, 0x6c, 0x91, 0x23, 0xe4, 0xc0, 0xda, 0x58, 0xcb, 0xe7,
0xbf, 0x46, 0x3f, 0x94, 0x7e, 0x88, 0x25, 0xcb, 0x30, 0x9f, 0x72, 0x51, 0xcf, 0x06, 0xb4, 0x0e,
0x5d, 0x76, 0xd0, 0x15, 0x4f, 0x4b, 0x84, 0x13, 0x20, 0xf3, 0xda, 0x55, 0x6b, 0x81, 0xc3, 0x77,
0x39, 0x98, 0x3b, 0x02, 0xd4, 0xfc, 0x35, 0x03, 0x96, 0x52, 0x6c, 0xcd, 0x32, 0xf3, 0xaf, 0x71,
0xff, 0x48, 0x76, 0xa4, 0x3c, 0xe1, 0x75, 0xad, 0x31, 0x54, 0xa3, 0x09, 0x23, 0x18, 0x53, 0x98,
0xff, 0x69, 0x40, 0x3d, 0xd1, 0xc2, 0xaf, 0x57, 0xaa, 0x6d, 0x74, 0xbd, 0x8a, 0x01, 0x53, 0x89,
0xe1, 0x25, 0x18, 0x99, 0x86, 0x44, 0x79, 0x7a, 0xa2, 0xae, 0xce, 0xa1, 0xe8, 0x0e, 0x2c, 0x48,
0x31, 0xc5, 0xac, 0x6b, 0xa3, 0x1e, 0x71, 0xc5, 0x20, 0x0e, 0x1d, 0xc5, 0xa5, 0xd5, 0xa4, 0x89,
0x2f, 0x99, 0xe4, 0x0c, 0x1c, 0x22, 0x46, 0x2a, 0x49, 0x6b, 0x2d, 0xfc, 0x2f, 0x87, 0xf2, 0x6b,
0x50, 0x23, 0x49, 0xca, 0x5d, 0x49, 0x8f, 0x60, 0x87, 0x84, 0xf1, 0xdc, 0xe2, 0x6f, 0xee, 0xbb,
0xc9, 0xdf, 0x5d, 0xee, 0x5a, 0x2b, 0x23, 0x07, 0x12, 0xc4, 0xbd, 0x6e, 0xf4, 0x0a, 0x2c, 0x3a,
0xfd, 0xd4, 0xbb, 0xa6, 0xc8, 0xd9, 0x74, 0xfa, 0x89, 0x07, 0x4d, 0x29, 0x86, 0xe6, 0xd3, 0x0c,
0xfd, 0x8f, 0x11, 0xbf, 0xf6, 0x0c, 0x89, 0x43, 0x7c, 0xe6, 0x62, 0xef, 0xc9, 0x75, 0xb2, 0x03,
0xd5, 0x21, 0x25, 0x61, 0xc2, 0x26, 0xc7, 0xdf, 0xbc, 0x6d, 0x80, 0x29, 0x3d, 0x0c, 0x42, 0x47,
0x71, 0x19, 0x7f, 0x4f, 0x28, 0x52, 0x94, 0x2f, 0x09, 0xf5, 0x45, 0x8a, 0x6f, 0xc1, 0x5a, 0x3f,
0x70, 0xdc, 0x7d, 0x57, 0x57, 0xdb, 0xc8, 0xc9, 0x56, 0xa2, 0xe6, 0x14, 0x9d, 0xf9, 0xa3, 0x02,
0xac, 0x7d, 0x34, 0x70, 0xbe, 0x80, 0x39, 0xaf, 0x43, 0x3d, 0xf0, 0x9c, 0x9d, 0xf4, 0xb4, 0x93,
0x20, 0x8e, 0xe1, 0x93, 0xc3, 0x18, 0x43, 0x86, 0xba, 0x93, 0xa0, 0x89, 0x05, 0x9c, 0x4f, 0x24,
0x9b, 0xf2, 0x24, 0xd9, 0xf4, 0x60, 0x4d, 0x66, 0x8d, 0x9f, 0xb2, 0x68, 0xcc, 0x5f, 0x82, 0x15,
0x6e, 0x6d, 0xf9, 0x30, 0x1f, 0x51, 0x12, 0xce, 0x68, 0x71, 0xce, 0x41, 0x2d, 0xea, 0x39, 0xaa,
0xad, 0x1d, 0x01, 0xcc, 0x3b, 0xb0, 0x9c, 0x19, 0xeb, 0x09, 0x67, 0x74, 0xf9, 0x22, 0x54, 0xa3,
0x5a, 0x61, 0x54, 0x81, 0xe2, 0x0d, 0xcf, 0x6b, 0xcd, 0xa1, 0x06, 0x54, 0xb7, 0x55, 0x41, 0x6c,
0xcb, 0xb8, 0xfc, 0x73, 0xb0, 0x98, 0xc9, 0x29, 0xa3, 0x2a, 0xcc, 0xdf, 0x0f, 0x7c, 0xd2, 0x9a,
0x43, 0x2d, 0x68, 0xdc, 0x74, 0x7d, 0x1c, 0x1e, 0xc9, 0x88, 0x6b, 0xcb, 0x41, 0x8b, 0x50, 0x17,
0x91, 0x47, 0x05, 0x20, 0x9b, 0x7f, 0x7a, 0x09, 0x9a, 0xf7, 0x04, 0x23, 0xbb, 0x24, 0x7c, 0xe4,
0xda, 0x04, 0x75, 0xa1, 0x95, 0x7d, 0x90, 0x8d, 0xbe, 0xa4, 0xf7, 0x2e, 0xf5, 0xef, 0xb6, 0x3b,
0x93, 0x64, 0x68, 0xce, 0xa1, 0x8f, 0x61, 0x21, 0xfd, 0xac, 0x19, 0xe9, 0x43, 0x63, 0xda, 0xb7,
0xcf, 0xc7, 0x75, 0xde, 0x85, 0x66, 0xea, 0x95, 0x32, 0x7a, 0x4d, 0xdb, 0xb7, 0xee, 0x25, 0x73,
0x47, 0x6f, 0x7b, 0x93, 0x2f, 0x89, 0x25, 0xf7, 0xe9, 0xa7, 0x84, 0x39, 0xdc, 0x6b, 0xdf, 0x1b,
0x1e, 0xc7, 0x3d, 0x86, 0x33, 0x63, 0x4f, 0xfe, 0xd0, 0xeb, 0x39, 0xa7, 0x99, 0xfe, 0x69, 0xe0,
0x71, 0x43, 0x1c, 0x02, 0x1a, 0x7f, 0x8d, 0x8b, 0xae, 0xea, 0x57, 0x20, 0xef, 0x2d, 0x72, 0xe7,
0xda, 0xd4, 0xf8, 0xb1, 0xe0, 0x7e, 0xc5, 0x80, 0xb5, 0x9c, 0x77, 0x7a, 0xe8, 0xba, 0xb6, 0xbb,
0xc9, 0x8f, 0x0d, 0x3b, 0x6f, 0x9e, 0x8c, 0x28, 0x66, 0xc4, 0x87, 0xc5, 0xcc, 0xd3, 0x35, 0x74,
0x25, 0xb7, 0x4e, 0x7f, 0xfc, 0x0d, 0x5f, 0xe7, 0x4b, 0xd3, 0x21, 0xc7, 0xe3, 0x3d, 0x80, 0xc5,
0xcc, 0x7b, 0xaf, 0x9c, 0xf1, 0xf4, 0xaf, 0xc2, 0x8e, 0x5b, 0xd0, 0x6f, 0x43, 0x33, 0xf5, 0x30,
0x2b, 0x47, 0xe3, 0x75, 0x8f, 0xb7, 0x8e, 0xeb, 0xfa, 0x01, 0x34, 0x92, 0xef, 0xa7, 0xd0, 0x46,
0xde, 0x5e, 0x1a, 0xeb, 0xf8, 0x24, 0x5b, 0x69, 0xf4, 0xee, 0x61, 0xc2, 0x56, 0x1a, 0x7b, 0x2a,
0x32, 0xfd, 0x56, 0x4a, 0xf4, 0x3f, 0x71, 0x2b, 0x9d, 0x78, 0x88, 0xef, 0xc9, 0x3b, 0x8d, 0xe6,
0x5d, 0x0d, 0xda, 0xcc, 0xd3, 0xcd, 0xfc, 0x17, 0x44, 0x9d, 0xeb, 0x27, 0xa2, 0x89, 0xa5, 0xf8,
0x10, 0x16, 0xd2, 0xaf, 0x47, 0x72, 0xa4, 0xa8, 0x7d, 0x70, 0xd3, 0xb9, 0x32, 0x15, 0x6e, 0x3c,
0xd8, 0x47, 0x50, 0x4f, 0xfc, 0xc7, 0x0a, 0x7a, 0x75, 0x82, 0x1e, 0x27, 0xff, 0x70, 0xe4, 0x38,
0x49, 0x7e, 0x03, 0x6a, 0xf1, 0x5f, 0xa3, 0xa0, 0x4b, 0xb9, 0xfa, 0x7b, 0x92, 0x2e, 0x77, 0x01,
0x46, 0xff, 0x7b, 0x82, 0x5e, 0xd1, 0xf6, 0x39, 0xf6, 0xc7, 0x28, 0xc7, 0x75, 0x1a, 0x4f, 0x5f,
0x16, 0xe5, 0x4d, 0x9a, 0x7e, 0xb2, 0x8a, 0xf4, 0xb8, 0x6e, 0x0f, 0xa0, 0x99, 0xaa, 0xfd, 0xce,
0xdb, 0xc2, 0x9a, 0x92, 0xfc, 0xce, 0xe5, 0x69, 0x50, 0xe3, 0xf5, 0x3b, 0x80, 0x66, 0xaa, 0x12,
0x37, 0x67, 0x24, 0x5d, 0xe1, 0x71, 0xce, 0x48, 0xda, 0xc2, 0x5e, 0x73, 0x0e, 0x7d, 0x37, 0x51,
0xf4, 0x9b, 0x2a, 0xac, 0x46, 0x6f, 0x4c, 0xec, 0x47, 0x57, 0x57, 0xde, 0xd9, 0x3c, 0x09, 0x49,
0xcc, 0x82, 0xd2, 0x2a, 0x29, 0xd2, 0x7c, 0xad, 0x3a, 0xc9, 0x4a, 0xed, 0x42, 0x59, 0xd6, 0xd6,
0x22, 0x33, 0xa7, 0x8a, 0x3e, 0x51, 0x78, 0xdb, 0x79, 0x49, 0x8b, 0x93, 0x2e, 0x3b, 0x95, 0x9d,
0x4a, 0x2f, 0x38, 0xa7, 0xd3, 0x54, 0x61, 0xe5, 0xb4, 0x9d, 0x5a, 0x50, 0x96, 0x45, 0x53, 0x39,
0x9d, 0xa6, 0x0a, 0xff, 0x3a, 0x93, 0x71, 0x44, 0x36, 0xdd, 0x9c, 0x43, 0x3b, 0x50, 0x12, 0xa1,
0x3a, 0x74, 0x71, 0x52, 0x3d, 0xd1, 0xa4, 0x1e, 0x53, 0x25, 0x47, 0xe6, 0x1c, 0xfa, 0x05, 0x28,
0x89, 0x04, 0x55, 0x4e, 0x8f, 0xc9, 0xa2, 0xa0, 0xce, 0x44, 0x94, 0x88, 0x45, 0x07, 0x1a, 0xc9,
0x4a, 0x80, 0x9c, 0x23, 0x4b, 0x53, 0x2b, 0xd1, 0x99, 0x06, 0x33, 0x1a, 0x45, 0x6e, 0xa3, 0x51,
0xd8, 0x32, 0x7f, 0x1b, 0x8d, 0x85, 0x44, 0xf3, 0xb7, 0xd1, 0x78, 0x14, 0xd4, 0x9c, 0x43, 0xbf,
0x6e, 0x40, 0x3b, 0x2f, 0x3d, 0x8d, 0x72, 0x3d, 0xa0, 0x49, 0x39, 0xf6, 0xce, 0x57, 0x4e, 0x48,
0x15, 0xf3, 0xf2, 0x89, 0x08, 0xda, 0x8c, 0x25, 0xa4, 0xaf, 0xe5, 0xf5, 0x97, 0x93, 0x7e, 0xed,
0x7c, 0x79, 0x7a, 0x82, 0x78, 0xec, 0x3d, 0xa8, 0x27, 0x02, 0x46, 0x39, 0x96, 0x77, 0x3c, 0xd2,
0x95, 0xb3, 0xaa, 0x9a, 0xd8, 0x93, 0x54, 0x6f, 0x91, 0xdf, 0xcc, 0x51, 0xc6, 0x64, 0xba, 0x34,
0x47, 0xbd, 0x53, 0xe9, 0x51, 0x73, 0x0e, 0x11, 0x68, 0x24, 0x93, 0x9d, 0x39, 0xda, 0xa8, 0xc9,
0x93, 0x76, 0x5e, 0x9b, 0x02, 0x33, 0x1e, 0xa6, 0x0b, 0x30, 0x4a, 0x36, 0xe6, 0x9c, 0x75, 0x63,
0xf9, 0xce, 0xce, 0xab, 0xc7, 0xe2, 0x25, 0x8f, 0xfd, 0x44, 0xfa, 0x30, 0x47, 0xfa, 0xe3, 0x09,
0xc6, 0x29, 0xee, 0x22, 0xe3, 0x29, 0xaa, 0x9c, 0xbb, 0x48, 0x6e, 0x36, 0xac, 0x73, 0x6d, 0x6a,
0xfc, 0x78, 0x3e, 0xdf, 0x81, 0x56, 0x36, 0xa5, 0x97, 0x73, 0xc7, 0xcd, 0x49, 0x2c, 0x76, 0x5e,
0x9f, 0x12, 0x3b, 0x79, 0x1e, 0x9e, 0x1d, 0xe7, 0xe9, 0x5b, 0x2e, 0x3b, 0x10, 0xd9, 0xa4, 0x69,
0x66, 0x9d, 0x4c, 0x5c, 0x4d, 0x33, 0xeb, 0x54, 0x9a, 0x4a, 0x1d, 0x5e, 0x22, 0xdc, 0x9c, 0x77,
0x78, 0x25, 0x13, 0x24, 0x39, 0xe7, 0x4c, 0x3a, 0x9d, 0x20, 0xdd, 0xcf, 0x74, 0x5c, 0x1f, 0xe5,
0xfb, 0x09, 0x63, 0xa9, 0x82, 0x1c, 0xf7, 0x53, 0x9f, 0x28, 0x90, 0x57, 0xb7, 0x4c, 0xd0, 0x3c,
0xe7, 0x2a, 0xa5, 0x0f, 0xba, 0xe7, 0x5c, 0xdd, 0x72, 0xe2, 0xf0, 0x62, 0x63, 0xb5, 0xb2, 0xe1,
0xca, 0xc9, 0xb1, 0x90, 0x6c, 0x18, 0xeb, 0xf8, 0x70, 0x45, 0x2b, 0x1b, 0x1b, 0xcc, 0x19, 0x20,
0x27, 0x84, 0x38, 0xc5, 0x00, 0xd9, 0x08, 0x5b, 0xce, 0x00, 0x39, 0x81, 0xb8, 0x29, 0x7c, 0xd7,
0x54, 0xb4, 0x2b, 0xe7, 0x28, 0xd4, 0x45, 0xc4, 0x72, 0x8e, 0x42, 0x6d, 0xa0, 0xce, 0x9c, 0xdb,
0x1c, 0x42, 0x63, 0x27, 0x0c, 0x1e, 0x1f, 0x45, 0x81, 0xaa, 0x2f, 0xc6, 0xb8, 0xde, 0xfc, 0x16,
0x2c, 0xb8, 0x31, 0x4e, 0x2f, 0x1c, 0xd8, 0x37, 0xeb, 0x32, 0x60, 0xb6, 0xc3, 0x89, 0x77, 0x8c,
0x5f, 0xbc, 0xde, 0x73, 0xd9, 0xc1, 0x70, 0x8f, 0x4b, 0xe6, 0x9a, 0x44, 0x7b, 0xdd, 0x0d, 0xd4,
0xaf, 0x6b, 0xae, 0xcf, 0x48, 0xe8, 0x63, 0xef, 0x9a, 0x18, 0x4a, 0x41, 0x07, 0x7b, 0x7f, 0x60,
0x18, 0x7b, 0x65, 0x01, 0xba, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x03, 0xad, 0x2f, 0x91,
0xf8, 0x52, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -6177,6 +6260,7 @@ type MilvusServiceClient interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
Import(ctx context.Context, in *ImportRequest, opts ...grpc.CallOption) (*ImportResponse, error)
GetImportState(ctx context.Context, in *GetImportStateRequest, opts ...grpc.CallOption) (*GetImportStateResponse, error)
ListImportTasks(ctx context.Context, in *ListImportTasksRequest, opts ...grpc.CallOption) (*ListImportTasksResponse, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
CreateCredential(ctx context.Context, in *CreateCredentialRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
UpdateCredential(ctx context.Context, in *UpdateCredentialRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
@ -6570,6 +6654,15 @@ func (c *milvusServiceClient) GetImportState(ctx context.Context, in *GetImportS
return out, nil
}
func (c *milvusServiceClient) ListImportTasks(ctx context.Context, in *ListImportTasksRequest, opts ...grpc.CallOption) (*ListImportTasksResponse, error) {
out := new(ListImportTasksResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/ListImportTasks", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *milvusServiceClient) CreateCredential(ctx context.Context, in *CreateCredentialRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
out := new(commonpb.Status)
err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/CreateCredential", in, out, opts...)
@ -6653,6 +6746,7 @@ type MilvusServiceServer interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
Import(context.Context, *ImportRequest) (*ImportResponse, error)
GetImportState(context.Context, *GetImportStateRequest) (*GetImportStateResponse, error)
ListImportTasks(context.Context, *ListImportTasksRequest) (*ListImportTasksResponse, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
CreateCredential(context.Context, *CreateCredentialRequest) (*commonpb.Status, error)
UpdateCredential(context.Context, *UpdateCredentialRequest) (*commonpb.Status, error)
@ -6790,6 +6884,9 @@ func (*UnimplementedMilvusServiceServer) Import(ctx context.Context, req *Import
func (*UnimplementedMilvusServiceServer) GetImportState(ctx context.Context, req *GetImportStateRequest) (*GetImportStateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetImportState not implemented")
}
func (*UnimplementedMilvusServiceServer) ListImportTasks(ctx context.Context, req *ListImportTasksRequest) (*ListImportTasksResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListImportTasks not implemented")
}
func (*UnimplementedMilvusServiceServer) CreateCredential(ctx context.Context, req *CreateCredentialRequest) (*commonpb.Status, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateCredential not implemented")
}
@ -7563,6 +7660,24 @@ func _MilvusService_GetImportState_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler)
}
func _MilvusService_ListImportTasks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListImportTasksRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MilvusServiceServer).ListImportTasks(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.milvus.MilvusService/ListImportTasks",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MilvusServiceServer).ListImportTasks(ctx, req.(*ListImportTasksRequest))
}
return interceptor(ctx, in, info, handler)
}
func _MilvusService_CreateCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateCredentialRequest)
if err := dec(in); err != nil {
@ -7807,6 +7922,10 @@ var _MilvusService_serviceDesc = grpc.ServiceDesc{
MethodName: "GetImportState",
Handler: _MilvusService_GetImportState_Handler,
},
{
MethodName: "ListImportTasks",
Handler: _MilvusService_ListImportTasks_Handler,
},
{
MethodName: "CreateCredential",
Handler: _MilvusService_CreateCredential_Handler,

View File

@ -111,6 +111,7 @@ service RootCoord {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
rpc Import(milvus.ImportRequest) returns (milvus.ImportResponse) {}
rpc GetImportState(milvus.GetImportStateRequest) returns (milvus.GetImportStateResponse) {}
rpc ListImportTasks(milvus.ListImportTasksRequest) returns (milvus.ListImportTasksResponse) {}
rpc ReportImport(ImportResult) returns (common.Status) {}
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication

View File

@ -675,96 +675,97 @@ func init() {
func init() { proto.RegisterFile("root_coord.proto", fileDescriptor_4513485a144f6b06) }
var fileDescriptor_4513485a144f6b06 = []byte{
// 1420 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0xd3, 0x46,
0x14, 0xc6, 0x36, 0xb9, 0xf8, 0xd8, 0x89, 0xc3, 0x0e, 0x01, 0xd7, 0x30, 0xad, 0x71, 0x5b, 0x70,
0xb8, 0x38, 0x4c, 0x98, 0xa1, 0x94, 0x37, 0x12, 0x53, 0xf0, 0x94, 0xcc, 0x80, 0x0c, 0x1d, 0x7a,
0x61, 0xd4, 0xb5, 0x75, 0x70, 0x34, 0x91, 0xb5, 0x46, 0xbb, 0x26, 0xc9, 0x63, 0x67, 0xfa, 0xde,
0x7f, 0xd4, 0x87, 0xf6, 0xa7, 0xf4, 0x8f, 0x74, 0x56, 0x2b, 0xad, 0x25, 0x59, 0x72, 0x14, 0xc2,
0x9b, 0x76, 0xf5, 0xe9, 0xfb, 0xce, 0x65, 0xf7, 0xec, 0x59, 0xc1, 0x86, 0xc7, 0x98, 0x30, 0x87,
0x8c, 0x79, 0x56, 0x67, 0xe2, 0x31, 0xc1, 0xc8, 0x95, 0xb1, 0xed, 0x7c, 0x9c, 0x72, 0x35, 0xea,
0xc8, 0xd7, 0xfe, 0xdb, 0x46, 0x75, 0xc8, 0xc6, 0x63, 0xe6, 0xaa, 0xf9, 0x46, 0x35, 0x8a, 0x6a,
0xac, 0xdb, 0xae, 0x40, 0xcf, 0xa5, 0x4e, 0x30, 0xae, 0x4c, 0x3c, 0x76, 0x7c, 0x12, 0x0c, 0x36,
0x2c, 0x2a, 0x68, 0x54, 0xa2, 0x51, 0x43, 0x31, 0xb4, 0xcc, 0x31, 0x0a, 0xaa, 0x26, 0x5a, 0x26,
0x6c, 0x3e, 0x71, 0x1c, 0x36, 0x7c, 0x6d, 0x8f, 0x91, 0x0b, 0x3a, 0x9e, 0x18, 0xf8, 0x61, 0x8a,
0x5c, 0x90, 0xfb, 0x70, 0x71, 0x40, 0x39, 0xd6, 0x0b, 0xcd, 0x42, 0xbb, 0xb2, 0x73, 0xbd, 0x13,
0xb3, 0x2d, 0x30, 0x68, 0x9f, 0x8f, 0x76, 0x29, 0x47, 0xc3, 0x47, 0x92, 0xcb, 0xb0, 0x34, 0x64,
0x53, 0x57, 0xd4, 0x4b, 0xcd, 0x42, 0x7b, 0xcd, 0x50, 0x83, 0xd6, 0x1f, 0x05, 0xb8, 0x92, 0x54,
0xe0, 0x13, 0xe6, 0x72, 0x24, 0x0f, 0x60, 0x99, 0x0b, 0x2a, 0xa6, 0x3c, 0x10, 0xb9, 0x96, 0x2a,
0xd2, 0xf7, 0x21, 0x46, 0x00, 0x25, 0xd7, 0xa1, 0x2c, 0x42, 0xa6, 0x7a, 0xb1, 0x59, 0x68, 0x5f,
0x34, 0x66, 0x13, 0x19, 0x36, 0xbc, 0x85, 0x75, 0xdf, 0x84, 0x5e, 0xf7, 0x33, 0x78, 0x57, 0x8c,
0x32, 0x3b, 0x50, 0xd3, 0xcc, 0xe7, 0xf1, 0x6a, 0x1d, 0x8a, 0xbd, 0xae, 0x4f, 0x5d, 0x32, 0x8a,
0xbd, 0x6e, 0x86, 0x1f, 0xff, 0x14, 0xa1, 0xda, 0x1b, 0x4f, 0x98, 0x27, 0x0c, 0xe4, 0x53, 0x47,
0x7c, 0x9a, 0xd6, 0x55, 0x58, 0x11, 0x94, 0x1f, 0x9a, 0xb6, 0x15, 0x08, 0x2e, 0xcb, 0x61, 0xcf,
0x22, 0x5f, 0x41, 0x45, 0x2e, 0x18, 0x97, 0x59, 0x28, 0x5f, 0x96, 0xfc, 0x97, 0x10, 0x4e, 0xf5,
0x2c, 0xf2, 0x10, 0x96, 0x24, 0x07, 0xd6, 0x2f, 0x36, 0x0b, 0xed, 0xf5, 0x9d, 0x66, 0xaa, 0x9a,
0x32, 0x50, 0x6a, 0xa2, 0xa1, 0xe0, 0xa4, 0x01, 0xab, 0x1c, 0x47, 0x63, 0x74, 0x05, 0xaf, 0x2f,
0x35, 0x4b, 0xed, 0x92, 0xa1, 0xc7, 0xe4, 0x0b, 0x58, 0xa5, 0x53, 0xc1, 0x4c, 0xdb, 0xe2, 0xf5,
0x65, 0xff, 0xdd, 0x8a, 0x1c, 0xf7, 0x2c, 0x4e, 0xae, 0x41, 0xd9, 0x63, 0x47, 0xa6, 0x0a, 0xc4,
0x8a, 0x6f, 0xcd, 0xaa, 0xc7, 0x8e, 0xf6, 0xe4, 0x98, 0x7c, 0x07, 0x4b, 0xb6, 0xfb, 0x9e, 0xf1,
0xfa, 0x6a, 0xb3, 0xd4, 0xae, 0xec, 0xdc, 0x48, 0xb5, 0xe5, 0x47, 0x3c, 0xf9, 0x89, 0x3a, 0x53,
0x7c, 0x49, 0x6d, 0xcf, 0x50, 0xf8, 0xd6, 0x5f, 0x05, 0xb8, 0xda, 0x45, 0x3e, 0xf4, 0xec, 0x01,
0xf6, 0x03, 0x2b, 0x3e, 0x7d, 0x59, 0xb4, 0xa0, 0x3a, 0x64, 0x8e, 0x83, 0x43, 0x61, 0x33, 0x57,
0xa7, 0x30, 0x36, 0x47, 0xbe, 0x04, 0x08, 0xdc, 0xed, 0x75, 0x79, 0xbd, 0xe4, 0x3b, 0x19, 0x99,
0x69, 0x4d, 0xa1, 0x16, 0x18, 0x22, 0x89, 0x7b, 0xee, 0x7b, 0x36, 0x47, 0x5b, 0x48, 0xa1, 0x6d,
0x42, 0x65, 0x42, 0x3d, 0x61, 0xc7, 0x94, 0xa3, 0x53, 0x72, 0xaf, 0x68, 0x99, 0x20, 0x9d, 0xb3,
0x89, 0xd6, 0x7f, 0x45, 0xa8, 0x06, 0xba, 0x52, 0x93, 0x93, 0x2e, 0x94, 0xa5, 0x4f, 0xa6, 0x8c,
0x53, 0x10, 0x82, 0x5b, 0x9d, 0xf4, 0x9a, 0xd4, 0x49, 0x18, 0x6c, 0xac, 0x0e, 0x42, 0xd3, 0xbb,
0x50, 0xb1, 0x5d, 0x0b, 0x8f, 0x4d, 0x95, 0x9e, 0xa2, 0x9f, 0x9e, 0xaf, 0xe3, 0x3c, 0xb2, 0x0a,
0x75, 0xb4, 0xb6, 0x85, 0xc7, 0x3e, 0x07, 0xd8, 0xe1, 0x23, 0x27, 0x08, 0x97, 0xf0, 0x58, 0x78,
0xd4, 0x8c, 0x72, 0x95, 0x7c, 0xae, 0xef, 0x4f, 0xb1, 0xc9, 0x27, 0xe8, 0x3c, 0x95, 0x5f, 0x6b,
0x6e, 0xfe, 0xd4, 0x15, 0xde, 0x89, 0x51, 0xc3, 0xf8, 0x6c, 0xe3, 0x77, 0xb8, 0x9c, 0x06, 0x24,
0x1b, 0x50, 0x3a, 0xc4, 0x93, 0x20, 0xec, 0xf2, 0x91, 0xec, 0xc0, 0xd2, 0x47, 0xb9, 0x94, 0xfc,
0x38, 0xcf, 0xad, 0x0d, 0xdf, 0xa1, 0x99, 0x27, 0x0a, 0xfa, 0xb8, 0xf8, 0xa8, 0xd0, 0xfa, 0xb7,
0x08, 0xf5, 0xf9, 0xe5, 0x76, 0x9e, 0x5a, 0x91, 0x67, 0xc9, 0x8d, 0x60, 0x2d, 0x48, 0x74, 0x2c,
0x74, 0xbb, 0x59, 0xa1, 0xcb, 0xb2, 0x30, 0x16, 0x53, 0x15, 0xc3, 0x2a, 0x8f, 0x4c, 0x35, 0x10,
0x2e, 0xcd, 0x41, 0x52, 0xa2, 0xf7, 0x38, 0x1e, 0xbd, 0x6f, 0xf2, 0xa4, 0x30, 0x1a, 0x45, 0x0b,
0x2e, 0x3f, 0x43, 0xb1, 0xe7, 0xa1, 0x85, 0xae, 0xb0, 0xa9, 0xf3, 0xe9, 0x1b, 0xb6, 0x01, 0xab,
0x53, 0x2e, 0x4f, 0xcc, 0xb1, 0x32, 0xa6, 0x6c, 0xe8, 0x71, 0xeb, 0xcf, 0x02, 0x6c, 0x26, 0x64,
0xce, 0x93, 0xa8, 0x05, 0x52, 0xf2, 0xdd, 0x84, 0x72, 0x7e, 0xc4, 0x3c, 0x55, 0x68, 0xcb, 0x86,
0x1e, 0xef, 0xfc, 0x7d, 0x0d, 0xca, 0x06, 0x63, 0x62, 0x4f, 0x86, 0x84, 0x4c, 0x80, 0x48, 0x9b,
0xd8, 0x78, 0xc2, 0x5c, 0x74, 0x55, 0x61, 0xe5, 0xe4, 0x7e, 0xdc, 0x00, 0xdd, 0x05, 0xcc, 0x43,
0x83, 0x50, 0x35, 0x6e, 0x66, 0x7c, 0x91, 0x80, 0xb7, 0x2e, 0x90, 0xb1, 0xaf, 0x28, 0xcf, 0xeb,
0xd7, 0xf6, 0xf0, 0x70, 0xef, 0x80, 0xba, 0x2e, 0x3a, 0x8b, 0x14, 0x13, 0xd0, 0x50, 0x31, 0xb1,
0xe9, 0x83, 0x41, 0x5f, 0x78, 0xb6, 0x3b, 0x0a, 0x23, 0xdb, 0xba, 0x40, 0x3e, 0xf8, 0xb9, 0x95,
0xea, 0x36, 0x17, 0xf6, 0x90, 0x87, 0x82, 0x3b, 0xd9, 0x82, 0x73, 0xe0, 0x33, 0x4a, 0x9a, 0xb0,
0xb1, 0xe7, 0x21, 0x15, 0xb8, 0xa7, 0x37, 0x0d, 0xb9, 0x9b, 0xfa, 0x69, 0x12, 0x16, 0x0a, 0x2d,
0x5a, 0x00, 0xad, 0x0b, 0xe4, 0x57, 0x58, 0xef, 0x7a, 0x6c, 0x12, 0xa1, 0xbf, 0x9d, 0x4a, 0x1f,
0x07, 0xe5, 0x24, 0x37, 0x61, 0xed, 0x39, 0xe5, 0x11, 0xee, 0xad, 0x54, 0xee, 0x18, 0x26, 0xa4,
0xbe, 0x91, 0x0a, 0xdd, 0x65, 0xcc, 0x89, 0x84, 0xe7, 0x08, 0x48, 0x58, 0x10, 0x22, 0x2a, 0x9d,
0x74, 0x0f, 0xe6, 0x80, 0xa1, 0xd4, 0x76, 0x6e, 0xbc, 0x16, 0x7e, 0x03, 0x15, 0x15, 0xf0, 0x27,
0x8e, 0x4d, 0x39, 0xb9, 0xb5, 0x20, 0x25, 0x3e, 0x22, 0x67, 0xc0, 0x5e, 0x41, 0x59, 0x06, 0x5a,
0x91, 0x7e, 0x9b, 0x99, 0x88, 0xb3, 0x50, 0xf6, 0x01, 0x9e, 0x38, 0x02, 0x3d, 0xc5, 0x79, 0x33,
0x95, 0x73, 0x06, 0xc8, 0x49, 0xea, 0x42, 0xad, 0x7f, 0x20, 0x1b, 0x9c, 0x30, 0x34, 0x9c, 0xdc,
0x49, 0x5f, 0xd0, 0x71, 0x54, 0x48, 0x7f, 0x37, 0x1f, 0x58, 0x87, 0xfb, 0x1d, 0xd4, 0x54, 0x30,
0x5f, 0x86, 0x4d, 0x43, 0x86, 0x5e, 0x02, 0x95, 0xd3, 0x9d, 0x9f, 0x61, 0x4d, 0x86, 0x75, 0x46,
0xbe, 0x95, 0x19, 0xfa, 0xb3, 0x52, 0xbf, 0x83, 0xea, 0x73, 0xca, 0x67, 0xcc, 0xed, 0xac, 0x1d,
0x30, 0x47, 0x9c, 0x6b, 0x03, 0x1c, 0xc2, 0xba, 0x8c, 0x9a, 0xfe, 0x98, 0x67, 0x6c, 0xdf, 0x38,
0x28, 0x94, 0xb8, 0x93, 0x0b, 0xab, 0xc5, 0x5c, 0xa8, 0x25, 0x8e, 0xdf, 0x8c, 0x2c, 0x24, 0x50,
0x8b, 0xb3, 0x3e, 0x07, 0xd6, 0x7a, 0x08, 0x55, 0x69, 0x4b, 0x78, 0xd4, 0x67, 0xc4, 0x2e, 0x0a,
0x09, 0x95, 0xb6, 0x72, 0x20, 0x23, 0x45, 0x64, 0x23, 0xd9, 0x55, 0x90, 0xed, 0xfc, 0xfd, 0x87,
0x52, 0xbc, 0x7f, 0xd6, 0x86, 0x25, 0x5a, 0x44, 0xfc, 0x7e, 0x6c, 0x61, 0x11, 0xf1, 0x11, 0x39,
0x97, 0xdc, 0x01, 0xac, 0x85, 0xa2, 0x8a, 0x78, 0x6b, 0x61, 0xdc, 0x63, 0xd4, 0xb7, 0xf3, 0x40,
0xb5, 0x03, 0x41, 0xb9, 0x52, 0x2a, 0xd9, 0xe5, 0xea, 0x2c, 0xc6, 0x7f, 0x08, 0x6e, 0xc0, 0xfa,
0x12, 0x4e, 0xee, 0x65, 0x45, 0x36, 0xf5, 0x77, 0x40, 0xa3, 0x93, 0x17, 0xae, 0xbd, 0xf8, 0x0d,
0x56, 0x82, 0xab, 0x71, 0xb2, 0x3c, 0x26, 0x3e, 0xd6, 0xb7, 0xf2, 0xc6, 0xad, 0x53, 0x71, 0x9a,
0x9d, 0xc2, 0xe6, 0x9b, 0x89, 0x25, 0x8f, 0x66, 0xd5, 0x00, 0x84, 0x2d, 0x48, 0x32, 0x2b, 0xb3,
0x36, 0x27, 0x8e, 0xdb, 0xe7, 0xa3, 0xd3, 0x62, 0xe6, 0xc0, 0x55, 0x03, 0x1d, 0xa4, 0x1c, 0xbb,
0xaf, 0x5e, 0xec, 0x23, 0xe7, 0x74, 0x84, 0x7d, 0xe1, 0x21, 0x1d, 0x27, 0x5b, 0x13, 0xf5, 0xcf,
0x25, 0x03, 0x9c, 0x33, 0x43, 0x43, 0xd8, 0x0c, 0xd6, 0xf2, 0x0f, 0xce, 0x94, 0x1f, 0xc8, 0xae,
0xcc, 0x41, 0x81, 0x56, 0xb2, 0x16, 0xc8, 0xeb, 0x78, 0x27, 0x15, 0x99, 0xc3, 0x25, 0x13, 0xe0,
0x19, 0x8a, 0x7d, 0x14, 0x9e, 0x3d, 0xcc, 0x3a, 0xb5, 0x66, 0x80, 0x8c, 0xb4, 0xa4, 0xe0, 0x74,
0x5a, 0xfa, 0xb0, 0xac, 0xee, 0xff, 0xa4, 0x95, 0xfa, 0x51, 0xf8, 0xf7, 0x62, 0x51, 0xb7, 0xa6,
0xff, 0x70, 0x44, 0xaa, 0xf1, 0x33, 0x14, 0x91, 0xff, 0x0a, 0x19, 0xd5, 0x38, 0x0e, 0x5a, 0x5c,
0x8d, 0x93, 0xd8, 0x88, 0x07, 0x55, 0x03, 0xe5, 0x8b, 0xc0, 0x8f, 0xcc, 0xab, 0x4a, 0xf4, 0x47,
0xcc, 0x69, 0x71, 0x7f, 0xab, 0xfb, 0x4d, 0x7d, 0xb5, 0x48, 0x6e, 0xec, 0xd9, 0x42, 0xd5, 0x10,
0x79, 0x0b, 0xca, 0xc1, 0x1c, 0xec, 0x83, 0xcf, 0xcd, 0x6c, 0xca, 0xfa, 0x2d, 0x17, 0x56, 0x84,
0x39, 0xeb, 0xa8, 0x89, 0xc3, 0xf2, 0x17, 0xd4, 0x17, 0x36, 0xf7, 0x6f, 0x5b, 0x6f, 0x38, 0x7a,
0x3c, 0xa3, 0xa0, 0xc6, 0x30, 0x8b, 0x0b, 0x6a, 0x02, 0x1a, 0x39, 0x61, 0xd7, 0x62, 0xd7, 0xba,
0xa4, 0x1f, 0xb3, 0xa4, 0xa6, 0x5d, 0x32, 0x1b, 0xf7, 0x72, 0xa2, 0x43, 0xbd, 0xdd, 0x47, 0xbf,
0x3c, 0x1c, 0xd9, 0xe2, 0x60, 0x3a, 0x90, 0x3e, 0x6f, 0xab, 0x8f, 0xef, 0xd9, 0x2c, 0x78, 0xda,
0x0e, 0x13, 0xb2, 0xed, 0xf3, 0x6d, 0x6b, 0xbe, 0xc9, 0x60, 0xb0, 0xec, 0x4f, 0x3d, 0xf8, 0x3f,
0x00, 0x00, 0xff, 0xff, 0x3d, 0xc9, 0x68, 0x0c, 0x1d, 0x16, 0x00, 0x00,
// 1440 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x72, 0xd3, 0x46,
0x14, 0xc6, 0x36, 0xf9, 0xf1, 0xb1, 0x13, 0x87, 0x1d, 0x02, 0xae, 0x61, 0x5a, 0xe3, 0xb6, 0xe0,
0xf0, 0xe3, 0x30, 0x61, 0x86, 0x52, 0xee, 0x48, 0x4c, 0xc1, 0x53, 0x32, 0x03, 0x32, 0x74, 0xe8,
0x0f, 0xa3, 0xae, 0xad, 0x83, 0xa3, 0x89, 0xac, 0x35, 0xda, 0x35, 0x49, 0x2e, 0x3b, 0xd3, 0xfb,
0xbe, 0x49, 0x1f, 0xa2, 0x7d, 0x94, 0xbe, 0x48, 0x67, 0xb5, 0xd2, 0x5a, 0x92, 0x25, 0x47, 0x21,
0xdc, 0x69, 0x57, 0x9f, 0xbe, 0xef, 0xec, 0x77, 0x76, 0xcf, 0xee, 0x0a, 0x36, 0x3c, 0xc6, 0x84,
0x39, 0x64, 0xcc, 0xb3, 0x3a, 0x13, 0x8f, 0x09, 0x46, 0xae, 0x8c, 0x6d, 0xe7, 0xe3, 0x94, 0xab,
0x56, 0x47, 0xbe, 0xf6, 0xdf, 0x36, 0xaa, 0x43, 0x36, 0x1e, 0x33, 0x57, 0xf5, 0x37, 0xaa, 0x51,
0x54, 0x63, 0xdd, 0x76, 0x05, 0x7a, 0x2e, 0x75, 0x82, 0x76, 0x65, 0xe2, 0xb1, 0xe3, 0x93, 0xa0,
0xb1, 0x61, 0x51, 0x41, 0xa3, 0x12, 0x8d, 0x1a, 0x8a, 0xa1, 0x65, 0x8e, 0x51, 0x50, 0xd5, 0xd1,
0x32, 0x61, 0xf3, 0x89, 0xe3, 0xb0, 0xe1, 0x6b, 0x7b, 0x8c, 0x5c, 0xd0, 0xf1, 0xc4, 0xc0, 0x0f,
0x53, 0xe4, 0x82, 0xdc, 0x87, 0x8b, 0x03, 0xca, 0xb1, 0x5e, 0x68, 0x16, 0xda, 0x95, 0x9d, 0xeb,
0x9d, 0x58, 0x6c, 0x41, 0x40, 0xfb, 0x7c, 0xb4, 0x4b, 0x39, 0x1a, 0x3e, 0x92, 0x5c, 0x86, 0xa5,
0x21, 0x9b, 0xba, 0xa2, 0x5e, 0x6a, 0x16, 0xda, 0x6b, 0x86, 0x6a, 0xb4, 0xfe, 0x28, 0xc0, 0x95,
0xa4, 0x02, 0x9f, 0x30, 0x97, 0x23, 0x79, 0x00, 0xcb, 0x5c, 0x50, 0x31, 0xe5, 0x81, 0xc8, 0xb5,
0x54, 0x91, 0xbe, 0x0f, 0x31, 0x02, 0x28, 0xb9, 0x0e, 0x65, 0x11, 0x32, 0xd5, 0x8b, 0xcd, 0x42,
0xfb, 0xa2, 0x31, 0xeb, 0xc8, 0x88, 0xe1, 0x2d, 0xac, 0xfb, 0x21, 0xf4, 0xba, 0x9f, 0x61, 0x74,
0xc5, 0x28, 0xb3, 0x03, 0x35, 0xcd, 0x7c, 0x9e, 0x51, 0xad, 0x43, 0xb1, 0xd7, 0xf5, 0xa9, 0x4b,
0x46, 0xb1, 0xd7, 0xcd, 0x18, 0xc7, 0x3f, 0x45, 0xa8, 0xf6, 0xc6, 0x13, 0xe6, 0x09, 0x03, 0xf9,
0xd4, 0x11, 0x9f, 0xa6, 0x75, 0x15, 0x56, 0x04, 0xe5, 0x87, 0xa6, 0x6d, 0x05, 0x82, 0xcb, 0xb2,
0xd9, 0xb3, 0xc8, 0x57, 0x50, 0x91, 0x13, 0xc6, 0x65, 0x16, 0xca, 0x97, 0x25, 0xff, 0x25, 0x84,
0x5d, 0x3d, 0x8b, 0x3c, 0x84, 0x25, 0xc9, 0x81, 0xf5, 0x8b, 0xcd, 0x42, 0x7b, 0x7d, 0xa7, 0x99,
0xaa, 0xa6, 0x02, 0x94, 0x9a, 0x68, 0x28, 0x38, 0x69, 0xc0, 0x2a, 0xc7, 0xd1, 0x18, 0x5d, 0xc1,
0xeb, 0x4b, 0xcd, 0x52, 0xbb, 0x64, 0xe8, 0x36, 0xf9, 0x02, 0x56, 0xe9, 0x54, 0x30, 0xd3, 0xb6,
0x78, 0x7d, 0xd9, 0x7f, 0xb7, 0x22, 0xdb, 0x3d, 0x8b, 0x93, 0x6b, 0x50, 0xf6, 0xd8, 0x91, 0xa9,
0x8c, 0x58, 0xf1, 0xa3, 0x59, 0xf5, 0xd8, 0xd1, 0x9e, 0x6c, 0x93, 0xef, 0x60, 0xc9, 0x76, 0xdf,
0x33, 0x5e, 0x5f, 0x6d, 0x96, 0xda, 0x95, 0x9d, 0x1b, 0xa9, 0xb1, 0xfc, 0x88, 0x27, 0x3f, 0x51,
0x67, 0x8a, 0x2f, 0xa9, 0xed, 0x19, 0x0a, 0xdf, 0xfa, 0xab, 0x00, 0x57, 0xbb, 0xc8, 0x87, 0x9e,
0x3d, 0xc0, 0x7e, 0x10, 0xc5, 0xa7, 0x4f, 0x8b, 0x16, 0x54, 0x87, 0xcc, 0x71, 0x70, 0x28, 0x6c,
0xe6, 0xea, 0x14, 0xc6, 0xfa, 0xc8, 0x97, 0x00, 0xc1, 0x70, 0x7b, 0x5d, 0x5e, 0x2f, 0xf9, 0x83,
0x8c, 0xf4, 0xb4, 0xa6, 0x50, 0x0b, 0x02, 0x91, 0xc4, 0x3d, 0xf7, 0x3d, 0x9b, 0xa3, 0x2d, 0xa4,
0xd0, 0x36, 0xa1, 0x32, 0xa1, 0x9e, 0xb0, 0x63, 0xca, 0xd1, 0x2e, 0xb9, 0x56, 0xb4, 0x4c, 0x90,
0xce, 0x59, 0x47, 0xeb, 0xbf, 0x22, 0x54, 0x03, 0x5d, 0xa9, 0xc9, 0x49, 0x17, 0xca, 0x72, 0x4c,
0xa6, 0xf4, 0x29, 0xb0, 0xe0, 0x56, 0x27, 0xbd, 0x26, 0x75, 0x12, 0x01, 0x1b, 0xab, 0x83, 0x30,
0xf4, 0x2e, 0x54, 0x6c, 0xd7, 0xc2, 0x63, 0x53, 0xa5, 0xa7, 0xe8, 0xa7, 0xe7, 0xeb, 0x38, 0x8f,
0xac, 0x42, 0x1d, 0xad, 0x6d, 0xe1, 0xb1, 0xcf, 0x01, 0x76, 0xf8, 0xc8, 0x09, 0xc2, 0x25, 0x3c,
0x16, 0x1e, 0x35, 0xa3, 0x5c, 0x25, 0x9f, 0xeb, 0xfb, 0x53, 0x62, 0xf2, 0x09, 0x3a, 0x4f, 0xe5,
0xd7, 0x9a, 0x9b, 0x3f, 0x75, 0x85, 0x77, 0x62, 0xd4, 0x30, 0xde, 0xdb, 0xf8, 0x1d, 0x2e, 0xa7,
0x01, 0xc9, 0x06, 0x94, 0x0e, 0xf1, 0x24, 0xb0, 0x5d, 0x3e, 0x92, 0x1d, 0x58, 0xfa, 0x28, 0xa7,
0x92, 0xef, 0xf3, 0xdc, 0xdc, 0xf0, 0x07, 0x34, 0x1b, 0x89, 0x82, 0x3e, 0x2e, 0x3e, 0x2a, 0xb4,
0xfe, 0x2d, 0x42, 0x7d, 0x7e, 0xba, 0x9d, 0xa7, 0x56, 0xe4, 0x99, 0x72, 0x23, 0x58, 0x0b, 0x12,
0x1d, 0xb3, 0x6e, 0x37, 0xcb, 0xba, 0xac, 0x08, 0x63, 0x9e, 0x2a, 0x0f, 0xab, 0x3c, 0xd2, 0xd5,
0x40, 0xb8, 0x34, 0x07, 0x49, 0x71, 0xef, 0x71, 0xdc, 0xbd, 0x6f, 0xf2, 0xa4, 0x30, 0xea, 0xa2,
0x05, 0x97, 0x9f, 0xa1, 0xd8, 0xf3, 0xd0, 0x42, 0x57, 0xd8, 0xd4, 0xf9, 0xf4, 0x05, 0xdb, 0x80,
0xd5, 0x29, 0x97, 0x3b, 0xe6, 0x58, 0x05, 0x53, 0x36, 0x74, 0xbb, 0xf5, 0x67, 0x01, 0x36, 0x13,
0x32, 0xe7, 0x49, 0xd4, 0x02, 0x29, 0xf9, 0x6e, 0x42, 0x39, 0x3f, 0x62, 0x9e, 0x2a, 0xb4, 0x65,
0x43, 0xb7, 0x77, 0xfe, 0xbe, 0x0e, 0x65, 0x83, 0x31, 0xb1, 0x27, 0x2d, 0x21, 0x13, 0x20, 0x32,
0x26, 0x36, 0x9e, 0x30, 0x17, 0x5d, 0x55, 0x58, 0x39, 0xb9, 0x1f, 0x0f, 0x40, 0x9f, 0x02, 0xe6,
0xa1, 0x81, 0x55, 0x8d, 0x9b, 0x19, 0x5f, 0x24, 0xe0, 0xad, 0x0b, 0x64, 0xec, 0x2b, 0xca, 0xfd,
0xfa, 0xb5, 0x3d, 0x3c, 0xdc, 0x3b, 0xa0, 0xae, 0x8b, 0xce, 0x22, 0xc5, 0x04, 0x34, 0x54, 0x4c,
0x2c, 0xfa, 0xa0, 0xd1, 0x17, 0x9e, 0xed, 0x8e, 0x42, 0x67, 0x5b, 0x17, 0xc8, 0x07, 0x3f, 0xb7,
0x52, 0xdd, 0xe6, 0xc2, 0x1e, 0xf2, 0x50, 0x70, 0x27, 0x5b, 0x70, 0x0e, 0x7c, 0x46, 0x49, 0x13,
0x36, 0xf6, 0x3c, 0xa4, 0x02, 0xf7, 0xf4, 0xa2, 0x21, 0x77, 0x53, 0x3f, 0x4d, 0xc2, 0x42, 0xa1,
0x45, 0x13, 0xa0, 0x75, 0x81, 0xfc, 0x0a, 0xeb, 0x5d, 0x8f, 0x4d, 0x22, 0xf4, 0xb7, 0x53, 0xe9,
0xe3, 0xa0, 0x9c, 0xe4, 0x26, 0xac, 0x3d, 0xa7, 0x3c, 0xc2, 0xbd, 0x95, 0xca, 0x1d, 0xc3, 0x84,
0xd4, 0x37, 0x52, 0xa1, 0xbb, 0x8c, 0x39, 0x11, 0x7b, 0x8e, 0x80, 0x84, 0x05, 0x21, 0xa2, 0xd2,
0x49, 0x1f, 0xc1, 0x1c, 0x30, 0x94, 0xda, 0xce, 0x8d, 0xd7, 0xc2, 0x6f, 0xa0, 0xa2, 0x0c, 0x7f,
0xe2, 0xd8, 0x94, 0x93, 0x5b, 0x0b, 0x52, 0xe2, 0x23, 0x72, 0x1a, 0xf6, 0x0a, 0xca, 0xd2, 0x68,
0x45, 0xfa, 0x6d, 0x66, 0x22, 0xce, 0x42, 0xd9, 0x07, 0x78, 0xe2, 0x08, 0xf4, 0x14, 0xe7, 0xcd,
0x54, 0xce, 0x19, 0x20, 0x27, 0xa9, 0x0b, 0xb5, 0xfe, 0x81, 0x3c, 0xe0, 0x84, 0xd6, 0x70, 0x72,
0x27, 0x7d, 0x42, 0xc7, 0x51, 0x21, 0xfd, 0xdd, 0x7c, 0x60, 0x6d, 0xf7, 0x3b, 0xa8, 0x29, 0x33,
0x5f, 0x86, 0x87, 0x86, 0x0c, 0xbd, 0x04, 0x2a, 0xe7, 0x70, 0x7e, 0x86, 0x35, 0x69, 0xeb, 0x8c,
0x7c, 0x2b, 0xd3, 0xfa, 0xb3, 0x52, 0xbf, 0x83, 0xea, 0x73, 0xca, 0x67, 0xcc, 0xed, 0xac, 0x15,
0x30, 0x47, 0x9c, 0x6b, 0x01, 0x1c, 0xc2, 0xba, 0x74, 0x4d, 0x7f, 0xcc, 0x33, 0x96, 0x6f, 0x1c,
0x14, 0x4a, 0xdc, 0xc9, 0x85, 0xd5, 0x62, 0x2e, 0xd4, 0x12, 0xdb, 0x6f, 0x46, 0x16, 0x12, 0xa8,
0xc5, 0x59, 0x9f, 0x03, 0x6b, 0x3d, 0x84, 0xaa, 0x8c, 0x25, 0xdc, 0xea, 0x33, 0xbc, 0x8b, 0x42,
0x42, 0xa5, 0xad, 0x1c, 0xc8, 0x48, 0x11, 0xd9, 0x48, 0x9e, 0x2a, 0xc8, 0x76, 0xfe, 0xf3, 0x87,
0x52, 0xbc, 0x7f, 0xd6, 0x03, 0x4b, 0xb4, 0x88, 0xf8, 0xe7, 0xb1, 0x85, 0x45, 0xc4, 0x47, 0xe4,
0x9c, 0x72, 0x07, 0xb0, 0x16, 0x8a, 0x2a, 0xe2, 0xad, 0x85, 0xbe, 0xc7, 0xa8, 0x6f, 0xe7, 0x81,
0xea, 0x01, 0x04, 0xe5, 0x4a, 0xa9, 0x64, 0x97, 0xab, 0xb3, 0x04, 0xff, 0x21, 0xb8, 0x01, 0xeb,
0x4b, 0x38, 0xb9, 0x97, 0xe5, 0x6c, 0xea, 0xef, 0x80, 0x46, 0x27, 0x2f, 0x5c, 0x8f, 0xe2, 0x37,
0x58, 0x09, 0xae, 0xc6, 0xc9, 0xf2, 0x98, 0xf8, 0x58, 0xdf, 0xca, 0x1b, 0xb7, 0x4e, 0xc5, 0x69,
0x76, 0x0a, 0x9b, 0x6f, 0x26, 0x96, 0xdc, 0x9a, 0xd5, 0x01, 0x20, 0x3c, 0x82, 0x24, 0xb3, 0x32,
0x3b, 0xe6, 0xc4, 0x71, 0xfb, 0x7c, 0x74, 0x9a, 0x67, 0x0e, 0x5c, 0x35, 0xd0, 0x41, 0xca, 0xb1,
0xfb, 0xea, 0xc5, 0x3e, 0x72, 0x4e, 0x47, 0xd8, 0x17, 0x1e, 0xd2, 0x71, 0xf2, 0x68, 0xa2, 0xfe,
0xb9, 0x64, 0x80, 0x73, 0x66, 0x68, 0x08, 0x9b, 0xc1, 0x5c, 0xfe, 0xc1, 0x99, 0xf2, 0x03, 0x79,
0x2a, 0x73, 0x50, 0xa0, 0x95, 0xac, 0x05, 0xf2, 0x3a, 0xde, 0x49, 0x45, 0xe6, 0x18, 0x92, 0x09,
0xf0, 0x0c, 0xc5, 0x3e, 0x0a, 0xcf, 0x1e, 0x66, 0xed, 0x5a, 0x33, 0x40, 0x46, 0x5a, 0x52, 0x70,
0x3a, 0x2d, 0x7d, 0x58, 0x56, 0xf7, 0x7f, 0xd2, 0x4a, 0xfd, 0x28, 0xfc, 0x7b, 0xb1, 0xe8, 0xb4,
0xa6, 0xff, 0x70, 0x44, 0xaa, 0xf1, 0x33, 0x14, 0x91, 0xff, 0x0a, 0x19, 0xd5, 0x38, 0x0e, 0x5a,
0x5c, 0x8d, 0x93, 0xd8, 0x68, 0x35, 0x7e, 0x61, 0xf3, 0xe0, 0xe5, 0x6b, 0xca, 0x0f, 0xb3, 0xf6,
0xe0, 0x04, 0x6a, 0x71, 0x35, 0x9e, 0x03, 0x47, 0x1c, 0xab, 0x1a, 0x28, 0x5f, 0x04, 0xbe, 0x65,
0x5e, 0x8d, 0xa2, 0x3f, 0x7e, 0x4e, 0xcb, 0xf3, 0x5b, 0x7d, 0xbe, 0xd5, 0x57, 0x99, 0x64, 0x21,
0x99, 0x2d, 0x0c, 0x0d, 0x91, 0xb7, 0xae, 0x1c, 0xcc, 0xc1, 0xba, 0xfb, 0xdc, 0xcc, 0xa6, 0xdc,
0x2f, 0xe4, 0x44, 0x8e, 0x30, 0x67, 0x6d, 0x6d, 0x71, 0x58, 0xfe, 0x02, 0x2e, 0xd3, 0x20, 0xbf,
0x7b, 0xc3, 0xd1, 0xe3, 0x19, 0x05, 0x3c, 0x86, 0x59, 0x5c, 0xc0, 0x13, 0xd0, 0xc8, 0x1c, 0x5a,
0x8b, 0x5d, 0x23, 0x93, 0xe3, 0x98, 0x25, 0x35, 0xed, 0x52, 0xdb, 0xb8, 0x97, 0x13, 0x1d, 0xea,
0xed, 0x3e, 0xfa, 0xe5, 0xe1, 0xc8, 0x16, 0x07, 0xd3, 0x81, 0x1c, 0xf3, 0xb6, 0xfa, 0xf8, 0x9e,
0xcd, 0x82, 0xa7, 0xed, 0x30, 0x21, 0xdb, 0x3e, 0xdf, 0xb6, 0xe6, 0x9b, 0x0c, 0x06, 0xcb, 0x7e,
0xd7, 0x83, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xec, 0x82, 0x28, 0xae, 0x8d, 0x16, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -856,6 +857,7 @@ type RootCoordClient interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
Import(ctx context.Context, in *milvuspb.ImportRequest, opts ...grpc.CallOption) (*milvuspb.ImportResponse, error)
GetImportState(ctx context.Context, in *milvuspb.GetImportStateRequest, opts ...grpc.CallOption) (*milvuspb.GetImportStateResponse, error)
ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest, opts ...grpc.CallOption) (*milvuspb.ListImportTasksResponse, error)
ReportImport(ctx context.Context, in *ImportResult, opts ...grpc.CallOption) (*commonpb.Status, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
CreateCredential(ctx context.Context, in *internalpb.CredentialInfo, opts ...grpc.CallOption) (*commonpb.Status, error)
@ -1135,6 +1137,15 @@ func (c *rootCoordClient) GetImportState(ctx context.Context, in *milvuspb.GetIm
return out, nil
}
func (c *rootCoordClient) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest, opts ...grpc.CallOption) (*milvuspb.ListImportTasksResponse, error) {
out := new(milvuspb.ListImportTasksResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ListImportTasks", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *rootCoordClient) ReportImport(ctx context.Context, in *ImportResult, opts ...grpc.CallOption) (*commonpb.Status, error) {
out := new(commonpb.Status)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ReportImport", in, out, opts...)
@ -1268,6 +1279,7 @@ type RootCoordServer interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+24+--+Support+bulk+load
Import(context.Context, *milvuspb.ImportRequest) (*milvuspb.ImportResponse, error)
GetImportState(context.Context, *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error)
ListImportTasks(context.Context, *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error)
ReportImport(context.Context, *ImportResult) (*commonpb.Status, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
CreateCredential(context.Context, *internalpb.CredentialInfo) (*commonpb.Status, error)
@ -1369,6 +1381,9 @@ func (*UnimplementedRootCoordServer) Import(ctx context.Context, req *milvuspb.I
func (*UnimplementedRootCoordServer) GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetImportState not implemented")
}
func (*UnimplementedRootCoordServer) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListImportTasks not implemented")
}
func (*UnimplementedRootCoordServer) ReportImport(ctx context.Context, req *ImportResult) (*commonpb.Status, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReportImport not implemented")
}
@ -1914,6 +1929,24 @@ func _RootCoord_GetImportState_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _RootCoord_ListImportTasks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.ListImportTasksRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RootCoordServer).ListImportTasks(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.rootcoord.RootCoord/ListImportTasks",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RootCoordServer).ListImportTasks(ctx, req.(*milvuspb.ListImportTasksRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RootCoord_ReportImport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ImportResult)
if err := dec(in); err != nil {
@ -2142,6 +2175,10 @@ var _RootCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "GetImportState",
Handler: _RootCoord_GetImportState_Handler,
},
{
MethodName: "ListImportTasks",
Handler: _RootCoord_ListImportTasks_Handler,
},
{
MethodName: "ReportImport",
Handler: _RootCoord_ReportImport_Handler,

View File

@ -3976,6 +3976,34 @@ func (node *Proxy) Import(ctx context.Context, req *milvuspb.ImportRequest) (*mi
return resp, err
}
// GetImportState checks import task state from datanode
func (node *Proxy) GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error) {
log.Info("received get import state request", zap.Int64("taskID", req.GetTask()))
resp := &milvuspb.GetImportStateResponse{}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
return resp, nil
}
resp, err := node.rootCoord.GetImportState(ctx, req)
log.Info("received get import state response", zap.Int64("taskID", req.GetTask()), zap.Any("resp", resp), zap.Error(err))
return resp, err
}
// ListImportTasks get id array of all import tasks from rootcoord
func (node *Proxy) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
log.Info("received list import tasks request")
resp := &milvuspb.ListImportTasksResponse{}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
return resp, nil
}
resp, err := node.rootCoord.ListImportTasks(ctx, req)
log.Info("received list import tasks response")
return resp, err
}
// GetReplicas gets replica info
func (node *Proxy) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
log.Info("received get replicas request")
@ -3995,20 +4023,6 @@ func (node *Proxy) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasReq
return resp, err
}
// GetImportState checks import task state from datanode
func (node *Proxy) GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error) {
log.Info("received get import state request", zap.Int64("taskID", req.GetTask()))
resp := &milvuspb.GetImportStateResponse{}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
return resp, nil
}
resp, err := node.rootCoord.GetImportState(ctx, req)
log.Info("received get import state response", zap.Int64("taskID", req.GetTask()), zap.Any("resp", resp), zap.Error(err))
return resp, err
}
// InvalidateCredentialCache invalidate the credential cache of specified username.
func (node *Proxy) InvalidateCredentialCache(ctx context.Context, request *proxypb.InvalidateCredCacheRequest) (*commonpb.Status, error) {
ctx = logutil.WithModule(ctx, moduleName)

View File

@ -3103,3 +3103,24 @@ func TestProxy_GetImportState(t *testing.T) {
assert.Nil(t, err)
})
}
func TestProxy_ListImportTasks(t *testing.T) {
req := &milvuspb.ListImportTasksRequest{}
rootCoord := &RootCoordMock{}
rootCoord.state.Store(internalpb.StateCode_Healthy)
t.Run("test list import tasks", func(t *testing.T) {
proxy := &Proxy{rootCoord: rootCoord}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.ListImportTasks(context.TODO(), req)
assert.EqualValues(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
assert.Nil(t, err)
})
t.Run("test list import tasks with unhealthy", func(t *testing.T) {
proxy := &Proxy{rootCoord: rootCoord}
proxy.stateCode.Store(internalpb.StateCode_Abnormal)
resp, err := proxy.ListImportTasks(context.TODO(), req)
assert.EqualValues(t, unhealthyStatus(), resp.Status)
assert.Nil(t, err)
})
}

View File

@ -972,6 +972,26 @@ func (coord *RootCoordMock) GetImportState(ctx context.Context, req *milvuspb.Ge
}, nil
}
func (coord *RootCoordMock) ListImportTasks(ctx context.Context, in *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
code := coord.state.Load().(internalpb.StateCode)
if code != internalpb.StateCode_Healthy {
return &milvuspb.ListImportTasksResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: fmt.Sprintf("state code = %s", internalpb.StateCode_name[int32(code)]),
},
Tasks: make([]int64, 0),
}, nil
}
return &milvuspb.ListImportTasksResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
Reason: "",
},
Tasks: make([]int64, 3),
}, nil
}
func (coord *RootCoordMock) ReportImport(ctx context.Context, req *rootcoordpb.ImportResult) (*commonpb.Status, error) {
code := coord.state.Load().(internalpb.StateCode)
if code != internalpb.StateCode_Healthy {

View File

@ -542,6 +542,28 @@ func (m *importManager) expireOldTasks() {
}()
}
func (m *importManager) listAllTasks() []int64 {
tasks := make([]int64, 0)
func() {
m.pendingLock.Lock()
defer m.pendingLock.Unlock()
for _, t := range m.pendingTasks {
tasks = append(tasks, t.GetId())
}
}()
func() {
m.workingLock.Lock()
defer m.workingLock.Unlock()
for _, v := range m.workingTasks {
tasks = append(tasks, v.GetId())
}
}()
return tasks
}
// BuildImportTaskKey constructs and returns an Etcd key with given task ID.
func BuildImportTaskKey(taskID int64) string {
return fmt.Sprintf("%s%s%d", Params.RootCoordCfg.ImportTaskSubPath, delimiter, taskID)

View File

@ -2308,6 +2308,23 @@ func (c *Core) GetImportState(ctx context.Context, req *milvuspb.GetImportStateR
return c.importManager.getTaskState(req.GetTask()), nil
}
// ListImportTasks returns id array of all import tasks.
func (c *Core) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error) {
if code, ok := c.checkHealthy(); !ok {
return &milvuspb.ListImportTasksResponse{
Status: failStatus(commonpb.ErrorCode_UnexpectedError, "StateCode="+internalpb.StateCode_name[int32(code)]),
}, nil
}
resp := &milvuspb.ListImportTasksResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
Tasks: c.importManager.listAllTasks(),
}
return resp, nil
}
// ReportImport reports import task state to RootCoord.
func (c *Core) ReportImport(ctx context.Context, ir *rootcoordpb.ImportResult) (*commonpb.Status, error) {
log.Info("receive import state report",

View File

@ -1383,6 +1383,15 @@ func TestRootCoord_Base(t *testing.T) {
assert.Equal(t, commonpb.ErrorCode_Success, rsp.Status.ErrorCode)
})
wg.Add(1)
t.Run("list import stasks", func(t *testing.T) {
defer wg.Done()
req := &milvuspb.ListImportTasksRequest{}
rsp, err := core.ListImportTasks(ctx, req)
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, rsp.Status.ErrorCode)
})
wg.Add(1)
t.Run("report import task timeout", func(t *testing.T) {
defer wg.Done()
@ -2629,6 +2638,10 @@ func TestRootCoord_Base(t *testing.T) {
})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, rsp11.ErrorCode)
rsp12, err := core.ListImportTasks(ctx, &milvuspb.ListImportTasksRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, rsp12.Status.ErrorCode)
})
wg.Add(1)

View File

@ -620,6 +620,16 @@ type RootCoord interface {
// error is always nil
GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error)
// List id array of all import tasks
//
// ctx is the context to control request deadline and cancellation
// req contains the request params
//
// The `Status` in response struct `ListImportTasksResponse` indicates if this operation is processed successfully or fail cause;
// the `Tasks` in `ListImportTasksResponse` return the id array of all import tasks.
// error is always nil
ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error)
// ReportImport reports import task state to rootCoord
//
// ctx is the context to control request deadline and cancellation
@ -1128,6 +1138,16 @@ type ProxyComponent interface {
// error is always nil
GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error)
// List id array of all import tasks
//
// ctx is the context to control request deadline and cancellation
// req contains the request params
//
// The `Status` in response struct `ListImportTasksResponse` indicates if this operation is processed successfully or fail cause;
// the `Tasks` in `ListImportTasksResponse` return the id array of all import tasks.
// error is always nil
ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest) (*milvuspb.ListImportTasksResponse, error)
GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error)
// CreateCredential create new user and password

View File

@ -18,6 +18,7 @@ import (
"github.com/milvus-io/milvus/internal/proto/rootcoordpb"
"github.com/milvus-io/milvus/internal/proto/schemapb"
"github.com/milvus-io/milvus/internal/storage"
"github.com/milvus-io/milvus/internal/util/timerecord"
"github.com/milvus-io/milvus/internal/util/typeutil"
)
@ -122,6 +123,8 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
if fileType == JSONFileExt {
err := func() error {
tr := timerecord.NewTimeRecorder("json parser: " + filePath)
// for minio storage, chunkManager will download file into local memory
// for local storage, chunkManager open the file directly
file, err := p.chunkManager.Reader(filePath)
@ -129,6 +132,7 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
return err
}
defer file.Close()
tr.Record("downloaded")
// report file process state
p.importResult.State = commonpb.ImportState_ImportDownloaded
@ -148,7 +152,6 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
validator := NewJSONRowValidator(p.collectionSchema, consumer)
err = parser.ParseRows(reader, validator)
if err != nil {
log.Error("import error: "+err.Error(), zap.String("filePath", filePath))
return err
}
@ -161,6 +164,7 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
p.importResult.State = commonpb.ImportState_ImportParsed
p.reportFunc(p.importResult)
tr.Record("parsed")
return nil
}()
@ -185,6 +189,8 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
}
p.printFieldsDataInfo(fields, "import wrapper: combine field data", nil)
tr := timerecord.NewTimeRecorder("combine field data")
defer tr.Elapse("finished")
fieldNames := make([]storage.FieldID, 0)
for k, v := range fields {
@ -221,14 +227,16 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
if fileType == JSONFileExt {
err := func() error {
tr := timerecord.NewTimeRecorder("json parser: " + filePath)
// for minio storage, chunkManager will download file into local memory
// for local storage, chunkManager open the file directly
file, err := p.chunkManager.Reader(filePath)
if err != nil {
log.Error("import error: "+err.Error(), zap.String("filePath", filePath))
return err
}
defer file.Close()
tr.Record("downloaded")
// report file process state
p.importResult.State = commonpb.ImportState_ImportDownloaded
@ -245,7 +253,6 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
err = parser.ParseColumns(reader, validator)
if err != nil {
log.Error("import error: "+err.Error(), zap.String("filePath", filePath))
return err
}
@ -253,6 +260,7 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
p.importResult.State = commonpb.ImportState_ImportParsed
p.reportFunc(p.importResult)
tr.Record("parsed")
return nil
}()
@ -261,45 +269,56 @@ func (p *ImportWrapper) Import(filePaths []string, rowBased bool, onlyValidate b
return err
}
} else if fileType == NumpyFileExt {
// for minio storage, chunkManager will download file into local memory
// for local storage, chunkManager open the file directly
file, err := p.chunkManager.Reader(filePath)
if err != nil {
log.Error("import error: "+err.Error(), zap.String("filePath", filePath))
return err
}
defer file.Close()
err := func() error {
tr := timerecord.NewTimeRecorder("json parser: " + filePath)
// report file process state
p.importResult.State = commonpb.ImportState_ImportDownloaded
p.reportFunc(p.importResult)
var id storage.FieldID
for _, field := range p.collectionSchema.Fields {
if field.GetName() == fileName {
id = field.GetFieldID()
// for minio storage, chunkManager will download file into local memory
// for local storage, chunkManager open the file directly
file, err := p.chunkManager.Reader(filePath)
if err != nil {
return err
}
}
defer file.Close()
tr.Record("downloaded")
// the numpy parser return a storage.FieldData, here construct a map[string]storage.FieldData to combine
flushFunc := func(field storage.FieldData) error {
fields := make(map[storage.FieldID]storage.FieldData)
fields[id] = field
combineFunc(fields)
// report file process state
p.importResult.State = commonpb.ImportState_ImportDownloaded
p.reportFunc(p.importResult)
var id storage.FieldID
for _, field := range p.collectionSchema.Fields {
if field.GetName() == fileName {
id = field.GetFieldID()
}
}
// the numpy parser return a storage.FieldData, here construct a map[string]storage.FieldData to combine
flushFunc := func(field storage.FieldData) error {
fields := make(map[storage.FieldID]storage.FieldData)
fields[id] = field
combineFunc(fields)
return nil
}
// for numpy file, we say the file name(without extension) is the filed name
parser := NewNumpyParser(p.ctx, p.collectionSchema, flushFunc)
err = parser.Parse(file, fileName, onlyValidate)
if err != nil {
return err
}
// report file process state
p.importResult.State = commonpb.ImportState_ImportParsed
p.reportFunc(p.importResult)
tr.Record("parsed")
return nil
}
}()
// for numpy file, we say the file name(without extension) is the filed name
parser := NewNumpyParser(p.ctx, p.collectionSchema, flushFunc)
err = parser.Parse(file, fileName, onlyValidate)
if err != nil {
log.Error("import error: "+err.Error(), zap.String("filePath", filePath))
return err
}
// report file process state
p.importResult.State = commonpb.ImportState_ImportParsed
p.reportFunc(p.importResult)
}
}
@ -397,6 +416,9 @@ func (p *ImportWrapper) splitFieldsData(fieldsData map[storage.FieldID]storage.F
return errors.New("import error: fields data is empty")
}
tr := timerecord.NewTimeRecorder("split field data")
defer tr.Elapse("finished")
var primaryKey *schemapb.FieldSchema
for i := 0; i < len(p.collectionSchema.Fields); i++ {
schema := p.collectionSchema.Fields[i]

View File

@ -147,6 +147,10 @@ func (m *RootCoordClient) GetImportState(ctx context.Context, req *milvuspb.GetI
return &milvuspb.GetImportStateResponse{}, m.Err
}
func (m *RootCoordClient) ListImportTasks(ctx context.Context, req *milvuspb.ListImportTasksRequest, opts ...grpc.CallOption) (*milvuspb.ListImportTasksResponse, error) {
return &milvuspb.ListImportTasksResponse{}, m.Err
}
func (m *RootCoordClient) ReportImport(ctx context.Context, req *rootcoordpb.ImportResult, opts ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{}, m.Err
}

View File

@ -50,7 +50,7 @@ go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/util/importutil/..." -
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/proxy/..." -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/datanode/..." -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/indexnode/..." -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/querynode/..." -failfast;;
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/querynode/..." -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/distributed/rootcoord" -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/distributed/datacoord" -failfast
go test -race -cover ${APPLE_SILICON_FLAG} "${MILVUS_DIR}/distributed/querycoord" -failfast