Add nested path for accessing json fields (#23651)

Signed-off-by: yah01 <yang.cen@zilliz.com>
pull/23687/head
yah01 2023-04-24 17:14:34 +08:00 committed by GitHub
parent 6b29a991a5
commit e23af6406f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 345 additions and 193 deletions

View File

@ -55,7 +55,8 @@ struct QueryInfoDefaultTypeInternal {
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 QueryInfoDefaultTypeInternal _QueryInfo_default_instance_;
PROTOBUF_CONSTEXPR ColumnInfo::ColumnInfo(
::_pbi::ConstantInitialized): _impl_{
/*decltype(_impl_.field_id_)*/int64_t{0}
/*decltype(_impl_.nested_path_)*/{}
, /*decltype(_impl_.field_id_)*/int64_t{0}
, /*decltype(_impl_.data_type_)*/0
, /*decltype(_impl_.is_primary_key_)*/false
, /*decltype(_impl_.is_autoid_)*/false
@ -332,6 +333,7 @@ const uint32_t TableStruct_plan_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(pro
PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::ColumnInfo, _impl_.data_type_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::ColumnInfo, _impl_.is_primary_key_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::ColumnInfo, _impl_.is_autoid_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::ColumnInfo, _impl_.nested_path_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::milvus::proto::plan::ColumnExpr, _internal_metadata_),
~0u, // no _extensions_
@ -481,21 +483,21 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode
{ 0, -1, -1, sizeof(::milvus::proto::plan::GenericValue)},
{ 11, -1, -1, sizeof(::milvus::proto::plan::QueryInfo)},
{ 21, -1, -1, sizeof(::milvus::proto::plan::ColumnInfo)},
{ 31, -1, -1, sizeof(::milvus::proto::plan::ColumnExpr)},
{ 38, -1, -1, sizeof(::milvus::proto::plan::ValueExpr)},
{ 45, -1, -1, sizeof(::milvus::proto::plan::UnaryRangeExpr)},
{ 54, -1, -1, sizeof(::milvus::proto::plan::BinaryRangeExpr)},
{ 65, -1, -1, sizeof(::milvus::proto::plan::CompareExpr)},
{ 74, -1, -1, sizeof(::milvus::proto::plan::TermExpr)},
{ 82, -1, -1, sizeof(::milvus::proto::plan::UnaryExpr)},
{ 90, -1, -1, sizeof(::milvus::proto::plan::BinaryExpr)},
{ 99, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOp)},
{ 108, -1, -1, sizeof(::milvus::proto::plan::BinaryArithExpr)},
{ 117, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOpEvalRangeExpr)},
{ 128, -1, -1, sizeof(::milvus::proto::plan::Expr)},
{ 145, -1, -1, sizeof(::milvus::proto::plan::VectorANNS)},
{ 156, -1, -1, sizeof(::milvus::proto::plan::QueryPlanNode)},
{ 164, -1, -1, sizeof(::milvus::proto::plan::PlanNode)},
{ 32, -1, -1, sizeof(::milvus::proto::plan::ColumnExpr)},
{ 39, -1, -1, sizeof(::milvus::proto::plan::ValueExpr)},
{ 46, -1, -1, sizeof(::milvus::proto::plan::UnaryRangeExpr)},
{ 55, -1, -1, sizeof(::milvus::proto::plan::BinaryRangeExpr)},
{ 66, -1, -1, sizeof(::milvus::proto::plan::CompareExpr)},
{ 75, -1, -1, sizeof(::milvus::proto::plan::TermExpr)},
{ 83, -1, -1, sizeof(::milvus::proto::plan::UnaryExpr)},
{ 91, -1, -1, sizeof(::milvus::proto::plan::BinaryExpr)},
{ 100, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOp)},
{ 109, -1, -1, sizeof(::milvus::proto::plan::BinaryArithExpr)},
{ 118, -1, -1, sizeof(::milvus::proto::plan::BinaryArithOpEvalRangeExpr)},
{ 129, -1, -1, sizeof(::milvus::proto::plan::Expr)},
{ 146, -1, -1, sizeof(::milvus::proto::plan::VectorANNS)},
{ 157, -1, -1, sizeof(::milvus::proto::plan::QueryPlanNode)},
{ 165, -1, -1, sizeof(::milvus::proto::plan::PlanNode)},
};
static const ::_pb::Message* const file_default_instances[] = {
@ -526,95 +528,95 @@ const char descriptor_table_protodef_plan_2eproto[] PROTOBUF_SECTION_VARIABLE(pr
"\001H\000\022\024\n\nstring_val\030\004 \001(\tH\000B\005\n\003val\"\\\n\tQuer"
"yInfo\022\014\n\004topk\030\001 \001(\003\022\023\n\013metric_type\030\003 \001(\t"
"\022\025\n\rsearch_params\030\004 \001(\t\022\025\n\rround_decimal"
"\030\005 \001(\003\"{\n\nColumnInfo\022\020\n\010field_id\030\001 \001(\003\0220"
"\n\tdata_type\030\002 \001(\0162\035.milvus.proto.schema."
"DataType\022\026\n\016is_primary_key\030\003 \001(\010\022\021\n\tis_a"
"utoID\030\004 \001(\010\"9\n\nColumnExpr\022+\n\004info\030\001 \001(\0132"
"\035.milvus.proto.plan.ColumnInfo\";\n\tValueE"
"xpr\022.\n\005value\030\001 \001(\0132\037.milvus.proto.plan.G"
"enericValue\"\233\001\n\016UnaryRangeExpr\0222\n\013column"
"_info\030\001 \001(\0132\035.milvus.proto.plan.ColumnIn"
"fo\022%\n\002op\030\002 \001(\0162\031.milvus.proto.plan.OpTyp"
"e\022.\n\005value\030\003 \001(\0132\037.milvus.proto.plan.Gen"
"ericValue\"\343\001\n\017BinaryRangeExpr\0222\n\013column_"
"info\030\001 \001(\0132\035.milvus.proto.plan.ColumnInf"
"o\022\027\n\017lower_inclusive\030\002 \001(\010\022\027\n\017upper_incl"
"usive\030\003 \001(\010\0224\n\013lower_value\030\004 \001(\0132\037.milvu"
"s.proto.plan.GenericValue\0224\n\013upper_value"
"\030\005 \001(\0132\037.milvus.proto.plan.GenericValue\""
"\247\001\n\013CompareExpr\0227\n\020left_column_info\030\001 \001("
"\0132\035.milvus.proto.plan.ColumnInfo\0228\n\021righ"
"t_column_info\030\002 \001(\0132\035.milvus.proto.plan."
"ColumnInfo\022%\n\002op\030\003 \001(\0162\031.milvus.proto.pl"
"an.OpType\"o\n\010TermExpr\0222\n\013column_info\030\001 \001"
"(\0132\035.milvus.proto.plan.ColumnInfo\022/\n\006val"
"ues\030\002 \003(\0132\037.milvus.proto.plan.GenericVal"
"ue\"\206\001\n\tUnaryExpr\0220\n\002op\030\001 \001(\0162$.milvus.pr"
"oto.plan.UnaryExpr.UnaryOp\022&\n\005child\030\002 \001("
"\0132\027.milvus.proto.plan.Expr\"\037\n\007UnaryOp\022\013\n"
"\007Invalid\020\000\022\007\n\003Not\020\001\"\307\001\n\nBinaryExpr\0222\n\002op"
"\030\001 \001(\0162&.milvus.proto.plan.BinaryExpr.Bi"
"naryOp\022%\n\004left\030\002 \001(\0132\027.milvus.proto.plan"
".Expr\022&\n\005right\030\003 \001(\0132\027.milvus.proto.plan"
".Expr\"6\n\010BinaryOp\022\013\n\007Invalid\020\000\022\016\n\nLogica"
"lAnd\020\001\022\r\n\tLogicalOr\020\002\"\255\001\n\rBinaryArithOp\022"
"2\n\013column_info\030\001 \001(\0132\035.milvus.proto.plan"
".ColumnInfo\0220\n\010arith_op\030\002 \001(\0162\036.milvus.p"
"roto.plan.ArithOpType\0226\n\rright_operand\030\003"
" \001(\0132\037.milvus.proto.plan.GenericValue\"\214\001"
"\n\017BinaryArithExpr\022%\n\004left\030\001 \001(\0132\027.milvus"
".proto.plan.Expr\022&\n\005right\030\002 \001(\0132\027.milvus"
".proto.plan.Expr\022*\n\002op\030\003 \001(\0162\036.milvus.pr"
"oto.plan.ArithOpType\"\221\002\n\032BinaryArithOpEv"
"alRangeExpr\0222\n\013column_info\030\001 \001(\0132\035.milvu"
"s.proto.plan.ColumnInfo\0220\n\010arith_op\030\002 \001("
"\0162\036.milvus.proto.plan.ArithOpType\0226\n\rrig"
"ht_operand\030\003 \001(\0132\037.milvus.proto.plan.Gen"
"ericValue\022%\n\002op\030\004 \001(\0162\031.milvus.proto.pla"
"n.OpType\022.\n\005value\030\005 \001(\0132\037.milvus.proto.p"
"lan.GenericValue\"\347\004\n\004Expr\0220\n\tterm_expr\030\001"
" \001(\0132\033.milvus.proto.plan.TermExprH\000\0222\n\nu"
"nary_expr\030\002 \001(\0132\034.milvus.proto.plan.Unar"
"yExprH\000\0224\n\013binary_expr\030\003 \001(\0132\035.milvus.pr"
"oto.plan.BinaryExprH\000\0226\n\014compare_expr\030\004 "
"\001(\0132\036.milvus.proto.plan.CompareExprH\000\022=\n"
"\020unary_range_expr\030\005 \001(\0132!.milvus.proto.p"
"lan.UnaryRangeExprH\000\022\?\n\021binary_range_exp"
"r\030\006 \001(\0132\".milvus.proto.plan.BinaryRangeE"
"xprH\000\022X\n\037binary_arith_op_eval_range_expr"
"\030\007 \001(\0132-.milvus.proto.plan.BinaryArithOp"
"EvalRangeExprH\000\022\?\n\021binary_arith_expr\030\010 \001"
"(\0132\".milvus.proto.plan.BinaryArithExprH\000"
"\0222\n\nvalue_expr\030\t \001(\0132\034.milvus.proto.plan"
".ValueExprH\000\0224\n\013column_expr\030\n \001(\0132\035.milv"
"us.proto.plan.ColumnExprH\000B\006\n\004expr\"\251\001\n\nV"
"ectorANNS\022\021\n\tis_binary\030\001 \001(\010\022\020\n\010field_id"
"\030\002 \001(\003\022+\n\npredicates\030\003 \001(\0132\027.milvus.prot"
"o.plan.Expr\0220\n\nquery_info\030\004 \001(\0132\034.milvus"
".proto.plan.QueryInfo\022\027\n\017placeholder_tag"
"\030\005 \001(\t\"N\n\rQueryPlanNode\022+\n\npredicates\030\001 "
"\001(\0132\027.milvus.proto.plan.Expr\022\020\n\010is_count"
"\030\002 \001(\010\"\304\001\n\010PlanNode\0224\n\013vector_anns\030\001 \001(\013"
"2\035.milvus.proto.plan.VectorANNSH\000\022-\n\npre"
"dicates\030\002 \001(\0132\027.milvus.proto.plan.ExprH\000"
"\0221\n\005query\030\004 \001(\0132 .milvus.proto.plan.Quer"
"yPlanNodeH\000\022\030\n\020output_field_ids\030\003 \003(\003B\006\n"
"\004node*\272\001\n\006OpType\022\013\n\007Invalid\020\000\022\017\n\013Greater"
"Than\020\001\022\020\n\014GreaterEqual\020\002\022\014\n\010LessThan\020\003\022\r"
"\n\tLessEqual\020\004\022\t\n\005Equal\020\005\022\014\n\010NotEqual\020\006\022\017"
"\n\013PrefixMatch\020\007\022\020\n\014PostfixMatch\020\010\022\t\n\005Mat"
"ch\020\t\022\t\n\005Range\020\n\022\006\n\002In\020\013\022\t\n\005NotIn\020\014*G\n\013Ar"
"ithOpType\022\013\n\007Unknown\020\000\022\007\n\003Add\020\001\022\007\n\003Sub\020\002"
"\022\007\n\003Mul\020\003\022\007\n\003Div\020\004\022\007\n\003Mod\020\005B3Z1github.co"
"m/milvus-io/milvus/internal/proto/planpb"
"b\006proto3"
"\030\005 \001(\003\"\220\001\n\nColumnInfo\022\020\n\010field_id\030\001 \001(\003\022"
"0\n\tdata_type\030\002 \001(\0162\035.milvus.proto.schema"
".DataType\022\026\n\016is_primary_key\030\003 \001(\010\022\021\n\tis_"
"autoID\030\004 \001(\010\022\023\n\013nested_path\030\005 \003(\t\"9\n\nCol"
"umnExpr\022+\n\004info\030\001 \001(\0132\035.milvus.proto.pla"
"n.ColumnInfo\";\n\tValueExpr\022.\n\005value\030\001 \001(\013"
"2\037.milvus.proto.plan.GenericValue\"\233\001\n\016Un"
"aryRangeExpr\0222\n\013column_info\030\001 \001(\0132\035.milv"
"us.proto.plan.ColumnInfo\022%\n\002op\030\002 \001(\0162\031.m"
"ilvus.proto.plan.OpType\022.\n\005value\030\003 \001(\0132\037"
".milvus.proto.plan.GenericValue\"\343\001\n\017Bina"
"ryRangeExpr\0222\n\013column_info\030\001 \001(\0132\035.milvu"
"s.proto.plan.ColumnInfo\022\027\n\017lower_inclusi"
"ve\030\002 \001(\010\022\027\n\017upper_inclusive\030\003 \001(\010\0224\n\013low"
"er_value\030\004 \001(\0132\037.milvus.proto.plan.Gener"
"icValue\0224\n\013upper_value\030\005 \001(\0132\037.milvus.pr"
"oto.plan.GenericValue\"\247\001\n\013CompareExpr\0227\n"
"\020left_column_info\030\001 \001(\0132\035.milvus.proto.p"
"lan.ColumnInfo\0228\n\021right_column_info\030\002 \001("
"\0132\035.milvus.proto.plan.ColumnInfo\022%\n\002op\030\003"
" \001(\0162\031.milvus.proto.plan.OpType\"o\n\010TermE"
"xpr\0222\n\013column_info\030\001 \001(\0132\035.milvus.proto."
"plan.ColumnInfo\022/\n\006values\030\002 \003(\0132\037.milvus"
".proto.plan.GenericValue\"\206\001\n\tUnaryExpr\0220"
"\n\002op\030\001 \001(\0162$.milvus.proto.plan.UnaryExpr"
".UnaryOp\022&\n\005child\030\002 \001(\0132\027.milvus.proto.p"
"lan.Expr\"\037\n\007UnaryOp\022\013\n\007Invalid\020\000\022\007\n\003Not\020"
"\001\"\307\001\n\nBinaryExpr\0222\n\002op\030\001 \001(\0162&.milvus.pr"
"oto.plan.BinaryExpr.BinaryOp\022%\n\004left\030\002 \001"
"(\0132\027.milvus.proto.plan.Expr\022&\n\005right\030\003 \001"
"(\0132\027.milvus.proto.plan.Expr\"6\n\010BinaryOp\022"
"\013\n\007Invalid\020\000\022\016\n\nLogicalAnd\020\001\022\r\n\tLogicalO"
"r\020\002\"\255\001\n\rBinaryArithOp\0222\n\013column_info\030\001 \001"
"(\0132\035.milvus.proto.plan.ColumnInfo\0220\n\010ari"
"th_op\030\002 \001(\0162\036.milvus.proto.plan.ArithOpT"
"ype\0226\n\rright_operand\030\003 \001(\0132\037.milvus.prot"
"o.plan.GenericValue\"\214\001\n\017BinaryArithExpr\022"
"%\n\004left\030\001 \001(\0132\027.milvus.proto.plan.Expr\022&"
"\n\005right\030\002 \001(\0132\027.milvus.proto.plan.Expr\022*"
"\n\002op\030\003 \001(\0162\036.milvus.proto.plan.ArithOpTy"
"pe\"\221\002\n\032BinaryArithOpEvalRangeExpr\0222\n\013col"
"umn_info\030\001 \001(\0132\035.milvus.proto.plan.Colum"
"nInfo\0220\n\010arith_op\030\002 \001(\0162\036.milvus.proto.p"
"lan.ArithOpType\0226\n\rright_operand\030\003 \001(\0132\037"
".milvus.proto.plan.GenericValue\022%\n\002op\030\004 "
"\001(\0162\031.milvus.proto.plan.OpType\022.\n\005value\030"
"\005 \001(\0132\037.milvus.proto.plan.GenericValue\"\347"
"\004\n\004Expr\0220\n\tterm_expr\030\001 \001(\0132\033.milvus.prot"
"o.plan.TermExprH\000\0222\n\nunary_expr\030\002 \001(\0132\034."
"milvus.proto.plan.UnaryExprH\000\0224\n\013binary_"
"expr\030\003 \001(\0132\035.milvus.proto.plan.BinaryExp"
"rH\000\0226\n\014compare_expr\030\004 \001(\0132\036.milvus.proto"
".plan.CompareExprH\000\022=\n\020unary_range_expr\030"
"\005 \001(\0132!.milvus.proto.plan.UnaryRangeExpr"
"H\000\022\?\n\021binary_range_expr\030\006 \001(\0132\".milvus.p"
"roto.plan.BinaryRangeExprH\000\022X\n\037binary_ar"
"ith_op_eval_range_expr\030\007 \001(\0132-.milvus.pr"
"oto.plan.BinaryArithOpEvalRangeExprH\000\022\?\n"
"\021binary_arith_expr\030\010 \001(\0132\".milvus.proto."
"plan.BinaryArithExprH\000\0222\n\nvalue_expr\030\t \001"
"(\0132\034.milvus.proto.plan.ValueExprH\000\0224\n\013co"
"lumn_expr\030\n \001(\0132\035.milvus.proto.plan.Colu"
"mnExprH\000B\006\n\004expr\"\251\001\n\nVectorANNS\022\021\n\tis_bi"
"nary\030\001 \001(\010\022\020\n\010field_id\030\002 \001(\003\022+\n\npredicat"
"es\030\003 \001(\0132\027.milvus.proto.plan.Expr\0220\n\nque"
"ry_info\030\004 \001(\0132\034.milvus.proto.plan.QueryI"
"nfo\022\027\n\017placeholder_tag\030\005 \001(\t\"N\n\rQueryPla"
"nNode\022+\n\npredicates\030\001 \001(\0132\027.milvus.proto"
".plan.Expr\022\020\n\010is_count\030\002 \001(\010\"\304\001\n\010PlanNod"
"e\0224\n\013vector_anns\030\001 \001(\0132\035.milvus.proto.pl"
"an.VectorANNSH\000\022-\n\npredicates\030\002 \001(\0132\027.mi"
"lvus.proto.plan.ExprH\000\0221\n\005query\030\004 \001(\0132 ."
"milvus.proto.plan.QueryPlanNodeH\000\022\030\n\020out"
"put_field_ids\030\003 \003(\003B\006\n\004node*\272\001\n\006OpType\022\013"
"\n\007Invalid\020\000\022\017\n\013GreaterThan\020\001\022\020\n\014GreaterE"
"qual\020\002\022\014\n\010LessThan\020\003\022\r\n\tLessEqual\020\004\022\t\n\005E"
"qual\020\005\022\014\n\010NotEqual\020\006\022\017\n\013PrefixMatch\020\007\022\020\n"
"\014PostfixMatch\020\010\022\t\n\005Match\020\t\022\t\n\005Range\020\n\022\006\n"
"\002In\020\013\022\t\n\005NotIn\020\014*G\n\013ArithOpType\022\013\n\007Unkno"
"wn\020\000\022\007\n\003Add\020\001\022\007\n\003Sub\020\002\022\007\n\003Mul\020\003\022\007\n\003Div\020\004"
"\022\007\n\003Mod\020\005B3Z1github.com/milvus-io/milvus"
"/internal/proto/planpbb\006proto3"
;
static const ::_pbi::DescriptorTable* const descriptor_table_plan_2eproto_deps[1] = {
&::descriptor_table_schema_2eproto,
};
static ::_pbi::once_flag descriptor_table_plan_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_plan_2eproto = {
false, false, 3488, descriptor_table_protodef_plan_2eproto,
false, false, 3510, descriptor_table_protodef_plan_2eproto,
"plan.proto",
&descriptor_table_plan_2eproto_once, descriptor_table_plan_2eproto_deps, 1, 18,
schemas, file_default_instances, TableStruct_plan_2eproto::offsets,
@ -1368,7 +1370,8 @@ ColumnInfo::ColumnInfo(const ColumnInfo& from)
: ::PROTOBUF_NAMESPACE_ID::Message() {
ColumnInfo* const _this = this; (void)_this;
new (&_impl_) Impl_{
decltype(_impl_.field_id_){}
decltype(_impl_.nested_path_){from._impl_.nested_path_}
, decltype(_impl_.field_id_){}
, decltype(_impl_.data_type_){}
, decltype(_impl_.is_primary_key_){}
, decltype(_impl_.is_autoid_){}
@ -1386,7 +1389,8 @@ inline void ColumnInfo::SharedCtor(
(void)arena;
(void)is_message_owned;
new (&_impl_) Impl_{
decltype(_impl_.field_id_){int64_t{0}}
decltype(_impl_.nested_path_){arena}
, decltype(_impl_.field_id_){int64_t{0}}
, decltype(_impl_.data_type_){0}
, decltype(_impl_.is_primary_key_){false}
, decltype(_impl_.is_autoid_){false}
@ -1405,6 +1409,7 @@ ColumnInfo::~ColumnInfo() {
inline void ColumnInfo::SharedDtor() {
GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
_impl_.nested_path_.~RepeatedPtrField();
}
void ColumnInfo::SetCachedSize(int size) const {
@ -1417,6 +1422,7 @@ void ColumnInfo::Clear() {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
_impl_.nested_path_.Clear();
::memset(&_impl_.field_id_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&_impl_.is_autoid_) -
reinterpret_cast<char*>(&_impl_.field_id_)) + sizeof(_impl_.is_autoid_));
@ -1462,6 +1468,21 @@ const char* ColumnInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ct
} else
goto handle_unusual;
continue;
// repeated string nested_path = 5;
case 5:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
ptr -= 1;
do {
ptr += 1;
auto str = _internal_add_nested_path();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
CHK_(::_pbi::VerifyUTF8(str, "milvus.proto.plan.ColumnInfo.nested_path"));
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
} else
goto handle_unusual;
continue;
default:
goto handle_unusual;
} // switch
@ -1516,6 +1537,16 @@ uint8_t* ColumnInfo::_InternalSerialize(
target = ::_pbi::WireFormatLite::WriteBoolToArray(4, this->_internal_is_autoid(), target);
}
// repeated string nested_path = 5;
for (int i = 0, n = this->_internal_nested_path_size(); i < n; i++) {
const auto& s = this->_internal_nested_path(i);
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
s.data(), static_cast<int>(s.length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"milvus.proto.plan.ColumnInfo.nested_path");
target = stream->WriteString(5, s, target);
}
if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
_internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
@ -1532,6 +1563,14 @@ size_t ColumnInfo::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// repeated string nested_path = 5;
total_size += 1 *
::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.nested_path_.size());
for (int i = 0, n = _impl_.nested_path_.size(); i < n; i++) {
total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
_impl_.nested_path_.Get(i));
}
// int64 field_id = 1;
if (this->_internal_field_id() != 0) {
total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_field_id());
@ -1571,6 +1610,7 @@ void ColumnInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PRO
uint32_t cached_has_bits = 0;
(void) cached_has_bits;
_this->_impl_.nested_path_.MergeFrom(from._impl_.nested_path_);
if (from._internal_field_id() != 0) {
_this->_internal_set_field_id(from._internal_field_id());
}
@ -1600,6 +1640,7 @@ bool ColumnInfo::IsInitialized() const {
void ColumnInfo::InternalSwap(ColumnInfo* other) {
using std::swap;
_internal_metadata_.InternalSwap(&other->_internal_metadata_);
_impl_.nested_path_.InternalSwap(&other->_impl_.nested_path_);
::PROTOBUF_NAMESPACE_ID::internal::memswap<
PROTOBUF_FIELD_OFFSET(ColumnInfo, _impl_.is_autoid_)
+ sizeof(ColumnInfo::_impl_.is_autoid_)

View File

@ -785,11 +785,36 @@ class ColumnInfo final :
// accessors -------------------------------------------------------
enum : int {
kNestedPathFieldNumber = 5,
kFieldIdFieldNumber = 1,
kDataTypeFieldNumber = 2,
kIsPrimaryKeyFieldNumber = 3,
kIsAutoIDFieldNumber = 4,
};
// repeated string nested_path = 5;
int nested_path_size() const;
private:
int _internal_nested_path_size() const;
public:
void clear_nested_path();
const std::string& nested_path(int index) const;
std::string* mutable_nested_path(int index);
void set_nested_path(int index, const std::string& value);
void set_nested_path(int index, std::string&& value);
void set_nested_path(int index, const char* value);
void set_nested_path(int index, const char* value, size_t size);
std::string* add_nested_path();
void add_nested_path(const std::string& value);
void add_nested_path(std::string&& value);
void add_nested_path(const char* value);
void add_nested_path(const char* value, size_t size);
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& nested_path() const;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_nested_path();
private:
const std::string& _internal_nested_path(int index) const;
std::string* _internal_add_nested_path();
public:
// int64 field_id = 1;
void clear_field_id();
int64_t field_id() const;
@ -834,6 +859,7 @@ class ColumnInfo final :
typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_;
struct Impl_ {
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> nested_path_;
int64_t field_id_;
int data_type_;
bool is_primary_key_;
@ -4379,6 +4405,81 @@ inline void ColumnInfo::set_is_autoid(bool value) {
// @@protoc_insertion_point(field_set:milvus.proto.plan.ColumnInfo.is_autoID)
}
// repeated string nested_path = 5;
inline int ColumnInfo::_internal_nested_path_size() const {
return _impl_.nested_path_.size();
}
inline int ColumnInfo::nested_path_size() const {
return _internal_nested_path_size();
}
inline void ColumnInfo::clear_nested_path() {
_impl_.nested_path_.Clear();
}
inline std::string* ColumnInfo::add_nested_path() {
std::string* _s = _internal_add_nested_path();
// @@protoc_insertion_point(field_add_mutable:milvus.proto.plan.ColumnInfo.nested_path)
return _s;
}
inline const std::string& ColumnInfo::_internal_nested_path(int index) const {
return _impl_.nested_path_.Get(index);
}
inline const std::string& ColumnInfo::nested_path(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.plan.ColumnInfo.nested_path)
return _internal_nested_path(index);
}
inline std::string* ColumnInfo::mutable_nested_path(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.plan.ColumnInfo.nested_path)
return _impl_.nested_path_.Mutable(index);
}
inline void ColumnInfo::set_nested_path(int index, const std::string& value) {
_impl_.nested_path_.Mutable(index)->assign(value);
// @@protoc_insertion_point(field_set:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::set_nested_path(int index, std::string&& value) {
_impl_.nested_path_.Mutable(index)->assign(std::move(value));
// @@protoc_insertion_point(field_set:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::set_nested_path(int index, const char* value) {
GOOGLE_DCHECK(value != nullptr);
_impl_.nested_path_.Mutable(index)->assign(value);
// @@protoc_insertion_point(field_set_char:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::set_nested_path(int index, const char* value, size_t size) {
_impl_.nested_path_.Mutable(index)->assign(
reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_set_pointer:milvus.proto.plan.ColumnInfo.nested_path)
}
inline std::string* ColumnInfo::_internal_add_nested_path() {
return _impl_.nested_path_.Add();
}
inline void ColumnInfo::add_nested_path(const std::string& value) {
_impl_.nested_path_.Add()->assign(value);
// @@protoc_insertion_point(field_add:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::add_nested_path(std::string&& value) {
_impl_.nested_path_.Add(std::move(value));
// @@protoc_insertion_point(field_add:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::add_nested_path(const char* value) {
GOOGLE_DCHECK(value != nullptr);
_impl_.nested_path_.Add()->assign(value);
// @@protoc_insertion_point(field_add_char:milvus.proto.plan.ColumnInfo.nested_path)
}
inline void ColumnInfo::add_nested_path(const char* value, size_t size) {
_impl_.nested_path_.Add()->assign(reinterpret_cast<const char*>(value), size);
// @@protoc_insertion_point(field_add_pointer:milvus.proto.plan.ColumnInfo.nested_path)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ColumnInfo::nested_path() const {
// @@protoc_insertion_point(field_list:milvus.proto.plan.ColumnInfo.nested_path)
return _impl_.nested_path_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
ColumnInfo::mutable_nested_path() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.plan.ColumnInfo.nested_path)
return &_impl_.nested_path_;
}
// -------------------------------------------------------------------
// ColumnExpr

View File

@ -50,6 +50,7 @@ message ColumnInfo {
schema.DataType data_type = 2;
bool is_primary_key = 3;
bool is_autoID = 4;
repeated string nested_path = 5;
}
message ColumnExpr {

View File

@ -347,6 +347,7 @@ type ColumnInfo struct {
DataType schemapb.DataType `protobuf:"varint,2,opt,name=data_type,json=dataType,proto3,enum=milvus.proto.schema.DataType" json:"data_type,omitempty"`
IsPrimaryKey bool `protobuf:"varint,3,opt,name=is_primary_key,json=isPrimaryKey,proto3" json:"is_primary_key,omitempty"`
IsAutoID bool `protobuf:"varint,4,opt,name=is_autoID,json=isAutoID,proto3" json:"is_autoID,omitempty"`
NestedPath []string `protobuf:"bytes,5,rep,name=nested_path,json=nestedPath,proto3" json:"nested_path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -405,6 +406,13 @@ func (m *ColumnInfo) GetIsAutoID() bool {
return false
}
func (m *ColumnInfo) GetNestedPath() []string {
if m != nil {
return m.NestedPath
}
return nil
}
type ColumnExpr struct {
Info *ColumnInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -1443,97 +1451,98 @@ func init() {
func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) }
var fileDescriptor_2d655ab2f7683c23 = []byte{
// 1457 bytes of a gzipped FileDescriptorProto
// 1477 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x3f, 0x73, 0xdb, 0xc6,
0x12, 0x27, 0xf8, 0x47, 0x04, 0x96, 0x14, 0x05, 0xa3, 0x79, 0xfe, 0xf3, 0x6c, 0xe9, 0xe1, 0x79,
0x9e, 0xf5, 0x9c, 0xb1, 0x34, 0x8e, 0x1d, 0x3b, 0x76, 0xc6, 0x89, 0xfe, 0x39, 0x22, 0x27, 0xb6,
0xa4, 0xc0, 0xb2, 0x8a, 0x34, 0x98, 0x23, 0x70, 0x12, 0x6f, 0x0c, 0xe2, 0xe0, 0xc3, 0x81, 0xb6,
0xea, 0x74, 0xe9, 0xf2, 0x01, 0xd2, 0x26, 0x7d, 0xca, 0x34, 0xf9, 0x02, 0x29, 0x52, 0xa6, 0xcf,
0x47, 0x48, 0x97, 0x2a, 0x73, 0x7b, 0x20, 0x48, 0x6a, 0x48, 0x8b, 0x9a, 0x78, 0x26, 0xdd, 0x61,
0x6f, 0x77, 0xef, 0xb7, 0xbf, 0xdd, 0xdb, 0x5b, 0x00, 0x24, 0x11, 0x89, 0xd7, 0x12, 0xc1, 0x25,
0x77, 0x2e, 0xf5, 0x59, 0x34, 0xc8, 0x52, 0xfd, 0xb5, 0xa6, 0x36, 0xae, 0x36, 0xd3, 0xa0, 0x47,
0xfb, 0x44, 0x8b, 0xdc, 0x6f, 0x0d, 0x68, 0xee, 0xd2, 0x98, 0x0a, 0x16, 0x1c, 0x91, 0x28, 0xa3,
0xce, 0x35, 0x30, 0xbb, 0x9c, 0x47, 0xfe, 0x80, 0x44, 0x97, 0x8d, 0x15, 0x63, 0xd5, 0x6c, 0x97,
0xbc, 0xba, 0x92, 0x1c, 0x91, 0xc8, 0xb9, 0x0e, 0x16, 0x8b, 0xe5, 0x83, 0xfb, 0xb8, 0x5b, 0x5e,
0x31, 0x56, 0x2b, 0xed, 0x92, 0x67, 0xa2, 0x28, 0xdf, 0x3e, 0x8e, 0x38, 0x91, 0xb8, 0x5d, 0x59,
0x31, 0x56, 0x0d, 0xb5, 0x8d, 0x22, 0xb5, 0xbd, 0x0c, 0x90, 0x4a, 0xc1, 0xe2, 0x13, 0xdc, 0xaf,
0xae, 0x18, 0xab, 0x56, 0xbb, 0xe4, 0x59, 0x5a, 0x76, 0x44, 0xa2, 0xad, 0x1a, 0x54, 0x06, 0x24,
0x72, 0xbf, 0x31, 0xc0, 0xfa, 0x32, 0xa3, 0xe2, 0xb4, 0x13, 0x1f, 0x73, 0xc7, 0x81, 0xaa, 0xe4,
0xc9, 0x2b, 0x04, 0x53, 0xf1, 0x70, 0xed, 0x2c, 0x43, 0xa3, 0x4f, 0xa5, 0x60, 0x81, 0x2f, 0x4f,
0x13, 0x8a, 0x47, 0x59, 0x1e, 0x68, 0xd1, 0xe1, 0x69, 0x42, 0x9d, 0xff, 0xc2, 0x62, 0x4a, 0x89,
0x08, 0x7a, 0x7e, 0x42, 0x04, 0xe9, 0xa7, 0xfa, 0x34, 0xaf, 0xa9, 0x85, 0x07, 0x28, 0x53, 0x4a,
0x82, 0x67, 0x71, 0xe8, 0x87, 0x34, 0x60, 0x7d, 0x12, 0x5d, 0xae, 0xe1, 0x11, 0x4d, 0x14, 0xee,
0x68, 0x99, 0xfb, 0xbd, 0x01, 0xb0, 0xcd, 0xa3, 0xac, 0x1f, 0x23, 0x9a, 0x2b, 0x60, 0x1e, 0x33,
0x1a, 0x85, 0x3e, 0x0b, 0x73, 0x44, 0x75, 0xfc, 0xee, 0x84, 0xce, 0x63, 0xb0, 0x42, 0x22, 0x89,
0x86, 0xa4, 0xc8, 0x69, 0x7d, 0x78, 0x7d, 0x6d, 0x82, 0xff, 0x9c, 0xf9, 0x1d, 0x22, 0x89, 0x42,
0xe9, 0x99, 0x61, 0xbe, 0x72, 0x6e, 0x42, 0x8b, 0xa5, 0x7e, 0x22, 0x58, 0x9f, 0x88, 0x53, 0xff,
0x15, 0x3d, 0xc5, 0x98, 0x4c, 0xaf, 0xc9, 0xd2, 0x03, 0x2d, 0xfc, 0x82, 0x9e, 0x3a, 0xd7, 0xc0,
0x62, 0xa9, 0x4f, 0x32, 0xc9, 0x3b, 0x3b, 0x18, 0x91, 0xe9, 0x99, 0x2c, 0xdd, 0xc4, 0x6f, 0xf7,
0xb3, 0x21, 0xce, 0xa7, 0x6f, 0x13, 0xe1, 0xdc, 0x85, 0x2a, 0x8b, 0x8f, 0x39, 0x62, 0x6c, 0x9c,
0xc5, 0x81, 0x05, 0x32, 0x0a, 0xca, 0x43, 0x55, 0x77, 0x0b, 0x2c, 0x2c, 0x01, 0xb4, 0xff, 0x08,
0x6a, 0x03, 0xf5, 0x91, 0x3b, 0x58, 0x9e, 0xe2, 0x60, 0xbc, 0x6c, 0x3c, 0xad, 0xed, 0xfe, 0x68,
0x40, 0xeb, 0x65, 0x4c, 0xc4, 0xa9, 0x47, 0xe2, 0x13, 0xed, 0xe9, 0x53, 0x68, 0x04, 0x78, 0x94,
0x3f, 0x3f, 0x20, 0x08, 0x46, 0x8c, 0xff, 0x1f, 0xca, 0x3c, 0xc9, 0xf9, 0xbc, 0x32, 0xc5, 0x6c,
0x3f, 0x41, 0x2e, 0xcb, 0x3c, 0x19, 0x81, 0xae, 0x5c, 0x08, 0xf4, 0x0f, 0x65, 0x58, 0xda, 0x62,
0xef, 0x17, 0xf5, 0x2d, 0x58, 0x8a, 0xf8, 0x1b, 0x2a, 0x7c, 0x16, 0x07, 0x51, 0x96, 0xb2, 0x81,
0x2e, 0x09, 0xd3, 0x6b, 0xa1, 0xb8, 0x33, 0x94, 0x2a, 0xc5, 0x2c, 0x49, 0x26, 0x14, 0x75, 0xea,
0x5b, 0x28, 0x1e, 0x29, 0x6e, 0x40, 0x43, 0x7b, 0xd4, 0x21, 0x56, 0xe7, 0x0b, 0x11, 0xd0, 0x46,
0x5f, 0xed, 0x0d, 0x68, 0xe8, 0xa3, 0xb4, 0x87, 0xda, 0x9c, 0x1e, 0xd0, 0x06, 0xd7, 0xee, 0x2f,
0x06, 0x34, 0xb6, 0x79, 0x3f, 0x21, 0x42, 0xb3, 0xb4, 0x0b, 0x76, 0x44, 0x8f, 0xa5, 0x7f, 0x61,
0xaa, 0x5a, 0xca, 0x6c, 0xec, 0x5a, 0x75, 0xe0, 0x92, 0x60, 0x27, 0xbd, 0x49, 0x4f, 0xe5, 0x79,
0x3c, 0x2d, 0xa1, 0xdd, 0xf6, 0xd9, 0x7a, 0xa9, 0xcc, 0x51, 0x2f, 0xee, 0xd7, 0x06, 0x98, 0x87,
0x54, 0xf4, 0xdf, 0x4b, 0xc6, 0x1f, 0xc2, 0x02, 0xf2, 0x9a, 0x5e, 0x2e, 0xaf, 0x54, 0xe6, 0x21,
0x36, 0x57, 0x57, 0x2d, 0xd8, 0xc2, 0x3b, 0x83, 0x30, 0xee, 0x23, 0x7c, 0x03, 0xe1, 0xdf, 0x9c,
0xe2, 0xa2, 0xd0, 0xd4, 0xab, 0xfd, 0x04, 0x2b, 0xff, 0x0e, 0xd4, 0x82, 0x1e, 0x8b, 0xc2, 0x9c,
0xb3, 0x7f, 0x4d, 0x31, 0x54, 0x36, 0x9e, 0xd6, 0x72, 0x97, 0xa1, 0x9e, 0x5b, 0x3b, 0x0d, 0xa8,
0x77, 0xe2, 0x01, 0x89, 0x58, 0x68, 0x97, 0x9c, 0x3a, 0x54, 0xf6, 0xb8, 0xb4, 0x0d, 0xf7, 0x37,
0x03, 0x40, 0x5f, 0x09, 0x04, 0xf5, 0x60, 0x0c, 0xd4, 0xff, 0xa6, 0xf8, 0x1e, 0xa9, 0xe6, 0xcb,
0x1c, 0xd6, 0x07, 0x50, 0x55, 0x89, 0x3e, 0x0f, 0x15, 0x2a, 0xa9, 0x18, 0x30, 0x97, 0xf9, 0xed,
0x9d, 0x1d, 0x03, 0x6a, 0xb9, 0x0f, 0xc0, 0x1c, 0x9e, 0x35, 0x19, 0x44, 0x0b, 0xe0, 0x19, 0x3f,
0x61, 0x01, 0x89, 0x36, 0xe3, 0xd0, 0x36, 0x9c, 0x45, 0xb0, 0xf2, 0xef, 0x7d, 0x61, 0x97, 0xdd,
0x5f, 0x0d, 0x58, 0xd4, 0x86, 0x9b, 0x82, 0xc9, 0xde, 0x7e, 0xf2, 0xb7, 0x33, 0xff, 0x08, 0x4c,
0xa2, 0x5c, 0xf9, 0x45, 0x9f, 0xba, 0x31, 0xc5, 0x38, 0x3f, 0x0d, 0x8b, 0xaf, 0x4e, 0xf2, 0xa3,
0x77, 0x60, 0x51, 0xd7, 0x3d, 0x4f, 0xa8, 0x20, 0x71, 0x38, 0x6f, 0xe7, 0x6a, 0xa2, 0xd5, 0xbe,
0x36, 0x72, 0xbf, 0x33, 0x86, 0x0d, 0x0c, 0x0f, 0xc1, 0x94, 0x0d, 0xa9, 0x37, 0x2e, 0x44, 0x7d,
0x79, 0x1e, 0xea, 0x9d, 0xb5, 0xb1, 0x2b, 0x76, 0x5e, 0xa8, 0xea, 0x9e, 0xfd, 0x5c, 0x86, 0xab,
0x13, 0x94, 0x3f, 0x1d, 0x90, 0xe8, 0xfd, 0xf5, 0xda, 0x7f, 0x9a, 0xff, 0xbc, 0xe5, 0x54, 0x2f,
0xf4, 0x44, 0xd5, 0x2e, 0xf4, 0x44, 0xfd, 0x59, 0x83, 0x2a, 0x72, 0xf5, 0x18, 0x2c, 0x49, 0x45,
0xdf, 0xa7, 0x6f, 0x13, 0x91, 0x33, 0x75, 0x6d, 0x8a, 0x8f, 0x61, 0x57, 0x53, 0xf3, 0x97, 0x1c,
0x76, 0xb8, 0x27, 0x00, 0x99, 0x4a, 0x82, 0x36, 0xd6, 0xa9, 0xfe, 0xf7, 0xbb, 0x5a, 0x8c, 0x9a,
0xce, 0xb2, 0xa2, 0x09, 0x6c, 0x40, 0xa3, 0xcb, 0x46, 0xf6, 0x95, 0x99, 0x69, 0x1a, 0x75, 0x83,
0x76, 0xc9, 0x83, 0xee, 0xa8, 0x8d, 0x6c, 0x43, 0x33, 0xd0, 0xaf, 0x87, 0x76, 0xa1, 0xdf, 0xb0,
0x1b, 0x53, 0x33, 0x5d, 0x3c, 0x32, 0xed, 0x92, 0xd7, 0x08, 0xc6, 0xde, 0x9c, 0xe7, 0x60, 0xeb,
0x28, 0x84, 0x2a, 0x20, 0xed, 0x48, 0x93, 0xf9, 0x9f, 0x59, 0xb1, 0x14, 0xa5, 0xd6, 0x2e, 0x79,
0xad, 0x6c, 0xf2, 0xa1, 0x3f, 0x80, 0x4b, 0x79, 0x54, 0x63, 0xfe, 0x16, 0xd0, 0x9f, 0x3b, 0x33,
0xb6, 0x71, 0x87, 0x4b, 0xdd, 0x33, 0xa3, 0x83, 0x84, 0xe5, 0xdc, 0xe3, 0xb0, 0x2a, 0x7d, 0x3a,
0x20, 0xd1, 0xb8, 0xff, 0x3a, 0xfa, 0xbf, 0x33, 0xd3, 0xff, 0xb4, 0x6b, 0xd2, 0x2e, 0x79, 0x57,
0xbb, 0xb3, 0x2f, 0xd1, 0x28, 0x0e, 0x7d, 0x2a, 0x9e, 0x63, 0x9e, 0x13, 0x47, 0xd1, 0x2e, 0x46,
0x71, 0x8c, 0x3a, 0xc8, 0x13, 0x00, 0x2c, 0x3e, 0xed, 0xca, 0x9a, 0x59, 0x2e, 0xc5, 0xd0, 0xa8,
0xca, 0x65, 0x50, 0x4c, 0x90, 0x1b, 0xc5, 0xad, 0x46, 0x7b, 0x38, 0xe7, 0x56, 0x0f, 0xcb, 0x25,
0x28, 0xbe, 0xb6, 0x16, 0xa0, 0xaa, 0x4c, 0xdd, 0xdf, 0x0d, 0x80, 0x23, 0x1a, 0x48, 0x2e, 0x36,
0xf7, 0xf6, 0x5e, 0xe4, 0x53, 0xb0, 0x46, 0xab, 0x7f, 0x51, 0xd4, 0x14, 0xac, 0x03, 0x9a, 0x98,
0xcf, 0xcb, 0x93, 0xf3, 0xf9, 0x43, 0x80, 0x44, 0xd0, 0x90, 0x05, 0x44, 0xd2, 0xf4, 0xbc, 0x47,
0x66, 0x4c, 0xd5, 0xf9, 0x04, 0xe0, 0xb5, 0xfa, 0x1d, 0xd1, 0xed, 0xa9, 0x3a, 0x93, 0x88, 0xe2,
0x9f, 0xc5, 0xb3, 0x5e, 0x17, 0xbf, 0x2f, 0xb7, 0x60, 0x29, 0x89, 0x48, 0x40, 0x7b, 0x3c, 0x0a,
0xa9, 0xf0, 0x25, 0x39, 0xc1, 0x6a, 0xb5, 0xbc, 0xd6, 0x98, 0xf8, 0x90, 0x9c, 0xb8, 0x01, 0x2c,
0xa2, 0x83, 0x83, 0x88, 0xc4, 0x7b, 0x3c, 0xa4, 0x67, 0xf0, 0x1a, 0xf3, 0xe3, 0xbd, 0x02, 0x26,
0x4b, 0xfd, 0x80, 0x67, 0xb1, 0xcc, 0x87, 0xce, 0x3a, 0x4b, 0xb7, 0xd5, 0xa7, 0xfb, 0x87, 0x01,
0x66, 0x71, 0xc0, 0x06, 0x34, 0x06, 0x48, 0xab, 0x4f, 0xe2, 0x38, 0x7d, 0x47, 0xdf, 0x1d, 0x91,
0xaf, 0x32, 0xa4, 0x6d, 0x36, 0xe3, 0x38, 0x75, 0x1e, 0x4d, 0x40, 0x7c, 0xf7, 0xe3, 0xa1, 0x4c,
0xc7, 0x40, 0x7e, 0x0c, 0x35, 0x24, 0x29, 0xe7, 0x73, 0x65, 0x16, 0x9f, 0x43, 0xb4, 0xed, 0x92,
0xa7, 0x0d, 0x9c, 0x55, 0xb0, 0x79, 0x26, 0x93, 0x4c, 0xfa, 0xc3, 0x4c, 0xab, 0x6c, 0x56, 0x56,
0x2b, 0x5e, 0x4b, 0xcb, 0x3f, 0xd7, 0x09, 0x4f, 0x55, 0x01, 0xc5, 0x3c, 0xa4, 0xb7, 0x7f, 0x32,
0x60, 0x41, 0xf7, 0xe0, 0xc9, 0x49, 0x61, 0x09, 0x1a, 0xbb, 0x82, 0x12, 0x49, 0xc5, 0x61, 0x8f,
0xc4, 0xb6, 0xe1, 0xd8, 0xd0, 0xcc, 0x05, 0x4f, 0x5f, 0x67, 0x24, 0xb2, 0xcb, 0x4e, 0x13, 0xcc,
0x67, 0x34, 0x4d, 0x71, 0xbf, 0x82, 0xa3, 0x04, 0x4d, 0x53, 0xbd, 0x59, 0x75, 0x2c, 0xa8, 0xe9,
0x65, 0x4d, 0xe9, 0xed, 0x71, 0xa9, 0xbf, 0x16, 0x94, 0xe3, 0x03, 0x41, 0x8f, 0xd9, 0xdb, 0xe7,
0x44, 0x06, 0x3d, 0xbb, 0xae, 0x1c, 0x1f, 0xf0, 0x54, 0x16, 0x12, 0x53, 0xd9, 0xea, 0xa5, 0xa5,
0x96, 0x78, 0x8f, 0x6d, 0x70, 0x16, 0xa0, 0xdc, 0x89, 0xed, 0x86, 0x12, 0xed, 0x71, 0xd9, 0x89,
0xed, 0xe6, 0xed, 0x5d, 0x68, 0x8c, 0x3d, 0x5d, 0x2a, 0x80, 0x97, 0xf1, 0xab, 0x98, 0xbf, 0x89,
0xf5, 0xbc, 0xb6, 0x19, 0xaa, 0x19, 0xa7, 0x0e, 0x95, 0x17, 0x59, 0xd7, 0x2e, 0xab, 0xc5, 0xf3,
0x2c, 0xb2, 0x2b, 0x6a, 0xb1, 0xc3, 0x06, 0x76, 0x15, 0x25, 0x3c, 0xb4, 0x6b, 0x5b, 0xf7, 0xbe,
0xba, 0x7b, 0xc2, 0x64, 0x2f, 0xeb, 0xae, 0x05, 0xbc, 0xbf, 0xae, 0xe9, 0xbe, 0xc3, 0x78, 0xbe,
0x5a, 0x67, 0xb1, 0xa4, 0x22, 0x26, 0xd1, 0x3a, 0x66, 0x60, 0x5d, 0x65, 0x20, 0xe9, 0x76, 0x17,
0xf0, 0xeb, 0xde, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x6c, 0x97, 0x4f, 0x55, 0x10, 0x00,
0x00,
0x12, 0x27, 0x08, 0x52, 0x04, 0x96, 0x14, 0x05, 0xa3, 0x79, 0xb2, 0xfd, 0x6c, 0xe9, 0xe1, 0x79,
0x9e, 0xf5, 0xfc, 0xc6, 0xd2, 0xf8, 0xd9, 0xcf, 0x7e, 0x76, 0xc6, 0x89, 0xfe, 0x39, 0x22, 0x27,
0xb6, 0xa4, 0xc0, 0xb2, 0x8a, 0x34, 0x98, 0x23, 0x70, 0x12, 0x6f, 0x0c, 0xde, 0xc1, 0xc0, 0x81,
0xb6, 0xea, 0x74, 0xe9, 0xf2, 0x01, 0x52, 0xa7, 0x4f, 0x99, 0x26, 0x65, 0x9a, 0x14, 0x29, 0xd3,
0xe7, 0x23, 0xa4, 0x4b, 0x95, 0xb9, 0x3d, 0xf0, 0x9f, 0x86, 0xb4, 0xa8, 0x89, 0x67, 0xd2, 0x1d,
0xf6, 0x76, 0x7f, 0xb7, 0xfb, 0xdb, 0xbd, 0xbd, 0x05, 0x40, 0x12, 0x13, 0xbe, 0x9e, 0xa4, 0x42,
0x0a, 0xf7, 0x4a, 0x8f, 0xc5, 0xfd, 0x3c, 0xd3, 0x5f, 0xeb, 0x6a, 0xe3, 0x5a, 0x23, 0x0b, 0xbb,
0xb4, 0x47, 0xb4, 0xc8, 0xfb, 0xda, 0x80, 0xc6, 0x1e, 0xe5, 0x34, 0x65, 0xe1, 0x31, 0x89, 0x73,
0xea, 0x5e, 0x07, 0xab, 0x23, 0x44, 0x1c, 0xf4, 0x49, 0xbc, 0x6c, 0xac, 0x1a, 0x6b, 0x56, 0xab,
0xe4, 0xd7, 0x94, 0xe4, 0x98, 0xc4, 0xee, 0x0d, 0xb0, 0x19, 0x97, 0x0f, 0x1f, 0xe0, 0x6e, 0x79,
0xd5, 0x58, 0x33, 0x5b, 0x25, 0xdf, 0x42, 0x51, 0xb1, 0x7d, 0x12, 0x0b, 0x22, 0x71, 0xdb, 0x5c,
0x35, 0xd6, 0x0c, 0xb5, 0x8d, 0x22, 0xb5, 0xbd, 0x02, 0x90, 0xc9, 0x94, 0xf1, 0x53, 0xdc, 0xaf,
0xac, 0x1a, 0x6b, 0x76, 0xab, 0xe4, 0xdb, 0x5a, 0x76, 0x4c, 0xe2, 0xed, 0x2a, 0x98, 0x7d, 0x12,
0x7b, 0x5f, 0x19, 0x60, 0x7f, 0x9e, 0xd3, 0xf4, 0xac, 0xcd, 0x4f, 0x84, 0xeb, 0x42, 0x45, 0x8a,
0xe4, 0x35, 0x3a, 0x63, 0xfa, 0xb8, 0x76, 0x57, 0xa0, 0xde, 0xa3, 0x32, 0x65, 0x61, 0x20, 0xcf,
0x12, 0x8a, 0x47, 0xd9, 0x3e, 0x68, 0xd1, 0xd1, 0x59, 0x42, 0xdd, 0x7f, 0xc2, 0x62, 0x46, 0x49,
0x1a, 0x76, 0x83, 0x84, 0xa4, 0xa4, 0x97, 0xe9, 0xd3, 0xfc, 0x86, 0x16, 0x1e, 0xa2, 0x4c, 0x29,
0xa5, 0x22, 0xe7, 0x51, 0x10, 0xd1, 0x90, 0xf5, 0x48, 0xbc, 0x5c, 0xc5, 0x23, 0x1a, 0x28, 0xdc,
0xd5, 0x32, 0xef, 0x47, 0x03, 0x60, 0x47, 0xc4, 0x79, 0x8f, 0xa3, 0x37, 0x57, 0xc1, 0x3a, 0x61,
0x34, 0x8e, 0x02, 0x16, 0x15, 0x1e, 0xd5, 0xf0, 0xbb, 0x1d, 0xb9, 0x4f, 0xc0, 0x8e, 0x88, 0x24,
0xda, 0x25, 0x45, 0x4e, 0xf3, 0xbf, 0x37, 0xd6, 0x27, 0xf8, 0x2f, 0x98, 0xdf, 0x25, 0x92, 0x28,
0x2f, 0x7d, 0x2b, 0x2a, 0x56, 0xee, 0x2d, 0x68, 0xb2, 0x2c, 0x48, 0x52, 0xd6, 0x23, 0xe9, 0x59,
0xf0, 0x9a, 0x9e, 0x61, 0x4c, 0x96, 0xdf, 0x60, 0xd9, 0xa1, 0x16, 0x7e, 0x46, 0xcf, 0xdc, 0xeb,
0x60, 0xb3, 0x2c, 0x20, 0xb9, 0x14, 0xed, 0x5d, 0x8c, 0xc8, 0xf2, 0x2d, 0x96, 0x6d, 0xe1, 0xb7,
0xe2, 0x84, 0xd3, 0x4c, 0xd2, 0x28, 0x48, 0x88, 0xec, 0x2e, 0x57, 0x57, 0x4d, 0xc5, 0x89, 0x16,
0x1d, 0x12, 0xd9, 0xf5, 0x3e, 0x19, 0x04, 0xf2, 0xec, 0x5d, 0x92, 0xba, 0xf7, 0xa0, 0xc2, 0xf8,
0x89, 0xc0, 0x20, 0xea, 0xe7, 0x1d, 0xc5, 0x0a, 0x1a, 0x45, 0xed, 0xa3, 0xaa, 0xb7, 0x0d, 0x36,
0xd6, 0x08, 0xda, 0xff, 0x0f, 0xaa, 0x7d, 0xf5, 0x51, 0x00, 0xac, 0x4c, 0x01, 0x18, 0xaf, 0x2b,
0x5f, 0x6b, 0x7b, 0xdf, 0x19, 0xd0, 0x7c, 0xc5, 0x49, 0x7a, 0xe6, 0x13, 0x7e, 0xaa, 0x91, 0x3e,
0x86, 0x7a, 0x88, 0x47, 0x05, 0xf3, 0x3b, 0x04, 0xe1, 0x28, 0x25, 0xff, 0x86, 0xb2, 0x48, 0x0a,
0xc2, 0xaf, 0x4e, 0x31, 0x3b, 0x48, 0x90, 0xec, 0xb2, 0x48, 0x46, 0x4e, 0x9b, 0x97, 0x72, 0xfa,
0xdb, 0x32, 0x2c, 0x6d, 0xb3, 0x0f, 0xeb, 0xf5, 0x6d, 0x58, 0x8a, 0xc5, 0x5b, 0x9a, 0x06, 0x8c,
0x87, 0x71, 0x9e, 0xb1, 0xbe, 0xae, 0x19, 0xcb, 0x6f, 0xa2, 0xb8, 0x3d, 0x90, 0x2a, 0xc5, 0x3c,
0x49, 0x26, 0x14, 0x75, 0x6d, 0x34, 0x51, 0x3c, 0x52, 0xdc, 0x84, 0xba, 0x46, 0xd4, 0x21, 0x56,
0xe6, 0x0b, 0x11, 0xd0, 0x46, 0xdf, 0xfd, 0x4d, 0xa8, 0xeb, 0xa3, 0x34, 0x42, 0x75, 0x4e, 0x04,
0xb4, 0xc1, 0xb5, 0xf7, 0x93, 0x01, 0xf5, 0x1d, 0xd1, 0x4b, 0x48, 0xaa, 0x59, 0xda, 0x03, 0x27,
0xa6, 0x27, 0x32, 0xb8, 0x34, 0x55, 0x4d, 0x65, 0x36, 0x76, 0xef, 0xda, 0x70, 0x25, 0x65, 0xa7,
0xdd, 0x49, 0xa4, 0xf2, 0x3c, 0x48, 0x4b, 0x68, 0xb7, 0x73, 0xbe, 0x5e, 0xcc, 0x39, 0xea, 0xc5,
0xfb, 0xd2, 0x00, 0xeb, 0x88, 0xa6, 0xbd, 0x0f, 0x92, 0xf1, 0x47, 0xb0, 0x80, 0xbc, 0x66, 0xcb,
0xe5, 0x55, 0x73, 0x1e, 0x62, 0x0b, 0x75, 0xd5, 0xa3, 0x6d, 0xbc, 0x33, 0xe8, 0xc6, 0x03, 0x74,
0xdf, 0x40, 0xf7, 0x6f, 0x4d, 0x81, 0x18, 0x6a, 0xea, 0xd5, 0x41, 0x82, 0x95, 0x7f, 0x17, 0xaa,
0x61, 0x97, 0xc5, 0x51, 0xc1, 0xd9, 0xdf, 0xa6, 0x18, 0x2a, 0x1b, 0x5f, 0x6b, 0x79, 0x2b, 0x50,
0x2b, 0xac, 0xdd, 0x3a, 0xd4, 0xda, 0xbc, 0x4f, 0x62, 0x16, 0x39, 0x25, 0xb7, 0x06, 0xe6, 0xbe,
0x90, 0x8e, 0xe1, 0xfd, 0x62, 0x00, 0xe8, 0x2b, 0x81, 0x4e, 0x3d, 0x1c, 0x73, 0xea, 0x5f, 0x53,
0xb0, 0x47, 0xaa, 0xc5, 0xb2, 0x70, 0xeb, 0x3f, 0x50, 0x51, 0x89, 0xbe, 0xc8, 0x2b, 0x54, 0x52,
0x31, 0x60, 0x2e, 0x8b, 0xdb, 0x3b, 0x3b, 0x06, 0xd4, 0xf2, 0x1e, 0x82, 0x35, 0x38, 0x6b, 0x32,
0x88, 0x26, 0xc0, 0x73, 0x71, 0xca, 0x42, 0x12, 0x6f, 0xf1, 0xc8, 0x31, 0xdc, 0x45, 0xb0, 0x8b,
0xef, 0x83, 0xd4, 0x29, 0x7b, 0x3f, 0x1b, 0xb0, 0xa8, 0x0d, 0xb7, 0x52, 0x26, 0xbb, 0x07, 0xc9,
0x9f, 0xce, 0xfc, 0x63, 0xb0, 0x88, 0x82, 0x0a, 0x86, 0x7d, 0xea, 0xe6, 0x14, 0xe3, 0xe2, 0x34,
0x2c, 0xbe, 0x1a, 0x29, 0x8e, 0xde, 0x85, 0x45, 0x5d, 0xf7, 0x22, 0xa1, 0x29, 0xe1, 0xd1, 0xbc,
0x9d, 0xab, 0x81, 0x56, 0x07, 0xda, 0xc8, 0xfb, 0xc6, 0x18, 0x34, 0x30, 0x3c, 0x04, 0x53, 0x36,
0xa0, 0xde, 0xb8, 0x14, 0xf5, 0xe5, 0x79, 0xa8, 0x77, 0xd7, 0xc7, 0xae, 0xd8, 0x45, 0xa1, 0xaa,
0x7b, 0xf6, 0x43, 0x19, 0xae, 0x4d, 0x50, 0xfe, 0xac, 0x4f, 0xe2, 0x0f, 0xd7, 0x6b, 0xff, 0x6a,
0xfe, 0x8b, 0x96, 0x53, 0xb9, 0xd4, 0x13, 0x55, 0xbd, 0xd4, 0x13, 0xf5, 0x7b, 0x15, 0x2a, 0xc8,
0xd5, 0x13, 0xb0, 0x25, 0x4d, 0x7b, 0x01, 0x7d, 0x97, 0xa4, 0x05, 0x53, 0xd7, 0xa7, 0x60, 0x0c,
0xba, 0x9a, 0x1a, 0xd0, 0xe4, 0xa0, 0xc3, 0x3d, 0x05, 0xc8, 0x55, 0x12, 0xb4, 0xb1, 0x4e, 0xf5,
0xdf, 0xdf, 0xd7, 0x62, 0xd4, 0xf8, 0x96, 0x0f, 0x9b, 0xc0, 0x26, 0xd4, 0x3b, 0x6c, 0x64, 0x6f,
0xce, 0x4c, 0xd3, 0xa8, 0x1b, 0xb4, 0x4a, 0x3e, 0x74, 0x46, 0x6d, 0x64, 0x07, 0x1a, 0xa1, 0x7e,
0x3d, 0x34, 0x84, 0x7e, 0xc3, 0x6e, 0x4e, 0xcd, 0xf4, 0xf0, 0x91, 0x69, 0x95, 0xfc, 0x7a, 0x38,
0xf6, 0xe6, 0xbc, 0x00, 0x47, 0x47, 0x91, 0xaa, 0x02, 0xd2, 0x40, 0x9a, 0xcc, 0x7f, 0xcc, 0x8a,
0x65, 0x58, 0x6a, 0xad, 0x92, 0xdf, 0xcc, 0x27, 0x1f, 0xfa, 0x43, 0xb8, 0x52, 0x44, 0x35, 0x86,
0xb7, 0x80, 0x78, 0xde, 0xcc, 0xd8, 0xc6, 0x01, 0x97, 0x3a, 0xe7, 0x46, 0x07, 0x09, 0x2b, 0x05,
0xe2, 0xa0, 0x2a, 0x03, 0xda, 0x27, 0xf1, 0x38, 0x7e, 0x0d, 0xf1, 0xef, 0xce, 0xc4, 0x9f, 0x76,
0x4d, 0x5a, 0x25, 0xff, 0x5a, 0x67, 0xf6, 0x25, 0x1a, 0xc5, 0xa1, 0x4f, 0xc5, 0x73, 0xac, 0x0b,
0xe2, 0x18, 0xb6, 0x8b, 0x51, 0x1c, 0xa3, 0x0e, 0xf2, 0x14, 0x00, 0x8b, 0x4f, 0x43, 0xd9, 0x33,
0xcb, 0x65, 0x38, 0x34, 0xaa, 0x72, 0xe9, 0x0f, 0x27, 0xc8, 0xcd, 0xe1, 0xad, 0x46, 0x7b, 0xb8,
0xe0, 0x56, 0x0f, 0xca, 0x25, 0x1c, 0x7e, 0x6d, 0x2f, 0x40, 0x45, 0x99, 0x7a, 0xbf, 0x1a, 0x00,
0xc7, 0x34, 0x94, 0x22, 0xdd, 0xda, 0xdf, 0x7f, 0x59, 0x8c, 0xc9, 0xda, 0x5b, 0xfd, 0x0f, 0xa3,
0xc6, 0x64, 0x1d, 0xd0, 0xc4, 0x00, 0x5f, 0x9e, 0x1c, 0xe0, 0x1f, 0x01, 0x24, 0x29, 0x8d, 0x58,
0x48, 0x24, 0xcd, 0x2e, 0x7a, 0x64, 0xc6, 0x54, 0xdd, 0x8f, 0x00, 0xde, 0xa8, 0xff, 0x15, 0xdd,
0x9e, 0x2a, 0x33, 0x89, 0x18, 0xfe, 0xd4, 0xf8, 0xf6, 0x9b, 0xe1, 0xff, 0xcd, 0x6d, 0x58, 0x4a,
0x62, 0x12, 0xd2, 0xae, 0x88, 0x23, 0x9a, 0x06, 0x92, 0x9c, 0x62, 0xb5, 0xda, 0x7e, 0x73, 0x4c,
0x7c, 0x44, 0x4e, 0xbd, 0x10, 0x16, 0x11, 0xe0, 0x30, 0x26, 0x7c, 0x5f, 0x44, 0xf4, 0x9c, 0xbf,
0xc6, 0xfc, 0xfe, 0x5e, 0x05, 0x8b, 0x65, 0x41, 0x28, 0x72, 0x2e, 0x8b, 0xa1, 0xb3, 0xc6, 0xb2,
0x1d, 0xf5, 0xe9, 0xfd, 0x66, 0x80, 0x35, 0x3c, 0x60, 0x13, 0xea, 0x7d, 0xa4, 0x35, 0x20, 0x9c,
0x67, 0xef, 0xe9, 0xbb, 0x23, 0xf2, 0x55, 0x86, 0xb4, 0xcd, 0x16, 0xe7, 0x99, 0xfb, 0x78, 0xc2,
0xc5, 0xf7, 0x3f, 0x1e, 0xca, 0x74, 0xcc, 0xc9, 0xff, 0x43, 0x15, 0x49, 0x2a, 0xf8, 0x5c, 0x9d,
0xc5, 0xe7, 0xc0, 0xdb, 0x56, 0xc9, 0xd7, 0x06, 0xee, 0x1a, 0x38, 0x22, 0x97, 0x49, 0x2e, 0x83,
0x41, 0xa6, 0x55, 0x36, 0xcd, 0x35, 0xd3, 0x6f, 0x6a, 0xf9, 0xa7, 0x3a, 0xe1, 0x99, 0x2a, 0x20,
0x2e, 0x22, 0x7a, 0xe7, 0x7b, 0x03, 0x16, 0x74, 0x0f, 0x9e, 0x9c, 0x14, 0x96, 0xa0, 0xbe, 0x97,
0x52, 0x22, 0x69, 0x7a, 0xd4, 0x25, 0xdc, 0x31, 0x5c, 0x07, 0x1a, 0x85, 0xe0, 0xd9, 0x9b, 0x9c,
0xc4, 0x4e, 0xd9, 0x6d, 0x80, 0xf5, 0x9c, 0x66, 0x19, 0xee, 0x9b, 0x38, 0x4a, 0xd0, 0x2c, 0xd3,
0x9b, 0x15, 0xd7, 0x86, 0xaa, 0x5e, 0x56, 0x95, 0xde, 0xbe, 0x90, 0xfa, 0x6b, 0x41, 0x01, 0x1f,
0xa6, 0xf4, 0x84, 0xbd, 0x7b, 0x41, 0x64, 0xd8, 0x75, 0x6a, 0x0a, 0xf8, 0x50, 0x64, 0x72, 0x28,
0xb1, 0x94, 0xad, 0x5e, 0xda, 0x6a, 0x89, 0xf7, 0xd8, 0x01, 0x77, 0x01, 0xca, 0x6d, 0xee, 0xd4,
0x95, 0x68, 0x5f, 0xc8, 0x36, 0x77, 0x1a, 0x77, 0xf6, 0xa0, 0x3e, 0xf6, 0x74, 0xa9, 0x00, 0x5e,
0xf1, 0xd7, 0x5c, 0xbc, 0xe5, 0x7a, 0x5e, 0xdb, 0x8a, 0xd4, 0x8c, 0x53, 0x03, 0xf3, 0x65, 0xde,
0x71, 0xca, 0x6a, 0xf1, 0x22, 0x8f, 0x1d, 0x53, 0x2d, 0x76, 0x59, 0xdf, 0xa9, 0xa0, 0x44, 0x44,
0x4e, 0x75, 0xfb, 0xfe, 0x17, 0xf7, 0x4e, 0x99, 0xec, 0xe6, 0x9d, 0xf5, 0x50, 0xf4, 0x36, 0x34,
0xdd, 0x77, 0x99, 0x28, 0x56, 0x1b, 0x8c, 0x4b, 0x9a, 0x72, 0x12, 0x6f, 0x60, 0x06, 0x36, 0x54,
0x06, 0x92, 0x4e, 0x67, 0x01, 0xbf, 0xee, 0xff, 0x11, 0x00, 0x00, 0xff, 0xff, 0x80, 0xc6, 0x4c,
0xe0, 0x76, 0x10, 0x00, 0x00,
}