change output_fields to out_fields_id for RetrieveRequest (#6506)

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
pull/6568/head
Cai Yudong 2021-07-14 13:11:54 +08:00 committed by GitHub
parent e50d39dfe1
commit 1c29b42434
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 261 additions and 291 deletions

View File

@ -111,7 +111,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_segcore_2eproto::offsets[] PRO
~0u, // no _oneof_case_
~0u, // no _weak_field_map_
PROTOBUF_FIELD_OFFSET(::milvus::proto::segcore::RetrieveRequest, ids_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::segcore::RetrieveRequest, output_fields_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::segcore::RetrieveRequest, output_fields_id_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::milvus::proto::segcore::RetrieveResults, _internal_metadata_),
~0u, // no _extensions_
@ -151,17 +151,18 @@ static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] =
const char descriptor_table_protodef_segcore_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
"\n\rsegcore.proto\022\024milvus.proto.segcore\032\014s"
"chema.proto\"O\n\017RetrieveRequest\022%\n\003ids\030\001 "
"\001(\0132\030.milvus.proto.schema.IDs\022\025\n\routput_"
"fields\030\002 \003(\t\"m\n\017RetrieveResults\022%\n\003ids\030\001"
" \001(\0132\030.milvus.proto.schema.IDs\0223\n\013fields"
"_data\030\002 \003(\0132\036.milvus.proto.schema.FieldD"
"ata\"P\n\rLoadFieldMeta\022\025\n\rmin_timestamp\030\001 "
"\001(\003\022\025\n\rmax_timestamp\030\002 \001(\003\022\021\n\trow_count\030"
"\003 \001(\003\"Y\n\017LoadSegmentMeta\0222\n\005metas\030\001 \003(\0132"
"#.milvus.proto.segcore.LoadFieldMeta\022\022\n\n"
"total_size\030\002 \001(\003B6Z4github.com/milvus-io"
"/milvus/internal/proto/segcorepbb\006proto3"
"chema.proto\"R\n\017RetrieveRequest\022%\n\003ids\030\001 "
"\001(\0132\030.milvus.proto.schema.IDs\022\030\n\020output_"
"fields_id\030\002 \003(\003\"m\n\017RetrieveResults\022%\n\003id"
"s\030\001 \001(\0132\030.milvus.proto.schema.IDs\0223\n\013fie"
"lds_data\030\002 \003(\0132\036.milvus.proto.schema.Fie"
"ldData\"P\n\rLoadFieldMeta\022\025\n\rmin_timestamp"
"\030\001 \001(\003\022\025\n\rmax_timestamp\030\002 \001(\003\022\021\n\trow_cou"
"nt\030\003 \001(\003\"Y\n\017LoadSegmentMeta\0222\n\005metas\030\001 \003"
"(\0132#.milvus.proto.segcore.LoadFieldMeta\022"
"\022\n\ntotal_size\030\002 \001(\003B6Z4github.com/milvus"
"-io/milvus/internal/proto/segcorepbb\006pro"
"to3"
;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_segcore_2eproto_deps[1] = {
&::descriptor_table_schema_2eproto,
@ -175,7 +176,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_seg
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_segcore_2eproto_once;
static bool descriptor_table_segcore_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_segcore_2eproto = {
&descriptor_table_segcore_2eproto_initialized, descriptor_table_protodef_segcore_2eproto, "segcore.proto", 480,
&descriptor_table_segcore_2eproto_initialized, descriptor_table_protodef_segcore_2eproto, "segcore.proto", 483,
&descriptor_table_segcore_2eproto_once, descriptor_table_segcore_2eproto_sccs, descriptor_table_segcore_2eproto_deps, 4, 1,
schemas, file_default_instances, TableStruct_segcore_2eproto::offsets,
file_level_metadata_segcore_2eproto, 4, file_level_enum_descriptors_segcore_2eproto, file_level_service_descriptors_segcore_2eproto,
@ -216,7 +217,7 @@ RetrieveRequest::RetrieveRequest()
RetrieveRequest::RetrieveRequest(const RetrieveRequest& from)
: ::PROTOBUF_NAMESPACE_ID::Message(),
_internal_metadata_(nullptr),
output_fields_(from.output_fields_) {
output_fields_id_(from.output_fields_id_) {
_internal_metadata_.MergeFrom(from._internal_metadata_);
if (from.has_ids()) {
ids_ = new ::milvus::proto::schema::IDs(*from.ids_);
@ -255,7 +256,7 @@ void RetrieveRequest::Clear() {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
output_fields_.Clear();
output_fields_id_.Clear();
if (GetArenaNoVirtual() == nullptr && ids_ != nullptr) {
delete ids_;
}
@ -278,16 +279,14 @@ const char* RetrieveRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPAC
CHK_(ptr);
} else goto handle_unusual;
continue;
// repeated string output_fields = 2;
// repeated int64 output_fields_id = 2;
case 2:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
ptr -= 1;
do {
ptr += 1;
ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParserUTF8(add_output_fields(), ptr, ctx, "milvus.proto.segcore.RetrieveRequest.output_fields");
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 18);
ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt64Parser(mutable_output_fields_id(), ptr, ctx);
CHK_(ptr);
} else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16) {
add_output_fields_id(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr));
CHK_(ptr);
} else goto handle_unusual;
continue;
default: {
@ -331,16 +330,16 @@ bool RetrieveRequest::MergePartialFromCodedStream(
break;
}
// repeated string output_fields = 2;
// repeated int64 output_fields_id = 2;
case 2: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
input, this->add_output_fields()));
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->output_fields(this->output_fields_size() - 1).data(),
static_cast<int>(this->output_fields(this->output_fields_size() - 1).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::PARSE,
"milvus.proto.segcore.RetrieveRequest.output_fields"));
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPackedPrimitive<
::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
input, this->mutable_output_fields_id())));
} else if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
1, 18u, input, this->mutable_output_fields_id())));
} else {
goto handle_unusual;
}
@ -380,14 +379,15 @@ void RetrieveRequest::SerializeWithCachedSizes(
1, _Internal::ids(this), output);
}
// repeated string output_fields = 2;
for (int i = 0, n = this->output_fields_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->output_fields(i).data(), static_cast<int>(this->output_fields(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.segcore.RetrieveRequest.output_fields");
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteString(
2, this->output_fields(i), output);
// repeated int64 output_fields_id = 2;
if (this->output_fields_id_size() > 0) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteTag(2, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
output->WriteVarint32(_output_fields_id_cached_byte_size_.load(
std::memory_order_relaxed));
}
for (int i = 0, n = this->output_fields_id_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64NoTag(
this->output_fields_id(i), output);
}
if (_internal_metadata_.have_unknown_fields()) {
@ -410,14 +410,17 @@ void RetrieveRequest::SerializeWithCachedSizes(
1, _Internal::ids(this), target);
}
// repeated string output_fields = 2;
for (int i = 0, n = this->output_fields_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->output_fields(i).data(), static_cast<int>(this->output_fields(i).length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.segcore.RetrieveRequest.output_fields");
// repeated int64 output_fields_id = 2;
if (this->output_fields_id_size() > 0) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteTagToArray(
2,
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
target);
target = ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream::WriteVarint32ToArray(
_output_fields_id_cached_byte_size_.load(std::memory_order_relaxed),
target);
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
WriteStringToArray(2, this->output_fields(i), target);
WriteInt64NoTagToArray(this->output_fields_id_, target);
}
if (_internal_metadata_.have_unknown_fields()) {
@ -441,12 +444,19 @@ size_t RetrieveRequest::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// repeated string output_fields = 2;
total_size += 1 *
::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->output_fields_size());
for (int i = 0, n = this->output_fields_size(); i < n; i++) {
total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
this->output_fields(i));
// repeated int64 output_fields_id = 2;
{
size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
Int64Size(this->output_fields_id_);
if (data_size > 0) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
}
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size);
_output_fields_id_cached_byte_size_.store(cached_size,
std::memory_order_relaxed);
total_size += data_size;
}
// .milvus.proto.schema.IDs ids = 1;
@ -483,7 +493,7 @@ void RetrieveRequest::MergeFrom(const RetrieveRequest& from) {
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
output_fields_.MergeFrom(from.output_fields_);
output_fields_id_.MergeFrom(from.output_fields_id_);
if (from.has_ids()) {
mutable_ids()->::milvus::proto::schema::IDs::MergeFrom(from.ids());
}
@ -510,7 +520,7 @@ bool RetrieveRequest::IsInitialized() const {
void RetrieveRequest::InternalSwap(RetrieveRequest* other) {
using std::swap;
_internal_metadata_.Swap(&other->_internal_metadata_);
output_fields_.InternalSwap(CastToBase(&other->output_fields_));
output_fields_id_.InternalSwap(&other->output_fields_id_);
swap(ids_, other->ids_);
}

View File

@ -198,25 +198,19 @@ class RetrieveRequest :
// accessors -------------------------------------------------------
enum : int {
kOutputFieldsFieldNumber = 2,
kOutputFieldsIdFieldNumber = 2,
kIdsFieldNumber = 1,
};
// repeated string output_fields = 2;
int output_fields_size() const;
void clear_output_fields();
const std::string& output_fields(int index) const;
std::string* mutable_output_fields(int index);
void set_output_fields(int index, const std::string& value);
void set_output_fields(int index, std::string&& value);
void set_output_fields(int index, const char* value);
void set_output_fields(int index, const char* value, size_t size);
std::string* add_output_fields();
void add_output_fields(const std::string& value);
void add_output_fields(std::string&& value);
void add_output_fields(const char* value);
void add_output_fields(const char* value, size_t size);
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& output_fields() const;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_output_fields();
// repeated int64 output_fields_id = 2;
int output_fields_id_size() const;
void clear_output_fields_id();
::PROTOBUF_NAMESPACE_ID::int64 output_fields_id(int index) const;
void set_output_fields_id(int index, ::PROTOBUF_NAMESPACE_ID::int64 value);
void add_output_fields_id(::PROTOBUF_NAMESPACE_ID::int64 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
output_fields_id() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
mutable_output_fields_id();
// .milvus.proto.schema.IDs ids = 1;
bool has_ids() const;
@ -231,7 +225,8 @@ class RetrieveRequest :
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> output_fields_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 > output_fields_id_;
mutable std::atomic<int> _output_fields_id_cached_byte_size_;
::milvus::proto::schema::IDs* ids_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_segcore_2eproto;
@ -728,69 +723,34 @@ inline void RetrieveRequest::set_allocated_ids(::milvus::proto::schema::IDs* ids
// @@protoc_insertion_point(field_set_allocated:milvus.proto.segcore.RetrieveRequest.ids)
}
// repeated string output_fields = 2;
inline int RetrieveRequest::output_fields_size() const {
return output_fields_.size();
// repeated int64 output_fields_id = 2;
inline int RetrieveRequest::output_fields_id_size() const {
return output_fields_id_.size();
}
inline void RetrieveRequest::clear_output_fields() {
output_fields_.Clear();
inline void RetrieveRequest::clear_output_fields_id() {
output_fields_id_.Clear();
}
inline const std::string& RetrieveRequest::output_fields(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.segcore.RetrieveRequest.output_fields)
return output_fields_.Get(index);
inline ::PROTOBUF_NAMESPACE_ID::int64 RetrieveRequest::output_fields_id(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.segcore.RetrieveRequest.output_fields_id)
return output_fields_id_.Get(index);
}
inline std::string* RetrieveRequest::mutable_output_fields(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.segcore.RetrieveRequest.output_fields)
return output_fields_.Mutable(index);
inline void RetrieveRequest::set_output_fields_id(int index, ::PROTOBUF_NAMESPACE_ID::int64 value) {
output_fields_id_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.segcore.RetrieveRequest.output_fields_id)
}
inline void RetrieveRequest::set_output_fields(int index, const std::string& value) {
// @@protoc_insertion_point(field_set:milvus.proto.segcore.RetrieveRequest.output_fields)
output_fields_.Mutable(index)->assign(value);
inline void RetrieveRequest::add_output_fields_id(::PROTOBUF_NAMESPACE_ID::int64 value) {
output_fields_id_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.segcore.RetrieveRequest.output_fields_id)
}
inline void RetrieveRequest::set_output_fields(int index, std::string&& value) {
// @@protoc_insertion_point(field_set:milvus.proto.segcore.RetrieveRequest.output_fields)
output_fields_.Mutable(index)->assign(std::move(value));
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
RetrieveRequest::output_fields_id() const {
// @@protoc_insertion_point(field_list:milvus.proto.segcore.RetrieveRequest.output_fields_id)
return output_fields_id_;
}
inline void RetrieveRequest::set_output_fields(int index, const char* value) {
GOOGLE_DCHECK(value != nullptr);
output_fields_.Mutable(index)->assign(value);
// @@protoc_insertion_point(field_set_char:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline void RetrieveRequest::set_output_fields(int index, const char* value, size_t size) {
output_fields_.Mutable(index)->assign(
reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_set_pointer:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline std::string* RetrieveRequest::add_output_fields() {
// @@protoc_insertion_point(field_add_mutable:milvus.proto.segcore.RetrieveRequest.output_fields)
return output_fields_.Add();
}
inline void RetrieveRequest::add_output_fields(const std::string& value) {
output_fields_.Add()->assign(value);
// @@protoc_insertion_point(field_add:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline void RetrieveRequest::add_output_fields(std::string&& value) {
output_fields_.Add(std::move(value));
// @@protoc_insertion_point(field_add:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline void RetrieveRequest::add_output_fields(const char* value) {
GOOGLE_DCHECK(value != nullptr);
output_fields_.Add()->assign(value);
// @@protoc_insertion_point(field_add_char:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline void RetrieveRequest::add_output_fields(const char* value, size_t size) {
output_fields_.Add()->assign(reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_add_pointer:milvus.proto.segcore.RetrieveRequest.output_fields)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
RetrieveRequest::output_fields() const {
// @@protoc_insertion_point(field_list:milvus.proto.segcore.RetrieveRequest.output_fields)
return output_fields_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
RetrieveRequest::mutable_output_fields() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.segcore.RetrieveRequest.output_fields)
return &output_fields_;
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
RetrieveRequest::mutable_output_fields_id() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.segcore.RetrieveRequest.output_fields_id)
return &output_fields_id_;
}
// -------------------------------------------------------------------

View File

@ -504,8 +504,8 @@ GetNumOfQueries(const PlaceholderGroup* group) {
CreateRetrievePlan(const Schema& schema, proto::segcore::RetrieveRequest&& request) {
auto plan = std::make_unique<RetrievePlan>();
plan->ids_ = std::unique_ptr<proto::schema::IDs>(request.release_ids());
for (auto& field_name : request.output_fields()) {
plan->field_offsets_.push_back(schema.get_offset(FieldName(field_name)));
for (auto& field_id : request.output_fields_id()) {
plan->field_offsets_.push_back(schema.get_offset(FieldId(field_id)));
}
return plan;
}

View File

@ -164,7 +164,7 @@ message RetrieveRequest {
int64 collectionID = 4;
repeated int64 partitionIDs = 5;
schema.IDs ids = 6;
repeated string output_fields = 7;
repeated int64 output_fields_id = 7;
uint64 travel_timestamp = 8;
uint64 guarantee_timestamp = 9;
}

View File

@ -1306,7 +1306,7 @@ type RetrieveRequest struct {
CollectionID int64 `protobuf:"varint,4,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
PartitionIDs []int64 `protobuf:"varint,5,rep,packed,name=partitionIDs,proto3" json:"partitionIDs,omitempty"`
Ids *schemapb.IDs `protobuf:"bytes,6,opt,name=ids,proto3" json:"ids,omitempty"`
OutputFields []string `protobuf:"bytes,7,rep,name=output_fields,json=outputFields,proto3" json:"output_fields,omitempty"`
OutputFieldsId []int64 `protobuf:"varint,7,rep,packed,name=output_fields_id,json=outputFieldsId,proto3" json:"output_fields_id,omitempty"`
TravelTimestamp uint64 `protobuf:"varint,8,opt,name=travel_timestamp,json=travelTimestamp,proto3" json:"travel_timestamp,omitempty"`
GuaranteeTimestamp uint64 `protobuf:"varint,9,opt,name=guarantee_timestamp,json=guaranteeTimestamp,proto3" json:"guarantee_timestamp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -1381,9 +1381,9 @@ func (m *RetrieveRequest) GetIds() *schemapb.IDs {
return nil
}
func (m *RetrieveRequest) GetOutputFields() []string {
func (m *RetrieveRequest) GetOutputFieldsId() []int64 {
if m != nil {
return m.OutputFields
return m.OutputFieldsId
}
return nil
}
@ -2212,127 +2212,126 @@ func init() {
func init() { proto.RegisterFile("internal.proto", fileDescriptor_41f4a519b878ee3b) }
var fileDescriptor_41f4a519b878ee3b = []byte{
// 1938 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcf, 0x73, 0x23, 0x47,
0xf5, 0xff, 0x8e, 0x46, 0xb6, 0xa4, 0xa7, 0xb1, 0xad, 0xed, 0xf5, 0x6e, 0xc6, 0xde, 0xcd, 0xc6,
0x99, 0xe4, 0x0b, 0x26, 0x5b, 0xac, 0x17, 0x07, 0x48, 0x8a, 0xa2, 0xd8, 0xc4, 0x56, 0x58, 0x54,
0x1b, 0x1b, 0xd3, 0xde, 0xa4, 0x0a, 0x2e, 0x53, 0xad, 0x99, 0xb6, 0x3c, 0x64, 0x7e, 0x31, 0xdd,
0xf2, 0xae, 0x72, 0xe2, 0xc0, 0x09, 0x0a, 0x0e, 0x54, 0xf1, 0x6f, 0x70, 0xe5, 0xc4, 0x8f, 0xe2,
0x44, 0x15, 0x7f, 0x01, 0x7f, 0x05, 0x47, 0x28, 0x4e, 0x54, 0xbf, 0xee, 0x19, 0x8d, 0x64, 0xd9,
0x78, 0xbd, 0x05, 0x84, 0x82, 0xdb, 0xf4, 0xe7, 0xbd, 0xfe, 0xf1, 0x3e, 0xef, 0x47, 0x3f, 0xb5,
0x60, 0x35, 0x4a, 0x25, 0x2f, 0x52, 0x16, 0x3f, 0xc8, 0x8b, 0x4c, 0x66, 0xe4, 0x56, 0x12, 0xc5,
0x67, 0x63, 0xa1, 0x47, 0x0f, 0x4a, 0xe1, 0xa6, 0x13, 0x64, 0x49, 0x92, 0xa5, 0x1a, 0xde, 0x74,
0x44, 0x70, 0xca, 0x13, 0xa6, 0x47, 0xde, 0x6f, 0x2c, 0x58, 0xd9, 0xcf, 0x92, 0x3c, 0x4b, 0x79,
0x2a, 0x07, 0xe9, 0x49, 0x46, 0x6e, 0xc3, 0x72, 0x9a, 0x85, 0x7c, 0xd0, 0x77, 0xad, 0x2d, 0x6b,
0xdb, 0xa6, 0x66, 0x44, 0x08, 0x34, 0x8b, 0x2c, 0xe6, 0x6e, 0x63, 0xcb, 0xda, 0xee, 0x50, 0xfc,
0x26, 0x8f, 0x00, 0x84, 0x64, 0x92, 0xfb, 0x41, 0x16, 0x72, 0xd7, 0xde, 0xb2, 0xb6, 0x57, 0x77,
0xb7, 0x1e, 0x2c, 0x3c, 0xc5, 0x83, 0x63, 0xa5, 0xb8, 0x9f, 0x85, 0x9c, 0x76, 0x44, 0xf9, 0x49,
0xde, 0x03, 0xe0, 0xcf, 0x65, 0xc1, 0xfc, 0x28, 0x3d, 0xc9, 0xdc, 0xe6, 0x96, 0xbd, 0xdd, 0xdd,
0x7d, 0x7d, 0x76, 0x01, 0x73, 0xf8, 0x27, 0x7c, 0xf2, 0x31, 0x8b, 0xc7, 0xfc, 0x88, 0x45, 0x05,
0xed, 0xe0, 0x24, 0x75, 0x5c, 0xef, 0x4f, 0x16, 0xac, 0x55, 0x06, 0xe0, 0x1e, 0x82, 0x7c, 0x0d,
0x96, 0x70, 0x0b, 0xb4, 0xa0, 0xbb, 0xfb, 0xe6, 0x05, 0x27, 0x9a, 0xb1, 0x9b, 0xea, 0x29, 0xe4,
0x23, 0xb8, 0x29, 0xc6, 0xc3, 0xa0, 0x14, 0xf9, 0x88, 0x0a, 0xb7, 0x81, 0x47, 0xbb, 0xda, 0x4a,
0xa4, 0xbe, 0x80, 0x39, 0xd2, 0xdb, 0xb0, 0xac, 0x56, 0x1a, 0x0b, 0x64, 0xa9, 0xbb, 0x7b, 0x67,
0xa1, 0x91, 0xc7, 0xa8, 0x42, 0x8d, 0xaa, 0x77, 0x07, 0x36, 0x1e, 0x73, 0x39, 0x67, 0x1d, 0xe5,
0x3f, 0x18, 0x73, 0x21, 0x8d, 0xf0, 0x69, 0x94, 0xf0, 0xa7, 0x51, 0xf0, 0xc9, 0xfe, 0x29, 0x4b,
0x53, 0x1e, 0x97, 0xc2, 0x57, 0xe1, 0xce, 0x63, 0x8e, 0x13, 0x22, 0x21, 0xa3, 0x40, 0xcc, 0x89,
0x6f, 0xc1, 0xcd, 0xc7, 0x5c, 0xf6, 0xc3, 0x39, 0xf8, 0x63, 0x68, 0x1f, 0x2a, 0x67, 0xab, 0x30,
0xf8, 0x2a, 0xb4, 0x58, 0x18, 0x16, 0x5c, 0x08, 0xc3, 0xe2, 0xdd, 0x85, 0x27, 0x7e, 0x5f, 0xeb,
0xd0, 0x52, 0x79, 0x51, 0x98, 0x78, 0xdf, 0x07, 0x18, 0xa4, 0x91, 0x3c, 0x62, 0x05, 0x4b, 0xc4,
0x85, 0x01, 0xd6, 0x07, 0x47, 0x48, 0x56, 0x48, 0x3f, 0x47, 0x3d, 0x43, 0xf9, 0x15, 0xa2, 0xa1,
0x8b, 0xd3, 0xf4, 0xea, 0xde, 0x77, 0x01, 0x8e, 0x65, 0x11, 0xa5, 0xa3, 0x0f, 0x23, 0x21, 0xd5,
0x5e, 0x67, 0x4a, 0x4f, 0x19, 0x61, 0x6f, 0x77, 0xa8, 0x19, 0xd5, 0xdc, 0xd1, 0xb8, 0xba, 0x3b,
0x1e, 0x41, 0xb7, 0xa4, 0xfb, 0x40, 0x8c, 0xc8, 0x43, 0x68, 0x0e, 0x99, 0xe0, 0x97, 0xd2, 0x73,
0x20, 0x46, 0x7b, 0x4c, 0x70, 0x8a, 0x9a, 0xde, 0x8f, 0x6d, 0x78, 0x65, 0xbf, 0xe0, 0x18, 0xfc,
0x71, 0xcc, 0x03, 0x19, 0x65, 0xa9, 0xe1, 0xfe, 0xc5, 0x57, 0x23, 0xaf, 0x40, 0x2b, 0x1c, 0xfa,
0x29, 0x4b, 0x4a, 0xb2, 0x97, 0xc3, 0xe1, 0x21, 0x4b, 0x38, 0xf9, 0x1c, 0xac, 0x06, 0xd5, 0xfa,
0x0a, 0xc1, 0x98, 0xeb, 0xd0, 0x39, 0x94, 0xbc, 0x09, 0x2b, 0x39, 0x2b, 0x64, 0x54, 0xa9, 0x35,
0x51, 0x6d, 0x16, 0x54, 0x0e, 0x0d, 0x87, 0x83, 0xbe, 0xbb, 0x84, 0xce, 0xc2, 0x6f, 0xe2, 0x81,
0x33, 0x5d, 0x6b, 0xd0, 0x77, 0x97, 0x51, 0x36, 0x83, 0x91, 0x2d, 0xe8, 0x56, 0x0b, 0x0d, 0xfa,
0x6e, 0x0b, 0x55, 0xea, 0x90, 0x72, 0x8e, 0xae, 0x45, 0x6e, 0x7b, 0xcb, 0xda, 0x76, 0xa8, 0x19,
0x91, 0x87, 0x70, 0xf3, 0x2c, 0x2a, 0xe4, 0x98, 0xc5, 0x26, 0x3e, 0xd5, 0x39, 0x84, 0xdb, 0x41,
0x0f, 0x2e, 0x12, 0x91, 0x5d, 0x58, 0xcf, 0x4f, 0x27, 0x22, 0x0a, 0xe6, 0xa6, 0x00, 0x4e, 0x59,
0x28, 0xf3, 0x7e, 0x6f, 0xc1, 0xad, 0x7e, 0x91, 0xe5, 0x9f, 0x09, 0x57, 0x94, 0x24, 0x37, 0x2f,
0x21, 0x79, 0xe9, 0x3c, 0xc9, 0xde, 0x4f, 0x1b, 0x70, 0x5b, 0x47, 0xd4, 0x51, 0x49, 0xec, 0x3f,
0xc1, 0x8a, 0xcf, 0xc3, 0xda, 0x74, 0x57, 0xad, 0xb0, 0xd8, 0x8c, 0xff, 0x87, 0xd5, 0xca, 0xc1,
0x5a, 0xef, 0x5f, 0x1b, 0x52, 0xde, 0x4f, 0x1a, 0xb0, 0xae, 0x9c, 0xfa, 0x3f, 0x36, 0x14, 0x1b,
0xbf, 0x6d, 0x00, 0xd1, 0xd1, 0x31, 0x48, 0x43, 0xfe, 0xfc, 0xdf, 0xc9, 0xc5, 0xab, 0x00, 0x27,
0x11, 0x8f, 0xc3, 0x3a, 0x0f, 0x1d, 0x44, 0x5e, 0x8a, 0x03, 0x17, 0x5a, 0xb8, 0x48, 0x65, 0x7f,
0x39, 0x54, 0xb7, 0x89, 0xee, 0x2c, 0xcc, 0x6d, 0xd2, 0xbe, 0xf2, 0x6d, 0x82, 0xd3, 0xcc, 0x6d,
0xf2, 0x4b, 0x1b, 0x56, 0x06, 0xa9, 0xe0, 0x85, 0xfc, 0x6f, 0x0e, 0x24, 0x72, 0x17, 0x3a, 0x82,
0x8f, 0x12, 0xd5, 0xe0, 0xf4, 0xb1, 0x58, 0xdb, 0x74, 0x0a, 0x28, 0x69, 0xa0, 0x2b, 0xeb, 0xa0,
0xef, 0x76, 0xb4, 0x6b, 0x2b, 0x80, 0xdc, 0x03, 0x90, 0x51, 0xc2, 0x85, 0x64, 0x49, 0xae, 0x2b,
0x72, 0x93, 0xd6, 0x10, 0x75, 0x0b, 0x14, 0xd9, 0xb3, 0x41, 0x5f, 0xb8, 0xdd, 0x2d, 0x5b, 0xb5,
0x03, 0x7a, 0x44, 0xbe, 0x0c, 0xed, 0x22, 0x7b, 0xe6, 0x87, 0x4c, 0x32, 0xd7, 0x41, 0xe7, 0x6d,
0x2c, 0x24, 0x7b, 0x2f, 0xce, 0x86, 0xb4, 0x55, 0x64, 0xcf, 0xfa, 0x4c, 0x32, 0xef, 0xaf, 0x36,
0xac, 0x1c, 0x73, 0x56, 0x04, 0xa7, 0xd7, 0x77, 0xd8, 0x17, 0xa0, 0x57, 0x70, 0x31, 0x8e, 0xa5,
0x3f, 0x35, 0x4b, 0x7b, 0x6e, 0x4d, 0xe3, 0xfb, 0x95, 0x71, 0x25, 0xe5, 0xf6, 0x25, 0x94, 0x37,
0x17, 0x50, 0xee, 0x81, 0x53, 0xe3, 0x57, 0xb8, 0x4b, 0x68, 0xfa, 0x0c, 0x46, 0x7a, 0x60, 0x87,
0x22, 0x46, 0x8f, 0x75, 0xa8, 0xfa, 0x24, 0xf7, 0xe1, 0x46, 0x1e, 0xb3, 0x80, 0x9f, 0x66, 0x71,
0xc8, 0x0b, 0x7f, 0x54, 0x64, 0xe3, 0x1c, 0xdd, 0xe5, 0xd0, 0x5e, 0x4d, 0xf0, 0x58, 0xe1, 0xe4,
0x1d, 0x68, 0x87, 0x22, 0xf6, 0xe5, 0x24, 0xe7, 0xe8, 0xb2, 0xd5, 0x0b, 0x6c, 0xef, 0x8b, 0xf8,
0xe9, 0x24, 0xe7, 0xb4, 0x15, 0xea, 0x0f, 0xf2, 0x10, 0xd6, 0x05, 0x2f, 0x22, 0x16, 0x47, 0x9f,
0xf2, 0xd0, 0xe7, 0xcf, 0xf3, 0xc2, 0xcf, 0x63, 0x96, 0xa2, 0x67, 0x1d, 0x4a, 0xa6, 0xb2, 0x0f,
0x9e, 0xe7, 0xc5, 0x51, 0xcc, 0x52, 0xb2, 0x0d, 0xbd, 0x6c, 0x2c, 0xf3, 0xb1, 0xf4, 0x31, 0xfb,
0x84, 0x1f, 0x85, 0xe8, 0x68, 0x9b, 0xae, 0x6a, 0xfc, 0x9b, 0x08, 0x0f, 0x42, 0x45, 0xad, 0x2c,
0xd8, 0x19, 0x8f, 0xfd, 0x2a, 0x02, 0xdc, 0xee, 0x96, 0xb5, 0xdd, 0xa4, 0x6b, 0x1a, 0x7f, 0x5a,
0xc2, 0x64, 0x07, 0x6e, 0x8e, 0xc6, 0xac, 0x60, 0xa9, 0xe4, 0xbc, 0xa6, 0xed, 0xa0, 0x36, 0xa9,
0x44, 0xd5, 0x04, 0xef, 0xcf, 0x35, 0xd7, 0x2b, 0x2f, 0x89, 0x6b, 0xb8, 0xfe, 0x3a, 0x7d, 0xe1,
0xc2, 0x78, 0xb1, 0x17, 0xc7, 0xcb, 0x6b, 0xd0, 0x4d, 0xb8, 0x2c, 0xa2, 0x40, 0xfb, 0x45, 0xa7,
0x31, 0x68, 0x08, 0xc9, 0x27, 0xd0, 0x3c, 0x8d, 0xa4, 0x0e, 0x08, 0x87, 0xe2, 0xb7, 0x9a, 0x24,
0xe2, 0x28, 0xe0, 0xa1, 0x3f, 0x8c, 0xb3, 0xa1, 0xf1, 0x03, 0x68, 0x48, 0x45, 0xbf, 0xe2, 0xdf,
0x28, 0xa4, 0xe3, 0xc4, 0x0f, 0xb2, 0x71, 0x2a, 0x5d, 0xc0, 0xa8, 0x5b, 0xd5, 0xf8, 0xe1, 0x38,
0xd9, 0x57, 0x28, 0x79, 0x03, 0x56, 0x8c, 0x66, 0x76, 0x72, 0x22, 0xb8, 0x44, 0xf2, 0x6d, 0xea,
0x68, 0xf0, 0xdb, 0x88, 0x91, 0xaf, 0xc3, 0xa6, 0xe0, 0x2c, 0xe6, 0xa1, 0x5f, 0xe5, 0xb8, 0xf0,
0x05, 0x32, 0xcb, 0x43, 0x77, 0x19, 0x1d, 0xeb, 0x6a, 0x8d, 0xe3, 0x4a, 0xe1, 0xd8, 0xc8, 0x95,
0xdf, 0x2a, 0x1a, 0x6a, 0xd3, 0x5a, 0xd8, 0x8a, 0x91, 0xa9, 0xa8, 0x9a, 0xf0, 0x2e, 0xb8, 0xa3,
0x38, 0x1b, 0xb2, 0xd8, 0x3f, 0xb7, 0x2b, 0x56, 0x6d, 0x9b, 0xde, 0xd6, 0xf2, 0xe3, 0xb9, 0x2d,
0xbd, 0xbf, 0x34, 0x60, 0x8d, 0x2a, 0xee, 0xf8, 0x19, 0xff, 0x8f, 0x4f, 0xf7, 0xb7, 0xc0, 0x8e,
0x42, 0x81, 0xe9, 0xde, 0xdd, 0x75, 0x67, 0xcf, 0x6d, 0x7e, 0xb2, 0x0f, 0xfa, 0x82, 0x2a, 0x25,
0xe5, 0xc6, 0x99, 0x84, 0x33, 0xec, 0x3a, 0xf5, 0x6c, 0x5b, 0x98, 0x6b, 0xed, 0x17, 0xca, 0xb5,
0xce, 0x85, 0xb9, 0xf6, 0x6b, 0xbb, 0xce, 0xfc, 0x67, 0x35, 0xdb, 0x0c, 0xa5, 0xcd, 0xab, 0x50,
0xfa, 0x08, 0xba, 0xa6, 0x78, 0xe1, 0x8d, 0xb3, 0x84, 0x37, 0xce, 0xbd, 0x85, 0x73, 0x90, 0x5f,
0x75, 0xdb, 0x50, 0xdd, 0xd3, 0x08, 0xf5, 0x4d, 0xbe, 0x01, 0x77, 0xce, 0x67, 0x4d, 0x61, 0x38,
0x2a, 0xd3, 0x66, 0x63, 0x3e, 0x6d, 0x4a, 0x12, 0x43, 0xf2, 0x25, 0x58, 0xaf, 0xe5, 0xcd, 0x74,
0xa2, 0x76, 0x6d, 0x2d, 0xa7, 0xa6, 0x53, 0xae, 0x9f, 0x39, 0x7f, 0xb4, 0x60, 0xa5, 0xcf, 0x63,
0x2e, 0x5f, 0x22, 0x6f, 0x16, 0xb4, 0x2f, 0x8d, 0x85, 0xed, 0xcb, 0x4c, 0x7f, 0x60, 0x5f, 0xde,
0x1f, 0x34, 0xcf, 0xf5, 0x07, 0xaf, 0x83, 0x93, 0x17, 0x51, 0xc2, 0x8a, 0x89, 0xff, 0x09, 0x9f,
0x94, 0xb9, 0xd3, 0x35, 0xd8, 0x13, 0x3e, 0x11, 0x5e, 0x0a, 0x9b, 0x1f, 0x66, 0x2c, 0xdc, 0x63,
0x31, 0x4b, 0x03, 0x6e, 0xcc, 0x14, 0xd7, 0xb7, 0xec, 0x1e, 0x40, 0x8d, 0xc9, 0x06, 0x6e, 0x58,
0x43, 0xbc, 0xbf, 0x59, 0xd0, 0x51, 0x1b, 0x62, 0x57, 0x7d, 0x8d, 0xf5, 0x67, 0xda, 0xa9, 0xc6,
0x82, 0x76, 0xaa, 0x6a, 0x8c, 0x4b, 0xba, 0xa6, 0x9d, 0x72, 0xad, 0xe3, 0x6d, 0xce, 0x76, 0xbc,
0xaf, 0x41, 0x37, 0x52, 0x07, 0xf2, 0x73, 0x26, 0x4f, 0x35, 0x4f, 0x1d, 0x0a, 0x08, 0x1d, 0x29,
0x44, 0xb5, 0xc4, 0xa5, 0x02, 0xb6, 0xc4, 0xcb, 0x57, 0x6e, 0x89, 0xcd, 0x22, 0xd8, 0x12, 0xff,
0xae, 0x01, 0xae, 0xa1, 0x78, 0xfa, 0xbe, 0xf4, 0x51, 0x1e, 0xe2, 0x33, 0xd7, 0x5d, 0xe8, 0x54,
0x51, 0x66, 0x9e, 0x77, 0xa6, 0x80, 0xe2, 0xf5, 0x80, 0x27, 0x59, 0x31, 0x39, 0x8e, 0x3e, 0xe5,
0xc6, 0xf0, 0x1a, 0xa2, 0x6c, 0x3b, 0x1c, 0x27, 0x34, 0x7b, 0x26, 0x4c, 0x85, 0x2d, 0x87, 0xca,
0xb6, 0x00, 0x7f, 0xc8, 0x60, 0x75, 0x42, 0xcb, 0x9b, 0x14, 0x34, 0xa4, 0xaa, 0x12, 0xd9, 0x80,
0x36, 0x4f, 0x43, 0x2d, 0x5d, 0x42, 0x69, 0x8b, 0xa7, 0x21, 0x8a, 0x06, 0xb0, 0x6a, 0xde, 0x95,
0x32, 0x81, 0xd5, 0xd6, 0xd4, 0x58, 0xef, 0x82, 0xc7, 0xbc, 0x03, 0x31, 0x3a, 0x32, 0x9a, 0x74,
0x45, 0x3f, 0x2d, 0x99, 0x21, 0xf9, 0x00, 0x1c, 0xb5, 0x4b, 0xb5, 0x50, 0xeb, 0xca, 0x0b, 0x75,
0x79, 0x1a, 0x96, 0x03, 0xef, 0xe7, 0x16, 0xdc, 0x38, 0x47, 0xe1, 0x35, 0xe2, 0xe8, 0x09, 0xb4,
0x8f, 0xf9, 0x48, 0x2d, 0x51, 0xbe, 0x96, 0xed, 0x5c, 0xf4, 0xf8, 0x7a, 0x81, 0xc3, 0x68, 0xb5,
0x80, 0xf7, 0x23, 0x0b, 0x00, 0x03, 0x1a, 0x87, 0xe7, 0x82, 0xc5, 0xba, 0x4e, 0xb0, 0xa8, 0x5e,
0x52, 0xb5, 0x24, 0x05, 0x8f, 0x99, 0x9c, 0xd6, 0x27, 0x61, 0x7c, 0x4f, 0xd2, 0x71, 0x42, 0xb5,
0xa8, 0x4c, 0x5a, 0xef, 0x67, 0x16, 0x00, 0x16, 0x58, 0x7d, 0x8c, 0xf9, 0xdb, 0xd5, 0xba, 0xfc,
0x47, 0x60, 0x63, 0x36, 0x25, 0xf6, 0xca, 0x94, 0x10, 0xc8, 0x91, 0xbd, 0xc8, 0x86, 0x8a, 0xa3,
0xa9, 0xf1, 0x26, 0x6b, 0x34, 0x2f, 0xbf, 0xb0, 0xc0, 0xa9, 0xd1, 0x27, 0x66, 0xb3, 0xd7, 0x9a,
0xcf, 0x5e, 0xec, 0xf0, 0x54, 0x44, 0xfb, 0xa2, 0x16, 0xe4, 0xc9, 0x34, 0xc8, 0x37, 0xa0, 0x8d,
0x94, 0xd4, 0xa2, 0x3c, 0x35, 0x51, 0x7e, 0x1f, 0x6e, 0x14, 0x3c, 0xe0, 0xa9, 0x8c, 0x27, 0x7e,
0x92, 0x85, 0xd1, 0x49, 0xc4, 0x43, 0x8c, 0xf5, 0x36, 0xed, 0x95, 0x82, 0x03, 0x83, 0x7b, 0x7f,
0xb0, 0x60, 0xf5, 0x3b, 0x63, 0x5e, 0x4c, 0x0e, 0xb3, 0x90, 0xeb, 0x93, 0xbd, 0x78, 0x04, 0xbd,
0x87, 0xb6, 0x18, 0x7a, 0x74, 0x08, 0xbd, 0xf1, 0x8f, 0x43, 0x48, 0xd0, 0xb6, 0x30, 0x61, 0xa3,
0x28, 0xd6, 0x3f, 0xec, 0xaf, 0x42, 0xf1, 0xd4, 0xb1, 0xe6, 0xea, 0xd4, 0x14, 0xff, 0xd0, 0x82,
0x6e, 0x2d, 0x59, 0x54, 0xc9, 0x37, 0xf7, 0x83, 0xbe, 0x56, 0x2c, 0x2c, 0x82, 0xdd, 0x60, 0xfa,
0x7c, 0x47, 0xd6, 0x61, 0x29, 0x11, 0x23, 0xe3, 0x71, 0x87, 0xea, 0x01, 0xd9, 0x84, 0x76, 0x22,
0x46, 0xf8, 0xfb, 0xc7, 0x54, 0xce, 0x6a, 0xac, 0xdc, 0x36, 0xed, 0x6c, 0x74, 0x01, 0x99, 0x02,
0xde, 0xaf, 0x2c, 0x20, 0xa6, 0x71, 0x78, 0xa9, 0x37, 0x5e, 0x0c, 0xd8, 0xfa, 0x13, 0x64, 0x43,
0x77, 0x66, 0x75, 0x6c, 0xee, 0xca, 0xb3, 0xcf, 0x5d, 0x79, 0xf7, 0xe1, 0x46, 0xc8, 0x4f, 0x98,
0xea, 0x71, 0xe6, 0x8f, 0xdc, 0x33, 0x82, 0xaa, 0x15, 0x7b, 0xeb, 0x5d, 0xe8, 0x54, 0x7f, 0xad,
0x90, 0x1e, 0x38, 0x83, 0x34, 0x92, 0xf8, 0x03, 0x2d, 0x4a, 0x47, 0xbd, 0xff, 0x23, 0x5d, 0x68,
0x7d, 0x8b, 0xb3, 0x58, 0x9e, 0x4e, 0x7a, 0x16, 0x71, 0xa0, 0xfd, 0xfe, 0x30, 0xcd, 0x8a, 0x84,
0xc5, 0xbd, 0xc6, 0xde, 0x3b, 0xdf, 0xfb, 0xca, 0x28, 0x92, 0xa7, 0xe3, 0xa1, 0xb2, 0x64, 0x47,
0x9b, 0xf6, 0xc5, 0x28, 0x33, 0x5f, 0x3b, 0xa5, 0xd7, 0x76, 0xd0, 0xda, 0x6a, 0x98, 0x0f, 0x87,
0xcb, 0x88, 0xbc, 0xfd, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x93, 0x3f, 0x71, 0x80, 0x1a,
0x00, 0x00,
// 1931 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x73, 0x23, 0x47,
0xf5, 0xff, 0x8f, 0x46, 0xb6, 0xa4, 0x23, 0xd9, 0xd6, 0xf6, 0x7a, 0x37, 0x63, 0xef, 0x66, 0xe3,
0x4c, 0xf2, 0x07, 0x93, 0x2d, 0xd6, 0x8b, 0x03, 0x24, 0x45, 0x51, 0x6c, 0x62, 0x2b, 0x2c, 0xaa,
0x8d, 0x8d, 0x69, 0x6f, 0x52, 0x05, 0x2f, 0x53, 0xad, 0x99, 0xb6, 0x3c, 0x64, 0x6e, 0x4c, 0xb7,
0xbc, 0xab, 0x3c, 0xf1, 0xc0, 0x13, 0x14, 0x3c, 0x50, 0xc5, 0xd7, 0xe0, 0x95, 0x27, 0x2e, 0xc5,
0x13, 0x55, 0x7c, 0x02, 0x3e, 0x05, 0xaf, 0x14, 0xc5, 0x03, 0xd5, 0xa7, 0x7b, 0x2e, 0x92, 0x65,
0xe3, 0xf5, 0x16, 0x10, 0x0a, 0xde, 0xa6, 0x7f, 0xe7, 0xf4, 0xe5, 0xfc, 0xce, 0xa5, 0x8f, 0x5a,
0xb0, 0x1a, 0x26, 0x92, 0xe7, 0x09, 0x8b, 0x1e, 0x64, 0x79, 0x2a, 0x53, 0x72, 0x2b, 0x0e, 0xa3,
0xb3, 0x89, 0xd0, 0xa3, 0x07, 0x85, 0x70, 0xb3, 0xe7, 0xa7, 0x71, 0x9c, 0x26, 0x1a, 0xde, 0xec,
0x09, 0xff, 0x94, 0xc7, 0x4c, 0x8f, 0xdc, 0xdf, 0x58, 0xb0, 0xb2, 0x9f, 0xc6, 0x59, 0x9a, 0xf0,
0x44, 0x0e, 0x93, 0x93, 0x94, 0xdc, 0x86, 0xe5, 0x24, 0x0d, 0xf8, 0x70, 0xe0, 0x58, 0x5b, 0xd6,
0xb6, 0x4d, 0xcd, 0x88, 0x10, 0x68, 0xe6, 0x69, 0xc4, 0x9d, 0xc6, 0x96, 0xb5, 0xdd, 0xa1, 0xf8,
0x4d, 0x1e, 0x01, 0x08, 0xc9, 0x24, 0xf7, 0xfc, 0x34, 0xe0, 0x8e, 0xbd, 0x65, 0x6d, 0xaf, 0xee,
0x6e, 0x3d, 0x58, 0x78, 0x8a, 0x07, 0xc7, 0x4a, 0x71, 0x3f, 0x0d, 0x38, 0xed, 0x88, 0xe2, 0x93,
0xbc, 0x07, 0xc0, 0x9f, 0xcb, 0x9c, 0x79, 0x61, 0x72, 0x92, 0x3a, 0xcd, 0x2d, 0x7b, 0xbb, 0xbb,
0xfb, 0xfa, 0xec, 0x02, 0xe6, 0xf0, 0x4f, 0xf8, 0xf4, 0x63, 0x16, 0x4d, 0xf8, 0x11, 0x0b, 0x73,
0xda, 0xc1, 0x49, 0xea, 0xb8, 0xee, 0x9f, 0x2c, 0x58, 0x2b, 0x0d, 0xc0, 0x3d, 0x04, 0xf9, 0x1a,
0x2c, 0xe1, 0x16, 0x68, 0x41, 0x77, 0xf7, 0xcd, 0x0b, 0x4e, 0x34, 0x63, 0x37, 0xd5, 0x53, 0xc8,
0x47, 0x70, 0x53, 0x4c, 0x46, 0x7e, 0x21, 0xf2, 0x10, 0x15, 0x4e, 0x03, 0x8f, 0x76, 0xb5, 0x95,
0x48, 0x7d, 0x01, 0x73, 0xa4, 0xb7, 0x61, 0x59, 0xad, 0x34, 0x11, 0xc8, 0x52, 0x77, 0xf7, 0xce,
0x42, 0x23, 0x8f, 0x51, 0x85, 0x1a, 0x55, 0xf7, 0x0e, 0x6c, 0x3c, 0xe6, 0x72, 0xce, 0x3a, 0xca,
0x7f, 0x30, 0xe1, 0x42, 0x1a, 0xe1, 0xd3, 0x30, 0xe6, 0x4f, 0x43, 0xff, 0x93, 0xfd, 0x53, 0x96,
0x24, 0x3c, 0x2a, 0x84, 0xaf, 0xc2, 0x9d, 0xc7, 0x1c, 0x27, 0x84, 0x42, 0x86, 0xbe, 0x98, 0x13,
0xdf, 0x82, 0x9b, 0x8f, 0xb9, 0x1c, 0x04, 0x73, 0xf0, 0xc7, 0xd0, 0x3e, 0x54, 0xce, 0x56, 0x61,
0xf0, 0x55, 0x68, 0xb1, 0x20, 0xc8, 0xb9, 0x10, 0x86, 0xc5, 0xbb, 0x0b, 0x4f, 0xfc, 0xbe, 0xd6,
0xa1, 0x85, 0xf2, 0xa2, 0x30, 0x71, 0xbf, 0x0f, 0x30, 0x4c, 0x42, 0x79, 0xc4, 0x72, 0x16, 0x8b,
0x0b, 0x03, 0x6c, 0x00, 0x3d, 0x21, 0x59, 0x2e, 0xbd, 0x0c, 0xf5, 0x0c, 0xe5, 0x57, 0x88, 0x86,
0x2e, 0x4e, 0xd3, 0xab, 0xbb, 0xdf, 0x05, 0x38, 0x96, 0x79, 0x98, 0x8c, 0x3f, 0x0c, 0x85, 0x54,
0x7b, 0x9d, 0x29, 0x3d, 0x65, 0x84, 0xbd, 0xdd, 0xa1, 0x66, 0x54, 0x73, 0x47, 0xe3, 0xea, 0xee,
0x78, 0x04, 0xdd, 0x82, 0xee, 0x03, 0x31, 0x26, 0x0f, 0xa1, 0x39, 0x62, 0x82, 0x5f, 0x4a, 0xcf,
0x81, 0x18, 0xef, 0x31, 0xc1, 0x29, 0x6a, 0xba, 0x3f, 0xb6, 0xe1, 0x95, 0xfd, 0x9c, 0x63, 0xf0,
0x47, 0x11, 0xf7, 0x65, 0x98, 0x26, 0x86, 0xfb, 0x17, 0x5f, 0x8d, 0xbc, 0x02, 0xad, 0x60, 0xe4,
0x25, 0x2c, 0x2e, 0xc8, 0x5e, 0x0e, 0x46, 0x87, 0x2c, 0xe6, 0xe4, 0x73, 0xb0, 0xea, 0x97, 0xeb,
0x2b, 0x04, 0x63, 0xae, 0x43, 0xe7, 0x50, 0xf2, 0x26, 0xac, 0x64, 0x2c, 0x97, 0x61, 0xa9, 0xd6,
0x44, 0xb5, 0x59, 0x50, 0x39, 0x34, 0x18, 0x0d, 0x07, 0xce, 0x12, 0x3a, 0x0b, 0xbf, 0x89, 0x0b,
0xbd, 0x6a, 0xad, 0xe1, 0xc0, 0x59, 0x46, 0xd9, 0x0c, 0x46, 0xb6, 0xa0, 0x5b, 0x2e, 0x34, 0x1c,
0x38, 0x2d, 0x54, 0xa9, 0x43, 0xca, 0x39, 0xba, 0x16, 0x39, 0xed, 0x2d, 0x6b, 0xbb, 0x47, 0xcd,
0x88, 0x3c, 0x84, 0x9b, 0x67, 0x61, 0x2e, 0x27, 0x2c, 0x32, 0xf1, 0xa9, 0xce, 0x21, 0x9c, 0x0e,
0x7a, 0x70, 0x91, 0x88, 0xec, 0xc2, 0x7a, 0x76, 0x3a, 0x15, 0xa1, 0x3f, 0x37, 0x05, 0x70, 0xca,
0x42, 0x99, 0xfb, 0x7b, 0x0b, 0x6e, 0x0d, 0xf2, 0x34, 0xfb, 0x4c, 0xb8, 0xa2, 0x20, 0xb9, 0x79,
0x09, 0xc9, 0x4b, 0xe7, 0x49, 0x76, 0x7f, 0xda, 0x80, 0xdb, 0x3a, 0xa2, 0x8e, 0x0a, 0x62, 0xff,
0x09, 0x56, 0x7c, 0x1e, 0xd6, 0xaa, 0x5d, 0xb5, 0xc2, 0x62, 0x33, 0xfe, 0x1f, 0x56, 0x4b, 0x07,
0x6b, 0xbd, 0x7f, 0x6d, 0x48, 0xb9, 0x3f, 0x69, 0xc0, 0xba, 0x72, 0xea, 0xff, 0xd8, 0x50, 0x6c,
0xfc, 0xb6, 0x01, 0x44, 0x47, 0xc7, 0x30, 0x09, 0xf8, 0xf3, 0x7f, 0x27, 0x17, 0xaf, 0x02, 0x9c,
0x84, 0x3c, 0x0a, 0xea, 0x3c, 0x74, 0x10, 0x79, 0x29, 0x0e, 0x1c, 0x68, 0xe1, 0x22, 0xa5, 0xfd,
0xc5, 0x50, 0xdd, 0x26, 0xba, 0xb3, 0x30, 0xb7, 0x49, 0xfb, 0xca, 0xb7, 0x09, 0x4e, 0x33, 0xb7,
0xc9, 0x2f, 0x6d, 0x58, 0x19, 0x26, 0x82, 0xe7, 0xf2, 0xbf, 0x39, 0x90, 0xc8, 0x5d, 0xe8, 0x08,
0x3e, 0x8e, 0x55, 0x83, 0x33, 0xc0, 0x62, 0x6d, 0xd3, 0x0a, 0x50, 0x52, 0x5f, 0x57, 0xd6, 0xe1,
0xc0, 0xe9, 0x68, 0xd7, 0x96, 0x00, 0xb9, 0x07, 0x20, 0xc3, 0x98, 0x0b, 0xc9, 0xe2, 0x4c, 0x57,
0xe4, 0x26, 0xad, 0x21, 0xea, 0x16, 0xc8, 0xd3, 0x67, 0xc3, 0x81, 0x70, 0xba, 0x5b, 0xb6, 0x6a,
0x07, 0xf4, 0x88, 0x7c, 0x19, 0xda, 0x79, 0xfa, 0xcc, 0x0b, 0x98, 0x64, 0x4e, 0x0f, 0x9d, 0xb7,
0xb1, 0x90, 0xec, 0xbd, 0x28, 0x1d, 0xd1, 0x56, 0x9e, 0x3e, 0x1b, 0x30, 0xc9, 0xdc, 0xbf, 0xd8,
0xb0, 0x72, 0xcc, 0x59, 0xee, 0x9f, 0x5e, 0xdf, 0x61, 0x5f, 0x80, 0x7e, 0xce, 0xc5, 0x24, 0x92,
0x5e, 0x65, 0x96, 0xf6, 0xdc, 0x9a, 0xc6, 0xf7, 0x4b, 0xe3, 0x0a, 0xca, 0xed, 0x4b, 0x28, 0x6f,
0x2e, 0xa0, 0xdc, 0x85, 0x5e, 0x8d, 0x5f, 0xe1, 0x2c, 0xa1, 0xe9, 0x33, 0x18, 0xe9, 0x83, 0x1d,
0x88, 0x08, 0x3d, 0xd6, 0xa1, 0xea, 0x93, 0xdc, 0x87, 0x1b, 0x59, 0xc4, 0x7c, 0x7e, 0x9a, 0x46,
0x01, 0xcf, 0xbd, 0x71, 0x9e, 0x4e, 0x32, 0x74, 0x57, 0x8f, 0xf6, 0x6b, 0x82, 0xc7, 0x0a, 0x27,
0xef, 0x40, 0x3b, 0x10, 0x91, 0x27, 0xa7, 0x19, 0x47, 0x97, 0xad, 0x5e, 0x60, 0xfb, 0x40, 0x44,
0x4f, 0xa7, 0x19, 0xa7, 0xad, 0x40, 0x7f, 0x90, 0x87, 0xb0, 0x2e, 0x78, 0x1e, 0xb2, 0x28, 0xfc,
0x94, 0x07, 0x1e, 0x7f, 0x9e, 0xe5, 0x5e, 0x16, 0xb1, 0x04, 0x3d, 0xdb, 0xa3, 0xa4, 0x92, 0x7d,
0xf0, 0x3c, 0xcb, 0x8f, 0x22, 0x96, 0x90, 0x6d, 0xe8, 0xa7, 0x13, 0x99, 0x4d, 0xa4, 0x87, 0xd9,
0x27, 0xbc, 0x30, 0x40, 0x47, 0xdb, 0x74, 0x55, 0xe3, 0xdf, 0x44, 0x78, 0x18, 0x28, 0x6a, 0x65,
0xce, 0xce, 0x78, 0xe4, 0x95, 0x11, 0xe0, 0x74, 0xb7, 0xac, 0xed, 0x26, 0x5d, 0xd3, 0xf8, 0xd3,
0x02, 0x26, 0x3b, 0x70, 0x73, 0x3c, 0x61, 0x39, 0x4b, 0x24, 0xe7, 0x35, 0xed, 0x1e, 0x6a, 0x93,
0x52, 0x54, 0x4e, 0x70, 0xff, 0x5c, 0x73, 0xbd, 0xf2, 0x92, 0xb8, 0x86, 0xeb, 0xaf, 0xd3, 0x17,
0x2e, 0x8c, 0x17, 0x7b, 0x71, 0xbc, 0xbc, 0x06, 0xdd, 0x98, 0xcb, 0x3c, 0xf4, 0xb5, 0x5f, 0x74,
0x1a, 0x83, 0x86, 0x90, 0x7c, 0x02, 0xcd, 0xd3, 0x50, 0xea, 0x80, 0xe8, 0x51, 0xfc, 0x56, 0x93,
0x44, 0x14, 0xfa, 0x3c, 0xf0, 0x46, 0x51, 0x3a, 0x32, 0x7e, 0x00, 0x0d, 0xa9, 0xe8, 0x57, 0xfc,
0x1b, 0x85, 0x64, 0x12, 0x7b, 0x7e, 0x3a, 0x49, 0xa4, 0x03, 0x18, 0x75, 0xab, 0x1a, 0x3f, 0x9c,
0xc4, 0xfb, 0x0a, 0x25, 0x6f, 0xc0, 0x8a, 0xd1, 0x4c, 0x4f, 0x4e, 0x04, 0x97, 0x48, 0xbe, 0x4d,
0x7b, 0x1a, 0xfc, 0x36, 0x62, 0xe4, 0xeb, 0xb0, 0x29, 0x38, 0x8b, 0x78, 0xe0, 0x95, 0x39, 0x2e,
0x3c, 0x81, 0xcc, 0xf2, 0xc0, 0x59, 0x46, 0xc7, 0x3a, 0x5a, 0xe3, 0xb8, 0x54, 0x38, 0x36, 0x72,
0xe5, 0xb7, 0x92, 0x86, 0xda, 0xb4, 0x16, 0xb6, 0x62, 0xa4, 0x12, 0x95, 0x13, 0xde, 0x05, 0x67,
0x1c, 0xa5, 0x23, 0x16, 0x79, 0xe7, 0x76, 0xc5, 0xaa, 0x6d, 0xd3, 0xdb, 0x5a, 0x7e, 0x3c, 0xb7,
0xa5, 0xfb, 0xb7, 0x06, 0xac, 0x51, 0xc5, 0x1d, 0x3f, 0xe3, 0xff, 0xf1, 0xe9, 0xfe, 0x16, 0xd8,
0x61, 0x20, 0x30, 0xdd, 0xbb, 0xbb, 0xce, 0xec, 0xb9, 0xcd, 0x4f, 0xf6, 0xe1, 0x40, 0x50, 0xa5,
0xb4, 0x30, 0xe1, 0x5a, 0x57, 0x4e, 0xb8, 0xf6, 0x0b, 0x25, 0x5c, 0xe7, 0xc2, 0x84, 0xfb, 0xb5,
0x5d, 0xa7, 0xff, 0xb3, 0x9a, 0x72, 0x86, 0xd7, 0xe6, 0x55, 0x78, 0x7d, 0x04, 0x5d, 0x43, 0x28,
0x5e, 0x3b, 0x4b, 0x78, 0xed, 0xdc, 0x5b, 0x38, 0x07, 0x19, 0x56, 0x57, 0x0e, 0xd5, 0x8d, 0x8d,
0x50, 0xdf, 0xe4, 0x1b, 0x70, 0xe7, 0x7c, 0xea, 0xe4, 0x86, 0xa3, 0x22, 0x77, 0x36, 0xe6, 0x73,
0xa7, 0x20, 0x31, 0x20, 0x5f, 0x82, 0xf5, 0x5a, 0xf2, 0x54, 0x13, 0x75, 0xf6, 0xd4, 0x12, 0xab,
0x9a, 0x72, 0xfd, 0xf4, 0xf9, 0xa3, 0x05, 0x2b, 0x03, 0x1e, 0x71, 0xf9, 0x12, 0xc9, 0xb3, 0xa0,
0x87, 0x69, 0x2c, 0xec, 0x61, 0x66, 0x9a, 0x04, 0xfb, 0xf2, 0x26, 0xa1, 0x79, 0xae, 0x49, 0x78,
0x1d, 0x7a, 0x59, 0x1e, 0xc6, 0x2c, 0x9f, 0x7a, 0x9f, 0xf0, 0x69, 0x91, 0x40, 0x5d, 0x83, 0x3d,
0xe1, 0x53, 0xe1, 0x26, 0xb0, 0xf9, 0x61, 0xca, 0x82, 0x3d, 0x16, 0xb1, 0xc4, 0xe7, 0xc6, 0x4c,
0x71, 0x7d, 0xcb, 0xee, 0x01, 0xd4, 0x98, 0x6c, 0xe0, 0x86, 0x35, 0xc4, 0xfd, 0xab, 0x05, 0x1d,
0xb5, 0x21, 0xb6, 0xd6, 0xd7, 0x58, 0x7f, 0xa6, 0xa7, 0x6a, 0x2c, 0xe8, 0xa9, 0xca, 0xee, 0xb8,
0xa0, 0xab, 0x6a, 0x97, 0x6b, 0x6d, 0x6f, 0x73, 0xb6, 0xed, 0x7d, 0x0d, 0xba, 0xa1, 0x3a, 0x90,
0x97, 0x31, 0x79, 0xaa, 0x79, 0xea, 0x50, 0x40, 0xe8, 0x48, 0x21, 0xaa, 0x2f, 0x2e, 0x14, 0xb0,
0x2f, 0x5e, 0xbe, 0x72, 0x5f, 0x6c, 0x16, 0xc1, 0xbe, 0xf8, 0x77, 0x0d, 0x70, 0x0c, 0xc5, 0xd5,
0x23, 0xd3, 0x47, 0x59, 0x80, 0x6f, 0x5d, 0x77, 0xa1, 0x53, 0x46, 0x99, 0x79, 0xe3, 0xa9, 0x00,
0xc5, 0xeb, 0x01, 0x8f, 0xd3, 0x7c, 0x7a, 0x1c, 0x7e, 0xca, 0x8d, 0xe1, 0x35, 0x44, 0xd9, 0x76,
0x38, 0x89, 0x69, 0xfa, 0x4c, 0x98, 0x32, 0x5b, 0x0c, 0x95, 0x6d, 0x3e, 0xfe, 0x9a, 0xc1, 0xea,
0x84, 0x96, 0x37, 0x29, 0x68, 0x48, 0x55, 0x25, 0xb2, 0x01, 0x6d, 0x9e, 0x04, 0x5a, 0xba, 0x84,
0xd2, 0x16, 0x4f, 0x02, 0x14, 0x0d, 0x61, 0xd5, 0x3c, 0x2e, 0xa5, 0x02, 0x4b, 0xae, 0x29, 0xb4,
0xee, 0x05, 0x2f, 0x7a, 0x07, 0x62, 0x7c, 0x64, 0x34, 0xe9, 0x8a, 0x7e, 0x5f, 0x32, 0x43, 0xf2,
0x01, 0xf4, 0xd4, 0x2e, 0xe5, 0x42, 0xad, 0x2b, 0x2f, 0xd4, 0xe5, 0x49, 0x50, 0x0c, 0xdc, 0x9f,
0x5b, 0x70, 0xe3, 0x1c, 0x85, 0xd7, 0x88, 0xa3, 0x27, 0xd0, 0x3e, 0xe6, 0x63, 0xb5, 0x44, 0xf1,
0x64, 0xb6, 0x73, 0xd1, 0x0b, 0xec, 0x05, 0x0e, 0xa3, 0xe5, 0x02, 0xee, 0x8f, 0x2c, 0x00, 0x0c,
0x68, 0x1c, 0x9e, 0x0b, 0x16, 0xeb, 0x3a, 0xc1, 0xa2, 0x1a, 0x4a, 0xd5, 0x97, 0xe4, 0x3c, 0x62,
0xb2, 0xaa, 0x4f, 0xc2, 0xf8, 0x9e, 0x24, 0x93, 0x98, 0x6a, 0x51, 0x91, 0xb4, 0xee, 0xcf, 0x2c,
0x00, 0x2c, 0xb0, 0xfa, 0x18, 0xf3, 0x57, 0xac, 0x75, 0xf9, 0x2f, 0xc1, 0xc6, 0x6c, 0x4a, 0xec,
0x15, 0x29, 0x21, 0x90, 0x23, 0x7b, 0x91, 0x0d, 0x25, 0x47, 0x95, 0xf1, 0x26, 0x6b, 0x34, 0x2f,
0xbf, 0xb0, 0xa0, 0x57, 0xa3, 0x4f, 0xcc, 0x66, 0xaf, 0x35, 0x9f, 0xbd, 0xd8, 0xe6, 0xa9, 0x88,
0xf6, 0x44, 0x2d, 0xc8, 0xe3, 0x2a, 0xc8, 0x37, 0xa0, 0x8d, 0x94, 0xd4, 0xa2, 0x3c, 0x31, 0x51,
0x7e, 0x1f, 0x6e, 0xe4, 0xdc, 0xe7, 0x89, 0x8c, 0xa6, 0x5e, 0x9c, 0x06, 0xe1, 0x49, 0xc8, 0x03,
0x8c, 0xf5, 0x36, 0xed, 0x17, 0x82, 0x03, 0x83, 0xbb, 0x7f, 0xb0, 0x60, 0xf5, 0x3b, 0x13, 0x9e,
0x4f, 0x0f, 0xd3, 0x80, 0xeb, 0x93, 0xbd, 0x78, 0x04, 0xbd, 0x87, 0xb6, 0x18, 0x7a, 0x74, 0x08,
0xbd, 0xf1, 0x8f, 0x43, 0x48, 0xd0, 0xb6, 0x30, 0x61, 0xa3, 0x28, 0xd6, 0xbf, 0xee, 0xaf, 0x42,
0x71, 0xe5, 0x58, 0x73, 0x75, 0x6a, 0x8a, 0x7f, 0x68, 0x41, 0xb7, 0x96, 0x2c, 0xaa, 0xe4, 0x9b,
0xfb, 0x41, 0x5f, 0x2b, 0x16, 0x16, 0xc1, 0xae, 0x5f, 0xbd, 0xe1, 0x91, 0x75, 0x58, 0x8a, 0xc5,
0xd8, 0x78, 0xbc, 0x47, 0xf5, 0x80, 0x6c, 0x42, 0x3b, 0x16, 0x63, 0xfc, 0x11, 0x64, 0x2a, 0x67,
0x39, 0x56, 0x6e, 0xab, 0x3a, 0x1b, 0x5d, 0x40, 0x2a, 0xc0, 0xfd, 0x95, 0x05, 0xc4, 0x34, 0x0e,
0x2f, 0xf5, 0xd0, 0x8b, 0x01, 0x5b, 0x7f, 0x87, 0x6c, 0x60, 0x19, 0x9e, 0xc1, 0xe6, 0xae, 0x3c,
0xfb, 0xdc, 0x95, 0x77, 0x1f, 0x6e, 0x04, 0xfc, 0x84, 0xa9, 0x1e, 0x67, 0xfe, 0xc8, 0x7d, 0x23,
0x28, 0x5b, 0xb1, 0xb7, 0xde, 0x85, 0x4e, 0xf9, 0xff, 0x0a, 0xe9, 0x43, 0x6f, 0x98, 0x84, 0x12,
0x7f, 0xa5, 0x85, 0xc9, 0xb8, 0xff, 0x7f, 0xa4, 0x0b, 0xad, 0x6f, 0x71, 0x16, 0xc9, 0xd3, 0x69,
0xdf, 0x22, 0x3d, 0x68, 0xbf, 0x3f, 0x4a, 0xd2, 0x3c, 0x66, 0x51, 0xbf, 0xb1, 0xf7, 0xce, 0xf7,
0xbe, 0x32, 0x0e, 0xe5, 0xe9, 0x64, 0xa4, 0x2c, 0xd9, 0xd1, 0xa6, 0x7d, 0x31, 0x4c, 0xcd, 0xd7,
0x4e, 0xe1, 0xb5, 0x1d, 0xb4, 0xb6, 0x1c, 0x66, 0xa3, 0xd1, 0x32, 0x22, 0x6f, 0xff, 0x3d, 0x00,
0x00, 0xff, 0xff, 0x7d, 0x5a, 0x47, 0x9f, 0x85, 0x1a, 0x00, 0x00,
}

View File

@ -6,7 +6,7 @@ import "schema.proto";
message RetrieveRequest {
schema.IDs ids = 1;
repeated string output_fields = 2;
repeated int64 output_fields_id = 2;
}
message RetrieveResults {

View File

@ -23,7 +23,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type RetrieveRequest struct {
Ids *schemapb.IDs `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"`
OutputFields []string `protobuf:"bytes,2,rep,name=output_fields,json=outputFields,proto3" json:"output_fields,omitempty"`
OutputFieldsId []int64 `protobuf:"varint,2,rep,packed,name=output_fields_id,json=outputFieldsId,proto3" json:"output_fields_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -61,9 +61,9 @@ func (m *RetrieveRequest) GetIds() *schemapb.IDs {
return nil
}
func (m *RetrieveRequest) GetOutputFields() []string {
func (m *RetrieveRequest) GetOutputFieldsId() []int64 {
if m != nil {
return m.OutputFields
return m.OutputFieldsId
}
return nil
}
@ -228,26 +228,27 @@ func init() {
func init() { proto.RegisterFile("segcore.proto", fileDescriptor_1d79fce784797357) }
var fileDescriptor_1d79fce784797357 = []byte{
// 335 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xc1, 0x4b, 0xf3, 0x30,
0x18, 0xc6, 0xd9, 0xca, 0xf7, 0xe1, 0xb2, 0x8d, 0x41, 0xf1, 0x50, 0x14, 0x65, 0x74, 0x97, 0x21,
0xd8, 0xc2, 0x14, 0xc1, 0x93, 0xa0, 0x43, 0x10, 0xf4, 0x92, 0x79, 0xf2, 0x52, 0xd2, 0xf6, 0x75,
0x0b, 0x36, 0x4d, 0x6d, 0xde, 0x74, 0x63, 0x07, 0xff, 0x76, 0x49, 0x52, 0x71, 0x83, 0x5d, 0xbc,
0x25, 0x4f, 0x9e, 0xe7, 0xfd, 0x3d, 0x2f, 0x21, 0x43, 0x05, 0xcb, 0x4c, 0xd6, 0x10, 0x55, 0xb5,
0x44, 0xe9, 0x1f, 0x0b, 0x5e, 0x34, 0x5a, 0xb9, 0x5b, 0xd4, 0xbe, 0x9d, 0x0c, 0x54, 0xb6, 0x02,
0xc1, 0x9c, 0x1a, 0xa6, 0x64, 0x44, 0x01, 0x6b, 0x0e, 0x0d, 0x50, 0xf8, 0xd4, 0xa0, 0xd0, 0xbf,
0x20, 0x1e, 0xcf, 0x55, 0xd0, 0x19, 0x77, 0xa6, 0xfd, 0x59, 0x10, 0xed, 0x0f, 0x71, 0xd9, 0xa7,
0xb9, 0xa2, 0xc6, 0xe4, 0x4f, 0xc8, 0x50, 0x6a, 0xac, 0x34, 0x26, 0xef, 0x1c, 0x8a, 0x5c, 0x05,
0xdd, 0xb1, 0x37, 0xed, 0xd1, 0x81, 0x13, 0x1f, 0xad, 0x16, 0x7e, 0xed, 0x32, 0x94, 0x2e, 0x50,
0xfd, 0x89, 0x71, 0x47, 0xfa, 0x6e, 0x78, 0x92, 0x33, 0x64, 0x96, 0xd0, 0x9f, 0x9d, 0x1f, 0xcc,
0x58, 0xe0, 0x9c, 0x21, 0xa3, 0xc4, 0x45, 0xcc, 0x39, 0x6c, 0xc8, 0xf0, 0x59, 0xb2, 0xdc, 0x3e,
0xbe, 0x00, 0x32, 0xd3, 0x5a, 0xf0, 0x32, 0x41, 0x2e, 0x40, 0x21, 0x13, 0x95, 0xed, 0xe1, 0xd1,
0x81, 0xe0, 0xe5, 0xeb, 0x8f, 0x66, 0x4d, 0x6c, 0xb3, 0x63, 0xea, 0xb6, 0x26, 0xb6, 0xf9, 0x35,
0x9d, 0x92, 0x5e, 0x2d, 0xd7, 0x49, 0x26, 0x75, 0x89, 0x81, 0x67, 0x0d, 0x47, 0xb5, 0x5c, 0x3f,
0x98, 0x7b, 0xf8, 0x41, 0x46, 0x86, 0xbb, 0x80, 0xa5, 0x80, 0x12, 0x2d, 0xf9, 0x96, 0xfc, 0x13,
0x80, 0xcc, 0x6c, 0x6e, 0xb6, 0x98, 0x44, 0x87, 0xbe, 0x28, 0xda, 0x6b, 0x4b, 0x5d, 0xc2, 0x3f,
0x23, 0x04, 0x25, 0xb2, 0x22, 0x51, 0x7c, 0x0b, 0x6d, 0x99, 0x9e, 0x55, 0x16, 0x7c, 0x0b, 0xf7,
0x37, 0x6f, 0xd7, 0x4b, 0x8e, 0x2b, 0x9d, 0x46, 0x99, 0x14, 0xb1, 0x1b, 0x7b, 0xc9, 0x65, 0x7b,
0x8a, 0x79, 0x89, 0x50, 0x97, 0xac, 0x88, 0x2d, 0x29, 0x6e, 0x49, 0x55, 0x9a, 0xfe, 0xb7, 0xc2,
0xd5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xac, 0x78, 0x16, 0xc2, 0x3c, 0x02, 0x00, 0x00,
// 338 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xc1, 0x4b, 0xc3, 0x30,
0x14, 0xc6, 0xd9, 0x8a, 0xe2, 0xb2, 0xcd, 0x49, 0xf1, 0x50, 0x14, 0x65, 0x74, 0x97, 0x21, 0xd8,
0xc2, 0x14, 0xc1, 0x93, 0xa0, 0x43, 0x18, 0xe8, 0x25, 0xf3, 0xe4, 0xa5, 0x64, 0xed, 0xb3, 0x0b,
0x36, 0x4d, 0x6d, 0x5e, 0xba, 0xb1, 0x83, 0x7f, 0xbb, 0x34, 0xa9, 0xb8, 0xc1, 0x2e, 0xde, 0xf2,
0xbe, 0xf7, 0x7d, 0xef, 0xf7, 0x1e, 0x21, 0x7d, 0x05, 0x69, 0x2c, 0x4b, 0x08, 0x8a, 0x52, 0xa2,
0x74, 0x4f, 0x05, 0xcf, 0x2a, 0xad, 0x6c, 0x15, 0x34, 0xbd, 0xb3, 0x9e, 0x8a, 0x97, 0x20, 0x98,
0x55, 0xfd, 0x94, 0x0c, 0x28, 0x60, 0xc9, 0xa1, 0x02, 0x0a, 0x5f, 0x1a, 0x14, 0xba, 0x57, 0xc4,
0xe1, 0x89, 0xf2, 0x5a, 0xc3, 0xd6, 0xb8, 0x3b, 0xf1, 0x82, 0xdd, 0x21, 0x36, 0x3b, 0x9b, 0x2a,
0x5a, 0x9b, 0xdc, 0x31, 0x39, 0x91, 0x1a, 0x0b, 0x8d, 0xd1, 0x07, 0x87, 0x2c, 0x51, 0x11, 0x4f,
0xbc, 0xf6, 0xd0, 0x19, 0x3b, 0xf4, 0xd8, 0xea, 0xcf, 0x46, 0x9e, 0x25, 0xfe, 0xf7, 0x36, 0x48,
0xe9, 0x0c, 0xd5, 0xbf, 0x40, 0x0f, 0xa4, 0xdb, 0x10, 0x12, 0x86, 0xcc, 0x30, 0xba, 0x93, 0xcb,
0xbd, 0x19, 0x83, 0x9c, 0x32, 0x64, 0x94, 0xd8, 0x48, 0xfd, 0xf6, 0x2b, 0xd2, 0x7f, 0x91, 0x2c,
0x31, 0xcd, 0x57, 0x40, 0xe6, 0x8e, 0x48, 0x5f, 0xf0, 0x3c, 0x42, 0x2e, 0x40, 0x21, 0x13, 0x85,
0xd9, 0xc3, 0xa1, 0x3d, 0xc1, 0xf3, 0xb7, 0x5f, 0xcd, 0x98, 0xd8, 0x7a, 0xcb, 0xd4, 0x6e, 0x4c,
0x6c, 0xfd, 0x67, 0x3a, 0x27, 0x9d, 0x52, 0xae, 0xa2, 0x58, 0xea, 0x1c, 0x3d, 0xc7, 0x18, 0x8e,
0x4a, 0xb9, 0x7a, 0xaa, 0x6b, 0xff, 0x93, 0x0c, 0x6a, 0xee, 0x1c, 0x52, 0x01, 0x39, 0x1a, 0xf2,
0x3d, 0x39, 0x10, 0x80, 0xac, 0xbe, 0xbc, 0xbe, 0x62, 0x14, 0xec, 0xfb, 0xa7, 0x60, 0x67, 0x5b,
0x6a, 0x13, 0xee, 0x05, 0x21, 0x28, 0x91, 0x65, 0x91, 0xe2, 0x1b, 0x68, 0x96, 0xe9, 0x18, 0x65,
0xce, 0x37, 0xf0, 0x78, 0xf7, 0x7e, 0x9b, 0x72, 0x5c, 0xea, 0x45, 0x10, 0x4b, 0x11, 0xda, 0xb1,
0xd7, 0x5c, 0x36, 0xaf, 0x90, 0xe7, 0x08, 0x65, 0xce, 0xb2, 0xd0, 0x90, 0xc2, 0x86, 0x54, 0x2c,
0x16, 0x87, 0x46, 0xb8, 0xf9, 0x09, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x83, 0x2e, 0xf6, 0x41, 0x02,
0x00, 0x00,
}

View File

@ -2072,7 +2072,7 @@ func (rt *RetrieveTask) PreExecute(ctx context.Context) error {
if len(rt.retrieve.OutputFields) == 0 {
for _, field := range schema.Fields {
if field.FieldID >= 100 && field.DataType != schemapb.DataType_FloatVector && field.DataType != schemapb.DataType_BinaryVector {
rt.OutputFields = append(rt.OutputFields, field.Name)
rt.OutputFieldsId = append(rt.OutputFieldsId, field.FieldID)
}
}
} else {
@ -2089,10 +2089,10 @@ func (rt *RetrieveTask) PreExecute(ctx context.Context) error {
addPrimaryKey = true
}
findField = true
rt.OutputFields = append(rt.OutputFields, reqField)
rt.OutputFieldsId = append(rt.OutputFieldsId, field.FieldID)
} else {
if field.IsPrimaryKey && !addPrimaryKey {
rt.OutputFields = append(rt.OutputFields, field.Name)
rt.OutputFieldsId = append(rt.OutputFieldsId, field.FieldID)
addPrimaryKey = true
}
}
@ -2352,7 +2352,7 @@ func (rt *RetrieveTask) PostExecute(ctx context.Context) error {
}
for i := 0; i < len(rt.result.FieldsData); i++ {
for _, field := range schema.Fields {
if field.Name == rt.OutputFields[i] {
if field.FieldID == rt.OutputFieldsId[i] {
rt.result.FieldsData[i].FieldName = field.Name
rt.result.FieldsData[i].Type = field.DataType
}

View File

@ -1077,8 +1077,8 @@ func (q *queryCollection) retrieve(msg queryMsg) error {
}
req := &segcorepb.RetrieveRequest{
Ids: retrieveMsg.Ids,
OutputFields: retrieveMsg.OutputFields,
Ids: retrieveMsg.Ids,
OutputFieldsId: retrieveMsg.OutputFieldsId,
}
plan, err := createRetrievePlan(collection, req, timestamp)

View File

@ -153,7 +153,7 @@ func TestSegment_retrieve(t *testing.T) {
},
},
},
OutputFields: []string{"vec"},
OutputFieldsId: []int64{100},
}
plan, err := createRetrievePlan(collection, reqIds, 100)
defer plan.delete()