Support column-based insert request in proxy (#5560)

Signed-off-by: dragondriver <jiquan.long@zilliz.com>
pull/5484/head
dragondriver 2021-06-03 15:03:34 +08:00 committed by GitHub
parent b0b8f58192
commit e76830ab09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 606 additions and 359 deletions

1
go.sum
View File

@ -320,6 +320,7 @@ github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFB
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/protocolbuffers/protobuf v3.17.0+incompatible h1:MYhKKlaNOl8FB3F4u6oM2AlpcyLtT+p8Ec1w/9YeHss=
github.com/protocolbuffers/protobuf v3.17.2+incompatible h1:ZM85np8wovAzyCCjAF9oZydM0VZh13Khe1633aDtJhA=
github.com/quasilyte/go-ruleguard v0.2.1 h1:56eRm0daAyny9UhJnmtJW/UyLZQusukBAB8oT8AHKHo=
github.com/quasilyte/go-ruleguard v0.2.1/go.mod h1:hN2rVc/uS4bQhQKTio2XaSJSafJwqBUWWwtssT3cQmc=
github.com/rivo/tview v0.0.0-20200219210816-cd38d7432498/go.mod h1:6lkG1x+13OShEf0EaOCaTQYyB7d5nSbb181KtjlS+84=

View File

@ -16,7 +16,6 @@
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Address_common_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Blob_common_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_KeyValuePair_common_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_MsgBase_common_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_common_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Status_common_2eproto;
@ -751,7 +750,7 @@ static void InitDefaultsscc_info_InsertRequest_milvus_2eproto() {
::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_InsertRequest_milvus_2eproto =
{{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsscc_info_InsertRequest_milvus_2eproto}, {
&scc_info_MsgBase_common_2eproto.base,
&scc_info_Blob_common_2eproto.base,}};
&scc_info_FieldData_schema_2eproto.base,}};
static void InitDefaultsscc_info_InsertResponse_milvus_2eproto() {
GOOGLE_PROTOBUF_VERIFY_VERSION;
@ -1396,7 +1395,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, db_name_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, collection_name_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, partition_name_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, row_data_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, fields_data_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertRequest, hash_keys_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::InsertResponse, _internal_metadata_),
@ -1784,144 +1783,144 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE(
"st\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.M"
"sgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_na"
"me\030\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\022\022\n\nindex_na"
"me\030\005 \001(\t\"\275\001\n\rInsertRequest\022*\n\004base\030\001 \001(\013"
"me\030\005 \001(\t\"\305\001\n\rInsertRequest\022*\n\004base\030\001 \001(\013"
"2\034.milvus.proto.common.MsgBase\022\017\n\007db_nam"
"e\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\026\n\016part"
"ition_name\030\004 \001(\t\022+\n\010row_data\030\005 \003(\0132\031.mil"
"vus.proto.common.Blob\022\021\n\thash_keys\030\006 \003(\r"
"\"e\n\016InsertResponse\022+\n\006status\030\001 \001(\0132\033.mil"
"vus.proto.common.Status\022\023\n\013rowID_begin\030\002"
" \001(\003\022\021\n\trowID_end\030\003 \001(\003\"c\n\020PlaceholderVa"
"lue\022\013\n\003tag\030\001 \001(\t\0222\n\004type\030\002 \001(\0162$.milvus."
"proto.milvus.PlaceholderType\022\016\n\006values\030\003"
" \003(\014\"O\n\020PlaceholderGroup\022;\n\014placeholders"
"\030\001 \003(\0132%.milvus.proto.milvus.Placeholder"
"Value\"\220\002\n\rSearchRequest\022*\n\004base\030\001 \001(\0132\034."
"milvus.proto.common.MsgBase\022\017\n\007db_name\030\002"
" \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017partiti"
"on_names\030\004 \003(\t\022\013\n\003dsl\030\005 \001(\t\022\031\n\021placehold"
"er_group\030\006 \001(\014\022.\n\010dsl_type\030\007 \001(\0162\034.milvu"
"s.proto.common.DslType\0228\n\rsearch_params\030"
"\010 \003(\0132!.milvus.proto.common.KeyValuePair"
"\"\276\001\n\017RetrieveRequest\022*\n\004base\030\001 \001(\0132\034.mil"
"vus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001("
"\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017partition_"
"names\030\004 \003(\t\022%\n\003ids\030\005 \001(\0132\030.milvus.proto."
"schema.IDs\022\025\n\routput_fields\030\006 \003(\t\"\232\001\n\017Re"
"trieveResults\022+\n\006status\030\001 \001(\0132\033.milvus.p"
"roto.common.Status\022%\n\003ids\030\002 \001(\0132\030.milvus"
".proto.schema.IDs\0223\n\013fields_data\030\003 \003(\0132\036"
".milvus.proto.schema.FieldData\"5\n\004Hits\022\013"
"\n\003IDs\030\001 \003(\003\022\020\n\010row_data\030\002 \003(\014\022\016\n\006scores\030"
"\003 \003(\002\"J\n\rSearchResults\022+\n\006status\030\001 \001(\0132\033"
".milvus.proto.common.Status\022\014\n\004hits\030\002 \003("
"\014\"e\n\014FlushRequest\022*\n\004base\030\001 \001(\0132\034.milvus"
".proto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\030"
"\n\020collection_names\030\003 \003(\t\"\231\001\n\025PersistentS"
"egmentInfo\022\021\n\tsegmentID\030\001 \001(\003\022\024\n\014collect"
"ionID\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003\022\020\n\010num_"
"rows\030\004 \001(\003\0220\n\005state\030\005 \001(\0162!.milvus.proto"
".common.SegmentState\"u\n\037GetPersistentSeg"
"mentInfoRequest\022*\n\004base\030\001 \001(\0132\034.milvus.p"
"roto.common.MsgBase\022\016\n\006dbName\030\002 \001(\t\022\026\n\016c"
"ollectionName\030\003 \001(\t\"\212\001\n GetPersistentSeg"
"mentInfoResponse\022+\n\006status\030\001 \001(\0132\033.milvu"
"s.proto.common.Status\0229\n\005infos\030\002 \003(\0132*.m"
"ilvus.proto.milvus.PersistentSegmentInfo"
"\"\231\001\n\020QuerySegmentInfo\022\021\n\tsegmentID\030\001 \001(\003"
"\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013partitionID\030\003 "
"\001(\003\022\020\n\010mem_size\030\004 \001(\003\022\020\n\010num_rows\030\005 \001(\003\022"
"\022\n\nindex_name\030\006 \001(\t\022\017\n\007indexID\030\007 \001(\003\"p\n\032"
"GetQuerySegmentInfoRequest\022*\n\004base\030\001 \001(\013"
"2\034.milvus.proto.common.MsgBase\022\016\n\006dbName"
"\030\002 \001(\t\022\026\n\016collectionName\030\003 \001(\t\"\200\001\n\033GetQu"
"erySegmentInfoResponse\022+\n\006status\030\001 \001(\0132\033"
".milvus.proto.common.Status\0224\n\005infos\030\002 \003"
"(\0132%.milvus.proto.milvus.QuerySegmentInf"
"o\"$\n\014DummyRequest\022\024\n\014request_type\030\001 \001(\t\""
"!\n\rDummyResponse\022\020\n\010response\030\001 \001(\t\"\025\n\023Re"
"gisterLinkRequest\"r\n\024RegisterLinkRespons"
"e\022-\n\007address\030\001 \001(\0132\034.milvus.proto.common"
".Address\022+\n\006status\030\002 \001(\0132\033.milvus.proto."
"common.Status*>\n\017PlaceholderType\022\010\n\004None"
"\020\000\022\020\n\014BinaryVector\020d\022\017\n\013FloatVector\020e2\274\026"
"\n\rMilvusService\022_\n\020CreateCollection\022,.mi"
"lvus.proto.milvus.CreateCollectionReques"
"t\032\033.milvus.proto.common.Status\"\000\022[\n\016Drop"
"Collection\022*.milvus.proto.milvus.DropCol"
"lectionRequest\032\033.milvus.proto.common.Sta"
"tus\"\000\022_\n\rHasCollection\022).milvus.proto.mi"
"lvus.HasCollectionRequest\032!.milvus.proto"
".milvus.BoolResponse\"\000\022[\n\016LoadCollection"
"\022*.milvus.proto.milvus.LoadCollectionReq"
"uest\032\033.milvus.proto.common.Status\"\000\022a\n\021R"
"eleaseCollection\022-.milvus.proto.milvus.R"
"eleaseCollectionRequest\032\033.milvus.proto.c"
"ommon.Status\"\000\022w\n\022DescribeCollection\022..m"
"ilvus.proto.milvus.DescribeCollectionReq"
"uest\032/.milvus.proto.milvus.DescribeColle"
"ctionResponse\"\000\022\206\001\n\027GetCollectionStatist"
"ics\0223.milvus.proto.milvus.GetCollectionS"
"tatisticsRequest\0324.milvus.proto.milvus.G"
"etCollectionStatisticsResponse\"\000\022n\n\017Show"
"Collections\022+.milvus.proto.milvus.ShowCo"
"llectionsRequest\032,.milvus.proto.milvus.S"
"howCollectionsResponse\"\000\022]\n\017CreatePartit"
"ion\022+.milvus.proto.milvus.CreatePartitio"
"nRequest\032\033.milvus.proto.common.Status\"\000\022"
"Y\n\rDropPartition\022).milvus.proto.milvus.D"
"ropPartitionRequest\032\033.milvus.proto.commo"
"n.Status\"\000\022]\n\014HasPartition\022(.milvus.prot"
"o.milvus.HasPartitionRequest\032!.milvus.pr"
"oto.milvus.BoolResponse\"\000\022[\n\016LoadPartiti"
"ons\022*.milvus.proto.milvus.LoadPartitions"
"Request\032\033.milvus.proto.common.Status\"\000\022a"
"\n\021ReleasePartitions\022-.milvus.proto.milvu"
"s.ReleasePartitionsRequest\032\033.milvus.prot"
"o.common.Status\"\000\022\203\001\n\026GetPartitionStatis"
"tics\0222.milvus.proto.milvus.GetPartitionS"
"tatisticsRequest\0323.milvus.proto.milvus.G"
"etPartitionStatisticsResponse\"\000\022k\n\016ShowP"
"artitions\022*.milvus.proto.milvus.ShowPart"
"itionsRequest\032+.milvus.proto.milvus.Show"
"PartitionsResponse\"\000\022U\n\013CreateIndex\022\'.mi"
"lvus.proto.milvus.CreateIndexRequest\032\033.m"
"ilvus.proto.common.Status\"\000\022h\n\rDescribeI"
"ndex\022).milvus.proto.milvus.DescribeIndex"
"Request\032*.milvus.proto.milvus.DescribeIn"
"dexResponse\"\000\022h\n\rGetIndexState\022).milvus."
"proto.milvus.GetIndexStateRequest\032*.milv"
"us.proto.milvus.GetIndexStateResponse\"\000\022"
"\200\001\n\025GetIndexBuildProgress\0221.milvus.proto"
".milvus.GetIndexBuildProgressRequest\0322.m"
"ilvus.proto.milvus.GetIndexBuildProgress"
"Response\"\000\022Q\n\tDropIndex\022%.milvus.proto.m"
"ilvus.DropIndexRequest\032\033.milvus.proto.co"
"mmon.Status\"\000\022S\n\006Insert\022\".milvus.proto.m"
"ilvus.InsertRequest\032#.milvus.proto.milvu"
"s.InsertResponse\"\000\022R\n\006Search\022\".milvus.pr"
"oto.milvus.SearchRequest\032\".milvus.proto."
"milvus.SearchResults\"\000\022X\n\010Retrieve\022$.mil"
"vus.proto.milvus.RetrieveRequest\032$.milvu"
"s.proto.milvus.RetrieveResults\"\000\022I\n\005Flus"
"h\022!.milvus.proto.milvus.FlushRequest\032\033.m"
"ilvus.proto.common.Status\"\000\022\211\001\n\030GetPersi"
"stentSegmentInfo\0224.milvus.proto.milvus.G"
"etPersistentSegmentInfoRequest\0325.milvus."
"proto.milvus.GetPersistentSegmentInfoRes"
"ponse\"\000\022z\n\023GetQuerySegmentInfo\022/.milvus."
"proto.milvus.GetQuerySegmentInfoRequest\032"
"0.milvus.proto.milvus.GetQuerySegmentInf"
"oResponse\"\000\022P\n\005Dummy\022!.milvus.proto.milv"
"us.DummyRequest\032\".milvus.proto.milvus.Du"
"mmyResponse\"\000\022e\n\014RegisterLink\022(.milvus.p"
"roto.milvus.RegisterLinkRequest\032).milvus"
".proto.milvus.RegisterLinkResponse\"\0002u\n\014"
"ProxyService\022e\n\014RegisterLink\022(.milvus.pr"
"oto.milvus.RegisterLinkRequest\032).milvus."
"proto.milvus.RegisterLinkResponse\"\000B5Z3g"
"ithub.com/milvus-io/milvus/internal/prot"
"o/milvuspbb\006proto3"
"ition_name\030\004 \001(\t\0223\n\013fields_data\030\005 \003(\0132\036."
"milvus.proto.schema.FieldData\022\021\n\thash_ke"
"ys\030\006 \003(\r\"e\n\016InsertResponse\022+\n\006status\030\001 \001"
"(\0132\033.milvus.proto.common.Status\022\023\n\013rowID"
"_begin\030\002 \001(\003\022\021\n\trowID_end\030\003 \001(\003\"c\n\020Place"
"holderValue\022\013\n\003tag\030\001 \001(\t\0222\n\004type\030\002 \001(\0162$"
".milvus.proto.milvus.PlaceholderType\022\016\n\006"
"values\030\003 \003(\014\"O\n\020PlaceholderGroup\022;\n\014plac"
"eholders\030\001 \003(\0132%.milvus.proto.milvus.Pla"
"ceholderValue\"\220\002\n\rSearchRequest\022*\n\004base\030"
"\001 \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007d"
"b_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n"
"\017partition_names\030\004 \003(\t\022\013\n\003dsl\030\005 \001(\t\022\031\n\021p"
"laceholder_group\030\006 \001(\014\022.\n\010dsl_type\030\007 \001(\016"
"2\034.milvus.proto.common.DslType\0228\n\rsearch"
"_params\030\010 \003(\0132!.milvus.proto.common.KeyV"
"aluePair\"\276\001\n\017RetrieveRequest\022*\n\004base\030\001 \001"
"(\0132\034.milvus.proto.common.MsgBase\022\017\n\007db_n"
"ame\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017pa"
"rtition_names\030\004 \003(\t\022%\n\003ids\030\005 \001(\0132\030.milvu"
"s.proto.schema.IDs\022\025\n\routput_fields\030\006 \003("
"\t\"\232\001\n\017RetrieveResults\022+\n\006status\030\001 \001(\0132\033."
"milvus.proto.common.Status\022%\n\003ids\030\002 \001(\0132"
"\030.milvus.proto.schema.IDs\0223\n\013fields_data"
"\030\003 \003(\0132\036.milvus.proto.schema.FieldData\"5"
"\n\004Hits\022\013\n\003IDs\030\001 \003(\003\022\020\n\010row_data\030\002 \003(\014\022\016\n"
"\006scores\030\003 \003(\002\"J\n\rSearchResults\022+\n\006status"
"\030\001 \001(\0132\033.milvus.proto.common.Status\022\014\n\004h"
"its\030\002 \003(\014\"e\n\014FlushRequest\022*\n\004base\030\001 \001(\0132"
"\034.milvus.proto.common.MsgBase\022\017\n\007db_name"
"\030\002 \001(\t\022\030\n\020collection_names\030\003 \003(\t\"\231\001\n\025Per"
"sistentSegmentInfo\022\021\n\tsegmentID\030\001 \001(\003\022\024\n"
"\014collectionID\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003"
"\022\020\n\010num_rows\030\004 \001(\003\0220\n\005state\030\005 \001(\0162!.milv"
"us.proto.common.SegmentState\"u\n\037GetPersi"
"stentSegmentInfoRequest\022*\n\004base\030\001 \001(\0132\034."
"milvus.proto.common.MsgBase\022\016\n\006dbName\030\002 "
"\001(\t\022\026\n\016collectionName\030\003 \001(\t\"\212\001\n GetPersi"
"stentSegmentInfoResponse\022+\n\006status\030\001 \001(\013"
"2\033.milvus.proto.common.Status\0229\n\005infos\030\002"
" \003(\0132*.milvus.proto.milvus.PersistentSeg"
"mentInfo\"\231\001\n\020QuerySegmentInfo\022\021\n\tsegment"
"ID\030\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013partit"
"ionID\030\003 \001(\003\022\020\n\010mem_size\030\004 \001(\003\022\020\n\010num_row"
"s\030\005 \001(\003\022\022\n\nindex_name\030\006 \001(\t\022\017\n\007indexID\030\007"
" \001(\003\"p\n\032GetQuerySegmentInfoRequest\022*\n\004ba"
"se\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022\016"
"\n\006dbName\030\002 \001(\t\022\026\n\016collectionName\030\003 \001(\t\"\200"
"\001\n\033GetQuerySegmentInfoResponse\022+\n\006status"
"\030\001 \001(\0132\033.milvus.proto.common.Status\0224\n\005i"
"nfos\030\002 \003(\0132%.milvus.proto.milvus.QuerySe"
"gmentInfo\"$\n\014DummyRequest\022\024\n\014request_typ"
"e\030\001 \001(\t\"!\n\rDummyResponse\022\020\n\010response\030\001 \001"
"(\t\"\025\n\023RegisterLinkRequest\"r\n\024RegisterLin"
"kResponse\022-\n\007address\030\001 \001(\0132\034.milvus.prot"
"o.common.Address\022+\n\006status\030\002 \001(\0132\033.milvu"
"s.proto.common.Status*>\n\017PlaceholderType"
"\022\010\n\004None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013FloatVec"
"tor\020e2\274\026\n\rMilvusService\022_\n\020CreateCollect"
"ion\022,.milvus.proto.milvus.CreateCollecti"
"onRequest\032\033.milvus.proto.common.Status\"\000"
"\022[\n\016DropCollection\022*.milvus.proto.milvus"
".DropCollectionRequest\032\033.milvus.proto.co"
"mmon.Status\"\000\022_\n\rHasCollection\022).milvus."
"proto.milvus.HasCollectionRequest\032!.milv"
"us.proto.milvus.BoolResponse\"\000\022[\n\016LoadCo"
"llection\022*.milvus.proto.milvus.LoadColle"
"ctionRequest\032\033.milvus.proto.common.Statu"
"s\"\000\022a\n\021ReleaseCollection\022-.milvus.proto."
"milvus.ReleaseCollectionRequest\032\033.milvus"
".proto.common.Status\"\000\022w\n\022DescribeCollec"
"tion\022..milvus.proto.milvus.DescribeColle"
"ctionRequest\032/.milvus.proto.milvus.Descr"
"ibeCollectionResponse\"\000\022\206\001\n\027GetCollectio"
"nStatistics\0223.milvus.proto.milvus.GetCol"
"lectionStatisticsRequest\0324.milvus.proto."
"milvus.GetCollectionStatisticsResponse\"\000"
"\022n\n\017ShowCollections\022+.milvus.proto.milvu"
"s.ShowCollectionsRequest\032,.milvus.proto."
"milvus.ShowCollectionsResponse\"\000\022]\n\017Crea"
"tePartition\022+.milvus.proto.milvus.Create"
"PartitionRequest\032\033.milvus.proto.common.S"
"tatus\"\000\022Y\n\rDropPartition\022).milvus.proto."
"milvus.DropPartitionRequest\032\033.milvus.pro"
"to.common.Status\"\000\022]\n\014HasPartition\022(.mil"
"vus.proto.milvus.HasPartitionRequest\032!.m"
"ilvus.proto.milvus.BoolResponse\"\000\022[\n\016Loa"
"dPartitions\022*.milvus.proto.milvus.LoadPa"
"rtitionsRequest\032\033.milvus.proto.common.St"
"atus\"\000\022a\n\021ReleasePartitions\022-.milvus.pro"
"to.milvus.ReleasePartitionsRequest\032\033.mil"
"vus.proto.common.Status\"\000\022\203\001\n\026GetPartiti"
"onStatistics\0222.milvus.proto.milvus.GetPa"
"rtitionStatisticsRequest\0323.milvus.proto."
"milvus.GetPartitionStatisticsResponse\"\000\022"
"k\n\016ShowPartitions\022*.milvus.proto.milvus."
"ShowPartitionsRequest\032+.milvus.proto.mil"
"vus.ShowPartitionsResponse\"\000\022U\n\013CreateIn"
"dex\022\'.milvus.proto.milvus.CreateIndexReq"
"uest\032\033.milvus.proto.common.Status\"\000\022h\n\rD"
"escribeIndex\022).milvus.proto.milvus.Descr"
"ibeIndexRequest\032*.milvus.proto.milvus.De"
"scribeIndexResponse\"\000\022h\n\rGetIndexState\022)"
".milvus.proto.milvus.GetIndexStateReques"
"t\032*.milvus.proto.milvus.GetIndexStateRes"
"ponse\"\000\022\200\001\n\025GetIndexBuildProgress\0221.milv"
"us.proto.milvus.GetIndexBuildProgressReq"
"uest\0322.milvus.proto.milvus.GetIndexBuild"
"ProgressResponse\"\000\022Q\n\tDropIndex\022%.milvus"
".proto.milvus.DropIndexRequest\032\033.milvus."
"proto.common.Status\"\000\022S\n\006Insert\022\".milvus"
".proto.milvus.InsertRequest\032#.milvus.pro"
"to.milvus.InsertResponse\"\000\022R\n\006Search\022\".m"
"ilvus.proto.milvus.SearchRequest\032\".milvu"
"s.proto.milvus.SearchResults\"\000\022X\n\010Retrie"
"ve\022$.milvus.proto.milvus.RetrieveRequest"
"\032$.milvus.proto.milvus.RetrieveResults\"\000"
"\022I\n\005Flush\022!.milvus.proto.milvus.FlushReq"
"uest\032\033.milvus.proto.common.Status\"\000\022\211\001\n\030"
"GetPersistentSegmentInfo\0224.milvus.proto."
"milvus.GetPersistentSegmentInfoRequest\0325"
".milvus.proto.milvus.GetPersistentSegmen"
"tInfoResponse\"\000\022z\n\023GetQuerySegmentInfo\022/"
".milvus.proto.milvus.GetQuerySegmentInfo"
"Request\0320.milvus.proto.milvus.GetQuerySe"
"gmentInfoResponse\"\000\022P\n\005Dummy\022!.milvus.pr"
"oto.milvus.DummyRequest\032\".milvus.proto.m"
"ilvus.DummyResponse\"\000\022e\n\014RegisterLink\022(."
"milvus.proto.milvus.RegisterLinkRequest\032"
").milvus.proto.milvus.RegisterLinkRespon"
"se\"\0002u\n\014ProxyService\022e\n\014RegisterLink\022(.m"
"ilvus.proto.milvus.RegisterLinkRequest\032)"
".milvus.proto.milvus.RegisterLinkRespons"
"e\"\000B5Z3github.com/milvus-io/milvus/inter"
"nal/proto/milvuspbb\006proto3"
;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_milvus_2eproto_deps[2] = {
&::descriptor_table_common_2eproto,
@ -1987,7 +1986,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_milvus_2eproto_once;
static bool descriptor_table_milvus_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_milvus_2eproto = {
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 10098,
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 10106,
&descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 55, 2,
schemas, file_default_instances, TableStruct_milvus_2eproto::offsets,
file_level_metadata_milvus_2eproto, 55, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto,
@ -16704,8 +16703,8 @@ void InsertRequest::clear_base() {
}
base_ = nullptr;
}
void InsertRequest::clear_row_data() {
row_data_.Clear();
void InsertRequest::clear_fields_data() {
fields_data_.Clear();
}
InsertRequest::InsertRequest()
: ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
@ -16715,7 +16714,7 @@ InsertRequest::InsertRequest()
InsertRequest::InsertRequest(const InsertRequest& from)
: ::PROTOBUF_NAMESPACE_ID::Message(),
_internal_metadata_(nullptr),
row_data_(from.row_data_),
fields_data_(from.fields_data_),
hash_keys_(from.hash_keys_) {
_internal_metadata_.MergeFrom(from._internal_metadata_);
db_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
@ -16773,7 +16772,7 @@ void InsertRequest::Clear() {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
row_data_.Clear();
fields_data_.Clear();
hash_keys_.Clear();
db_name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
collection_name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
@ -16821,13 +16820,13 @@ const char* InsertRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_
CHK_(ptr);
} else goto handle_unusual;
continue;
// repeated .milvus.proto.common.Blob row_data = 5;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
case 5:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
ptr -= 1;
do {
ptr += 1;
ptr = ctx->ParseMessage(add_row_data(), ptr);
ptr = ctx->ParseMessage(add_fields_data(), ptr);
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 42);
@ -16929,11 +16928,11 @@ bool InsertRequest::MergePartialFromCodedStream(
break;
}
// repeated .milvus.proto.common.Blob row_data = 5;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
case 5: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
input, add_row_data()));
input, add_fields_data()));
} else {
goto handle_unusual;
}
@ -17019,12 +17018,12 @@ void InsertRequest::SerializeWithCachedSizes(
4, this->partition_name(), output);
}
// repeated .milvus.proto.common.Blob row_data = 5;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
for (unsigned int i = 0,
n = static_cast<unsigned int>(this->row_data_size()); i < n; i++) {
n = static_cast<unsigned int>(this->fields_data_size()); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessageMaybeToArray(
5,
this->row_data(static_cast<int>(i)),
this->fields_data(static_cast<int>(i)),
output);
}
@ -17092,12 +17091,12 @@ void InsertRequest::SerializeWithCachedSizes(
4, this->partition_name(), target);
}
// repeated .milvus.proto.common.Blob row_data = 5;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
for (unsigned int i = 0,
n = static_cast<unsigned int>(this->row_data_size()); i < n; i++) {
n = static_cast<unsigned int>(this->fields_data_size()); i < n; i++) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
InternalWriteMessageToArray(
5, this->row_data(static_cast<int>(i)), target);
5, this->fields_data(static_cast<int>(i)), target);
}
// repeated uint32 hash_keys = 6;
@ -17134,14 +17133,14 @@ size_t InsertRequest::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// repeated .milvus.proto.common.Blob row_data = 5;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
{
unsigned int count = static_cast<unsigned int>(this->row_data_size());
unsigned int count = static_cast<unsigned int>(this->fields_data_size());
total_size += 1UL * count;
for (unsigned int i = 0; i < count; i++) {
total_size +=
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
this->row_data(static_cast<int>(i)));
this->fields_data(static_cast<int>(i)));
}
}
@ -17215,7 +17214,7 @@ void InsertRequest::MergeFrom(const InsertRequest& from) {
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
row_data_.MergeFrom(from.row_data_);
fields_data_.MergeFrom(from.fields_data_);
hash_keys_.MergeFrom(from.hash_keys_);
if (from.db_name().size() > 0) {
@ -17255,7 +17254,7 @@ bool InsertRequest::IsInitialized() const {
void InsertRequest::InternalSwap(InsertRequest* other) {
using std::swap;
_internal_metadata_.Swap(&other->_internal_metadata_);
CastToBase(&row_data_)->InternalSwap(CastToBase(&other->row_data_));
CastToBase(&fields_data_)->InternalSwap(CastToBase(&other->fields_data_));
hash_keys_.InternalSwap(&other->hash_keys_);
db_name_.Swap(&other->db_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
GetArenaNoVirtual());

View File

@ -6188,23 +6188,23 @@ class InsertRequest :
// accessors -------------------------------------------------------
enum : int {
kRowDataFieldNumber = 5,
kFieldsDataFieldNumber = 5,
kHashKeysFieldNumber = 6,
kDbNameFieldNumber = 2,
kCollectionNameFieldNumber = 3,
kPartitionNameFieldNumber = 4,
kBaseFieldNumber = 1,
};
// repeated .milvus.proto.common.Blob row_data = 5;
int row_data_size() const;
void clear_row_data();
::milvus::proto::common::Blob* mutable_row_data(int index);
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >*
mutable_row_data();
const ::milvus::proto::common::Blob& row_data(int index) const;
::milvus::proto::common::Blob* add_row_data();
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >&
row_data() const;
// repeated .milvus.proto.schema.FieldData fields_data = 5;
int fields_data_size() const;
void clear_fields_data();
::milvus::proto::schema::FieldData* mutable_fields_data(int index);
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::schema::FieldData >*
mutable_fields_data();
const ::milvus::proto::schema::FieldData& fields_data(int index) const;
::milvus::proto::schema::FieldData* add_fields_data();
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::schema::FieldData >&
fields_data() const;
// repeated uint32 hash_keys = 6;
int hash_keys_size() const;
@ -6263,7 +6263,7 @@ class InsertRequest :
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob > row_data_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::schema::FieldData > fields_data_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > hash_keys_;
mutable std::atomic<int> _hash_keys_cached_byte_size_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr db_name_;
@ -14927,31 +14927,31 @@ inline void InsertRequest::set_allocated_partition_name(std::string* partition_n
// @@protoc_insertion_point(field_set_allocated:milvus.proto.milvus.InsertRequest.partition_name)
}
// repeated .milvus.proto.common.Blob row_data = 5;
inline int InsertRequest::row_data_size() const {
return row_data_.size();
// repeated .milvus.proto.schema.FieldData fields_data = 5;
inline int InsertRequest::fields_data_size() const {
return fields_data_.size();
}
inline ::milvus::proto::common::Blob* InsertRequest::mutable_row_data(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.milvus.InsertRequest.row_data)
return row_data_.Mutable(index);
inline ::milvus::proto::schema::FieldData* InsertRequest::mutable_fields_data(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.milvus.InsertRequest.fields_data)
return fields_data_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >*
InsertRequest::mutable_row_data() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.milvus.InsertRequest.row_data)
return &row_data_;
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::schema::FieldData >*
InsertRequest::mutable_fields_data() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.milvus.InsertRequest.fields_data)
return &fields_data_;
}
inline const ::milvus::proto::common::Blob& InsertRequest::row_data(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.InsertRequest.row_data)
return row_data_.Get(index);
inline const ::milvus::proto::schema::FieldData& InsertRequest::fields_data(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.InsertRequest.fields_data)
return fields_data_.Get(index);
}
inline ::milvus::proto::common::Blob* InsertRequest::add_row_data() {
// @@protoc_insertion_point(field_add:milvus.proto.milvus.InsertRequest.row_data)
return row_data_.Add();
inline ::milvus::proto::schema::FieldData* InsertRequest::add_fields_data() {
// @@protoc_insertion_point(field_add:milvus.proto.milvus.InsertRequest.fields_data)
return fields_data_.Add();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >&
InsertRequest::row_data() const {
// @@protoc_insertion_point(field_list:milvus.proto.milvus.InsertRequest.row_data)
return row_data_;
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::schema::FieldData >&
InsertRequest::fields_data() const {
// @@protoc_insertion_point(field_list:milvus.proto.milvus.InsertRequest.fields_data)
return fields_data_;
}
// repeated uint32 hash_keys = 6;

View File

@ -274,12 +274,12 @@ message DropIndexRequest {
}
message InsertRequest {
common.MsgBase base = 1; // must
common.MsgBase base = 1;
string db_name = 2;
string collection_name = 3; // must
string partition_name = 4; // must
repeated common.Blob row_data = 5; // must
repeated uint32 hash_keys = 6; // must
string collection_name = 3;
string partition_name = 4;
repeated schema.FieldData fields_data = 5;
repeated uint32 hash_keys = 6;
}
message InsertResponse {

View File

@ -2125,15 +2125,15 @@ func (m *DropIndexRequest) GetIndexName() string {
}
type InsertRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"`
CollectionName string `protobuf:"bytes,3,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"`
PartitionName string `protobuf:"bytes,4,opt,name=partition_name,json=partitionName,proto3" json:"partition_name,omitempty"`
RowData []*commonpb.Blob `protobuf:"bytes,5,rep,name=row_data,json=rowData,proto3" json:"row_data,omitempty"`
HashKeys []uint32 `protobuf:"varint,6,rep,packed,name=hash_keys,json=hashKeys,proto3" json:"hash_keys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"`
CollectionName string `protobuf:"bytes,3,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"`
PartitionName string `protobuf:"bytes,4,opt,name=partition_name,json=partitionName,proto3" json:"partition_name,omitempty"`
FieldsData []*schemapb.FieldData `protobuf:"bytes,5,rep,name=fields_data,json=fieldsData,proto3" json:"fields_data,omitempty"`
HashKeys []uint32 `protobuf:"varint,6,rep,packed,name=hash_keys,json=hashKeys,proto3" json:"hash_keys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InsertRequest) Reset() { *m = InsertRequest{} }
@ -2189,9 +2189,9 @@ func (m *InsertRequest) GetPartitionName() string {
return ""
}
func (m *InsertRequest) GetRowData() []*commonpb.Blob {
func (m *InsertRequest) GetFieldsData() []*schemapb.FieldData {
if m != nil {
return m.RowData
return m.FieldsData
}
return nil
}
@ -3320,151 +3320,150 @@ func init() {
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
var fileDescriptor_02345ba45cc0e303 = []byte{
// 2292 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x8f, 0x1c, 0x47,
0x15, 0x77, 0xcd, 0xec, 0xcc, 0xee, 0xbc, 0xe9, 0xd9, 0x9d, 0xd4, 0x7e, 0x78, 0xdc, 0xfe, 0x5a,
0x77, 0x62, 0xb2, 0xb6, 0x13, 0x3b, 0x59, 0xdb, 0x18, 0x84, 0xf8, 0x5a, 0x0f, 0xb6, 0x57, 0x4e,
0xac, 0x4d, 0x4f, 0x88, 0x12, 0x22, 0x6b, 0xd4, 0x33, 0x5d, 0xde, 0x69, 0xb9, 0x3f, 0x86, 0xae,
0x9e, 0x5d, 0x8f, 0x4f, 0x88, 0x20, 0x24, 0x04, 0x38, 0x07, 0x10, 0x12, 0x1c, 0x38, 0x20, 0xe5,
0xc0, 0x09, 0x50, 0x90, 0x90, 0x10, 0xc7, 0x1c, 0xb8, 0x81, 0xf8, 0x1f, 0xb8, 0xc1, 0x9f, 0x80,
0x40, 0x5d, 0x55, 0xdd, 0xd3, 0xdd, 0x5b, 0x3d, 0x3b, 0xeb, 0x89, 0xd9, 0xdd, 0x5b, 0xf7, 0xeb,
0xf7, 0xaa, 0x7e, 0xf5, 0xea, 0xbd, 0x57, 0xef, 0xd5, 0x6b, 0x50, 0x1c, 0xcb, 0xde, 0x19, 0xd0,
0xab, 0x7d, 0xdf, 0x0b, 0x3c, 0xbc, 0x98, 0x7c, 0xbb, 0xca, 0x5f, 0x54, 0xa5, 0xeb, 0x39, 0x8e,
0xe7, 0x72, 0xa2, 0xaa, 0xd0, 0x6e, 0x8f, 0x38, 0x06, 0x7f, 0xd3, 0x3e, 0x43, 0x70, 0xf2, 0xb6,
0x4f, 0x8c, 0x80, 0xdc, 0xf6, 0x6c, 0x9b, 0x74, 0x03, 0xcb, 0x73, 0x75, 0xf2, 0xdd, 0x01, 0xa1,
0x01, 0x7e, 0x03, 0x66, 0x3a, 0x06, 0x25, 0x0d, 0xb4, 0x8a, 0xd6, 0xaa, 0xeb, 0x67, 0xae, 0xa6,
0xc6, 0x16, 0x63, 0xbe, 0x4d, 0xb7, 0x37, 0x0c, 0x4a, 0x74, 0xc6, 0x89, 0x4f, 0xc2, 0xac, 0xd9,
0x69, 0xbb, 0x86, 0x43, 0x1a, 0x85, 0x55, 0xb4, 0x56, 0xd1, 0xcb, 0x66, 0xe7, 0x81, 0xe1, 0x10,
0xfc, 0x2a, 0x2c, 0x74, 0xe3, 0xf1, 0x39, 0x43, 0x91, 0x31, 0xcc, 0x8f, 0xc8, 0x8c, 0x71, 0x05,
0xca, 0x1c, 0x5f, 0x63, 0x66, 0x15, 0xad, 0x29, 0xba, 0x78, 0xc3, 0x67, 0x01, 0x68, 0xcf, 0xf0,
0x4d, 0xda, 0x76, 0x07, 0x4e, 0xa3, 0xb4, 0x8a, 0xd6, 0x4a, 0x7a, 0x85, 0x53, 0x1e, 0x0c, 0x1c,
0xed, 0xc7, 0x08, 0x96, 0x9b, 0xbe, 0xd7, 0x3f, 0x12, 0x8b, 0xd0, 0x7e, 0x8b, 0x60, 0xe9, 0x9e,
0x41, 0x8f, 0x86, 0x46, 0xcf, 0x02, 0x04, 0x96, 0x43, 0xda, 0x34, 0x30, 0x9c, 0x3e, 0xd3, 0xea,
0x8c, 0x5e, 0x09, 0x29, 0xad, 0x90, 0xa0, 0x7d, 0x00, 0xca, 0x86, 0xe7, 0xd9, 0x3a, 0xa1, 0x7d,
0xcf, 0xa5, 0x04, 0x5f, 0x87, 0x32, 0x0d, 0x8c, 0x60, 0x40, 0x05, 0xc8, 0xd3, 0x52, 0x90, 0x2d,
0xc6, 0xa2, 0x0b, 0x56, 0xbc, 0x04, 0xa5, 0x1d, 0xc3, 0x1e, 0x70, 0x8c, 0x73, 0x3a, 0x7f, 0xd1,
0x3e, 0x84, 0xf9, 0x56, 0xe0, 0x5b, 0xee, 0xf6, 0xe7, 0x38, 0x78, 0x25, 0x1a, 0xfc, 0x1f, 0x08,
0x4e, 0x35, 0x09, 0xed, 0xfa, 0x56, 0xe7, 0x88, 0x98, 0xae, 0x06, 0xca, 0x88, 0xb2, 0xd9, 0x64,
0xaa, 0x2e, 0xea, 0x29, 0x5a, 0x66, 0x33, 0x4a, 0xd9, 0xcd, 0xf8, 0x75, 0x01, 0x54, 0xd9, 0xa2,
0xa6, 0x51, 0xdf, 0x57, 0x63, 0x8f, 0x2a, 0x30, 0xa1, 0x8b, 0x69, 0x21, 0x11, 0x0d, 0x46, 0xb3,
0xb5, 0x18, 0x21, 0x76, 0xbc, 0xec, 0xaa, 0x8a, 0x92, 0x55, 0xad, 0xc3, 0xf2, 0x8e, 0xe5, 0x07,
0x03, 0xc3, 0x6e, 0x77, 0x7b, 0x86, 0xeb, 0x12, 0x9b, 0xe9, 0x89, 0x36, 0x66, 0x56, 0x8b, 0x6b,
0x15, 0x7d, 0x51, 0x7c, 0xbc, 0xcd, 0xbf, 0x85, 0xca, 0xa2, 0xf8, 0x06, 0xac, 0xf4, 0x7b, 0x43,
0x6a, 0x75, 0xf7, 0x08, 0x95, 0x98, 0xd0, 0x52, 0xf4, 0x35, 0x29, 0xc5, 0xfc, 0xfc, 0x2d, 0xcf,
0x30, 0x8f, 0x86, 0x9f, 0x3f, 0x43, 0xd0, 0xd0, 0x89, 0x4d, 0x0c, 0x7a, 0x34, 0x4c, 0x50, 0xfb,
0x39, 0x82, 0x73, 0x77, 0x49, 0x90, 0xd8, 0xcc, 0xc0, 0x08, 0x2c, 0x1a, 0x58, 0x5d, 0x7a, 0x98,
0xb0, 0x3e, 0x46, 0x70, 0x3e, 0x17, 0xd6, 0x34, 0xb6, 0x7d, 0x0b, 0x4a, 0xe1, 0x13, 0x6d, 0x14,
0x56, 0x8b, 0x6b, 0xd5, 0xf5, 0x0b, 0x52, 0x99, 0xfb, 0x64, 0xf8, 0x5e, 0x18, 0x32, 0xb6, 0x0c,
0xcb, 0xd7, 0x39, 0xbf, 0xf6, 0x7d, 0x04, 0x2b, 0xad, 0x9e, 0xb7, 0x3b, 0x82, 0xf4, 0x22, 0x14,
0x94, 0xf6, 0xf6, 0x62, 0xd6, 0xdb, 0x87, 0x70, 0x72, 0x0f, 0x86, 0x69, 0xb4, 0x71, 0x09, 0xea,
0x99, 0xfd, 0xe0, 0x8a, 0xa9, 0xe8, 0x0b, 0xe9, 0x0d, 0xa1, 0xda, 0xa7, 0x08, 0x56, 0xf8, 0xb1,
0xbf, 0x65, 0xf8, 0x81, 0x75, 0xd8, 0xa1, 0xf3, 0x22, 0xcc, 0xf7, 0x23, 0x1c, 0x9c, 0x6f, 0x86,
0xf1, 0xd5, 0x62, 0x2a, 0xb3, 0xa3, 0x3f, 0x20, 0x58, 0x0a, 0x4f, 0xf9, 0xe3, 0x84, 0xf9, 0xf7,
0x08, 0x16, 0xef, 0x19, 0xf4, 0x38, 0x41, 0xfe, 0xa3, 0x08, 0xb2, 0x31, 0xe6, 0xc3, 0x0c, 0x1e,
0x21, 0x63, 0x1a, 0x74, 0x74, 0xac, 0xcc, 0xa7, 0x50, 0x53, 0xed, 0x4f, 0xa3, 0x68, 0x7c, 0xcc,
0x90, 0xff, 0x19, 0xc1, 0xd9, 0xbb, 0x24, 0x88, 0x51, 0x1f, 0x89, 0xa8, 0x3d, 0xa9, 0xb5, 0x3c,
0xe3, 0x67, 0x8e, 0x14, 0xfc, 0xa1, 0xc4, 0xf6, 0xdf, 0x21, 0x58, 0x0e, 0xe3, 0xea, 0xd1, 0x30,
0x82, 0x09, 0xb2, 0x42, 0xed, 0x57, 0xe2, 0x34, 0x4a, 0x22, 0x9e, 0x46, 0x75, 0x12, 0xc3, 0x2b,
0xc8, 0x0c, 0x2f, 0x04, 0x17, 0x53, 0x36, 0x9b, 0xb4, 0x51, 0x5c, 0x2d, 0x86, 0xe0, 0x92, 0x34,
0xed, 0x27, 0x08, 0x56, 0xa2, 0x9c, 0xb4, 0x45, 0xb6, 0x1d, 0xe2, 0x06, 0xcf, 0xaf, 0xcf, 0xac,
0x36, 0x0a, 0x92, 0x6c, 0xf2, 0x0c, 0x54, 0x28, 0x9f, 0x27, 0x4e, 0x37, 0x47, 0x04, 0xed, 0x13,
0x04, 0x27, 0xf7, 0xc0, 0x99, 0x46, 0x59, 0x0d, 0x98, 0xb5, 0x5c, 0x93, 0x3c, 0x89, 0xd1, 0x44,
0xaf, 0xe1, 0x97, 0xce, 0xc0, 0xb2, 0xcd, 0x18, 0x46, 0xf4, 0x8a, 0x2f, 0x80, 0x42, 0x5c, 0xa3,
0x63, 0x93, 0x36, 0xe3, 0x65, 0x9b, 0x3a, 0xa7, 0x57, 0x39, 0x6d, 0x33, 0x24, 0x69, 0x3f, 0x45,
0xb0, 0x18, 0xee, 0xa9, 0xc0, 0x48, 0x5f, 0xac, 0xce, 0x56, 0xa1, 0x9a, 0xd8, 0x34, 0x01, 0x37,
0x49, 0xd2, 0x1e, 0xc3, 0x52, 0x1a, 0xce, 0x34, 0x3a, 0x3b, 0x07, 0x10, 0xef, 0x08, 0xb7, 0xad,
0xa2, 0x9e, 0xa0, 0x68, 0xff, 0x46, 0x80, 0x79, 0x7a, 0xc1, 0x94, 0x71, 0xc8, 0xe5, 0xef, 0x23,
0x8b, 0xd8, 0x66, 0x32, 0x82, 0x55, 0x18, 0x85, 0x7d, 0x6e, 0x82, 0x42, 0x9e, 0x04, 0xbe, 0xd1,
0xee, 0x1b, 0xbe, 0xe1, 0xf0, 0xe2, 0x63, 0xa2, 0x60, 0x53, 0x65, 0x62, 0x5b, 0x4c, 0x4a, 0xfb,
0x6b, 0x98, 0x98, 0x08, 0xa3, 0x3c, 0xea, 0x2b, 0x3e, 0x0b, 0xc0, 0x8c, 0x96, 0x7f, 0x2e, 0xf1,
0xcf, 0x8c, 0xc2, 0xc2, 0xf9, 0x27, 0x08, 0xea, 0x6c, 0x09, 0x7c, 0x3d, 0xfd, 0x70, 0xd8, 0x8c,
0x0c, 0xca, 0xc8, 0x8c, 0x71, 0xa1, 0x2f, 0x43, 0x59, 0x28, 0xb6, 0x38, 0xa9, 0x62, 0x85, 0xc0,
0x3e, 0xcb, 0xd0, 0x7e, 0x83, 0x60, 0x39, 0xa3, 0xf2, 0x69, 0x2c, 0xfa, 0x5d, 0xc0, 0x7c, 0x85,
0xe6, 0x68, 0xd9, 0xd1, 0xd1, 0x93, 0xa9, 0x98, 0xc5, 0x4b, 0x56, 0x49, 0xfa, 0x4b, 0x56, 0x86,
0x42, 0xb5, 0xbf, 0x23, 0x38, 0x73, 0x97, 0x04, 0x8c, 0x75, 0x23, 0x8c, 0x1d, 0x5b, 0xbe, 0xb7,
0xed, 0x13, 0x4a, 0x8f, 0xaf, 0x7d, 0xfc, 0x82, 0xe7, 0x2a, 0xb2, 0x25, 0x4d, 0xa3, 0xff, 0x0b,
0xa0, 0xb0, 0x39, 0x88, 0xd9, 0xf6, 0xbd, 0x5d, 0x2a, 0xec, 0xa8, 0x2a, 0x68, 0xba, 0xb7, 0xcb,
0x0c, 0x22, 0xf0, 0x02, 0xc3, 0xe6, 0x0c, 0xe2, 0x60, 0x60, 0x94, 0xf0, 0x33, 0xf3, 0xc1, 0x08,
0x58, 0x38, 0x38, 0x39, 0xbe, 0x3a, 0xfe, 0x08, 0xc1, 0x72, 0x66, 0x29, 0xd3, 0xe8, 0xf6, 0x26,
0xcf, 0xa4, 0xf8, 0x62, 0xe6, 0xd7, 0xcf, 0x4b, 0x65, 0x12, 0x93, 0x71, 0x6e, 0xed, 0x33, 0x04,
0xf5, 0xb0, 0xda, 0x3a, 0xe6, 0x01, 0xed, 0x3f, 0x08, 0x6a, 0x9b, 0x2e, 0x25, 0x7e, 0x70, 0xf4,
0x93, 0x69, 0x7c, 0x03, 0xe6, 0x7c, 0x6f, 0xb7, 0x6d, 0x1a, 0x81, 0x21, 0x8e, 0xa2, 0x53, 0x52,
0x78, 0x1b, 0xb6, 0xd7, 0xd1, 0x67, 0x7d, 0x6f, 0xb7, 0x69, 0x04, 0x06, 0x3e, 0x0d, 0x95, 0x9e,
0x41, 0x7b, 0xed, 0xc7, 0x64, 0x48, 0x1b, 0xe5, 0xd5, 0xe2, 0x5a, 0x4d, 0x9f, 0x0b, 0x09, 0xf7,
0xc9, 0x90, 0x86, 0xc6, 0x34, 0x1f, 0xad, 0x7f, 0x1a, 0x2b, 0x3a, 0x0f, 0x55, 0xdf, 0xdb, 0xdd,
0x6c, 0xb6, 0x3b, 0x64, 0xdb, 0x72, 0x85, 0x83, 0x02, 0x23, 0x6d, 0x84, 0x94, 0x10, 0x05, 0x67,
0x20, 0xae, 0x29, 0xdc, 0x73, 0x8e, 0x11, 0xbe, 0xe5, 0x9a, 0xda, 0x0e, 0xd4, 0xb7, 0x6c, 0xa3,
0x4b, 0x7a, 0x9e, 0x6d, 0x12, 0x9f, 0x45, 0x7b, 0x5c, 0x87, 0x62, 0x60, 0x6c, 0x8b, 0xe3, 0x24,
0x7c, 0xc4, 0x5f, 0x82, 0x99, 0x60, 0xd8, 0x8f, 0x0c, 0xf5, 0x15, 0x69, 0xdc, 0x4d, 0x0c, 0xf3,
0xee, 0xb0, 0x4f, 0x74, 0x26, 0x81, 0x57, 0xa0, 0xcc, 0xee, 0x85, 0xf9, 0x41, 0xa3, 0xe8, 0xe2,
0x4d, 0x7b, 0x98, 0x9a, 0xf7, 0xae, 0xef, 0x0d, 0xfa, 0x78, 0x13, 0x94, 0xfe, 0x88, 0x16, 0x2a,
0x21, 0x3f, 0xca, 0x67, 0x41, 0xeb, 0x29, 0x51, 0xed, 0x5f, 0x05, 0xa8, 0xb5, 0x88, 0xe1, 0x77,
0x7b, 0xc7, 0xa1, 0xd0, 0x0c, 0x35, 0x6e, 0x52, 0x5b, 0xf8, 0x48, 0xf8, 0x88, 0xaf, 0xc0, 0x4b,
0x89, 0x05, 0xb5, 0xb7, 0x43, 0x05, 0x35, 0xca, 0xac, 0xf5, 0x52, 0xef, 0x67, 0x15, 0x77, 0x0b,
0xe6, 0x4c, 0x6a, 0xb7, 0xd9, 0x16, 0xcd, 0xb2, 0x2d, 0x92, 0xaf, 0xaf, 0x49, 0x6d, 0xb6, 0x35,
0xb3, 0x26, 0x7f, 0xc0, 0x77, 0xa0, 0x46, 0x99, 0x96, 0xa2, 0x34, 0x6b, 0x6e, 0xd2, 0x6c, 0x40,
0xe1, 0x72, 0x22, 0xcf, 0xfa, 0x2f, 0x82, 0x05, 0x9d, 0x04, 0xbe, 0x45, 0x76, 0xc8, 0xb1, 0x50,
0xf8, 0x65, 0x28, 0x5a, 0x26, 0x65, 0x0a, 0xaf, 0xae, 0x37, 0xa4, 0x37, 0xef, 0x9b, 0x4d, 0xaa,
0x87, 0x4c, 0xf8, 0x65, 0xa8, 0x79, 0x83, 0xa0, 0x3f, 0x08, 0xda, 0x2c, 0xb6, 0x71, 0x4f, 0xae,
0xe8, 0x0a, 0x27, 0xde, 0x61, 0x34, 0xed, 0xd3, 0x94, 0x06, 0xe8, 0xc0, 0x0e, 0xe8, 0xf3, 0xb9,
0xb3, 0x40, 0x56, 0x98, 0x04, 0xd9, 0xd7, 0xa1, 0xca, 0x21, 0xf1, 0xc0, 0xc4, 0x53, 0xb9, 0x73,
0x52, 0x19, 0x06, 0x33, 0x0c, 0x4a, 0x3a, 0x8f, 0xd9, 0x34, 0x7c, 0xd6, 0xee, 0xc3, 0xcc, 0x3d,
0x2b, 0x60, 0xf6, 0x17, 0x16, 0x0c, 0x88, 0x15, 0x0c, 0xe1, 0x23, 0x3e, 0x95, 0x08, 0x78, 0x05,
0xe6, 0xb9, 0x71, 0x54, 0x63, 0xad, 0x40, 0xcf, 0x17, 0x2e, 0x5d, 0xd0, 0xc5, 0x9b, 0xf6, 0xfe,
0xc8, 0xe5, 0xa6, 0x58, 0x3f, 0x86, 0x99, 0x9e, 0x25, 0x6e, 0x17, 0x14, 0x9d, 0x3d, 0x6b, 0x3f,
0x40, 0xa0, 0xdc, 0xb1, 0x07, 0xf4, 0x45, 0x38, 0xb3, 0xec, 0x72, 0xb6, 0x28, 0xbf, 0x9c, 0xfd,
0x1b, 0x82, 0xe5, 0x2d, 0xe2, 0x53, 0x8b, 0x06, 0xc4, 0x0d, 0x44, 0xc5, 0xb6, 0xe9, 0x3e, 0xf2,
0xd2, 0xa5, 0x31, 0xca, 0x94, 0xc6, 0x9f, 0x4f, 0xa1, 0x18, 0xee, 0x88, 0x3b, 0x70, 0x78, 0x92,
0xc5, 0x2f, 0x2b, 0x66, 0xdd, 0x81, 0xc3, 0x32, 0xb0, 0x5b, 0x51, 0x22, 0x51, 0x62, 0xce, 0x2f,
0x77, 0x5f, 0x81, 0x37, 0x95, 0x4a, 0xfc, 0x8c, 0x37, 0x00, 0xa4, 0x8b, 0x7a, 0x7e, 0x5d, 0xaf,
0x80, 0x50, 0x6e, 0x46, 0xd5, 0x5f, 0x80, 0x8c, 0xbf, 0xe6, 0xb4, 0x25, 0x7e, 0x89, 0x60, 0x35,
0x1f, 0xd5, 0x34, 0x67, 0xe5, 0x37, 0xa0, 0x64, 0xb9, 0x8f, 0xbc, 0xa8, 0x80, 0xb8, 0x2c, 0x3f,
0x5a, 0xa4, 0xf3, 0x72, 0x41, 0xed, 0x9f, 0x08, 0xea, 0xef, 0x0c, 0x88, 0x3f, 0x3c, 0x84, 0xed,
0x77, 0x88, 0xd3, 0xa6, 0xd6, 0x53, 0x12, 0x6d, 0xbf, 0x43, 0x9c, 0x96, 0xf5, 0x94, 0xa4, 0x2c,
0xa3, 0x94, 0xb6, 0x8c, 0x74, 0x0e, 0x56, 0x1e, 0x53, 0x20, 0xce, 0xa6, 0x0a, 0x44, 0xed, 0x19,
0x02, 0xf5, 0x2e, 0x09, 0xb2, 0x4b, 0x3d, 0x3c, 0xa3, 0xf8, 0x18, 0xc1, 0x69, 0x29, 0xa0, 0x69,
0xec, 0xe1, 0x2b, 0x69, 0x7b, 0x90, 0xa7, 0x1a, 0x7b, 0xa6, 0x14, 0xa6, 0xf0, 0x26, 0x28, 0xcd,
0x81, 0xe3, 0x0c, 0x23, 0x9d, 0x5c, 0x00, 0xc5, 0xe7, 0x8f, 0xfc, 0x24, 0xe6, 0xf9, 0x53, 0x55,
0xd0, 0xc2, 0xf3, 0x56, 0xbb, 0x02, 0x35, 0x21, 0x22, 0x50, 0xab, 0x30, 0xe7, 0x8b, 0x67, 0xc1,
0x1f, 0xbf, 0x6b, 0xcb, 0xb0, 0xa8, 0x93, 0xed, 0xd0, 0x12, 0xfd, 0xb7, 0x2c, 0xf7, 0xb1, 0x98,
0x26, 0xcc, 0x1b, 0x97, 0xd2, 0x74, 0x31, 0xd6, 0x17, 0x61, 0xd6, 0x30, 0xcd, 0xb0, 0xe4, 0x1b,
0xbb, 0x2d, 0xdf, 0xe4, 0x3c, 0x7a, 0xc4, 0x9c, 0xd0, 0x5c, 0x61, 0x62, 0xcd, 0x5d, 0xfe, 0x1a,
0x2c, 0x64, 0x12, 0x3e, 0x3c, 0x07, 0x33, 0x0f, 0x3c, 0x97, 0xd4, 0x4f, 0xe0, 0x3a, 0x28, 0x1b,
0x96, 0x6b, 0xf8, 0xc3, 0xf7, 0x48, 0x37, 0xf0, 0xfc, 0xba, 0x89, 0x17, 0xa0, 0x7a, 0xc7, 0xf6,
0x8c, 0x40, 0x10, 0xc8, 0xfa, 0x5f, 0x56, 0xa0, 0xf6, 0x36, 0x9b, 0xa6, 0x45, 0xfc, 0x1d, 0xab,
0x4b, 0x70, 0x1b, 0xea, 0xd9, 0x1f, 0x5e, 0xf0, 0x6b, 0xd2, 0x0d, 0xc9, 0xf9, 0x2f, 0x46, 0x1d,
0x07, 0x5c, 0x3b, 0x81, 0x3f, 0x84, 0xf9, 0xf4, 0xaf, 0x28, 0x58, 0xee, 0xff, 0xd2, 0xff, 0x55,
0xf6, 0x1b, 0xbc, 0x0d, 0xb5, 0xd4, 0x9f, 0x25, 0xf8, 0x92, 0x74, 0x6c, 0xd9, 0xdf, 0x27, 0xea,
0x05, 0x29, 0x6b, 0xf2, 0xef, 0x0f, 0x8e, 0x3e, 0xdd, 0x60, 0xcf, 0x41, 0x2f, 0xed, 0xc2, 0xef,
0x87, 0xde, 0x80, 0x97, 0xf6, 0xf4, 0xcb, 0xf1, 0xeb, 0xd2, 0xf1, 0xf3, 0xfa, 0xea, 0xfb, 0x4d,
0xb1, 0x0b, 0x78, 0xef, 0x1f, 0x14, 0xf8, 0xaa, 0x7c, 0x07, 0xf2, 0xfe, 0x1f, 0x51, 0xaf, 0x4d,
0xcc, 0x1f, 0x2b, 0xee, 0x87, 0x08, 0x4e, 0xe6, 0x34, 0xb9, 0xf1, 0x75, 0xe9, 0x70, 0xe3, 0x3b,
0xf5, 0xea, 0x8d, 0x83, 0x09, 0xc5, 0x40, 0x5c, 0x58, 0xc8, 0xb4, 0x95, 0xf1, 0x15, 0xe9, 0x50,
0xf2, 0x06, 0xb8, 0xfa, 0xda, 0x64, 0xcc, 0xf1, 0x7c, 0x0f, 0x61, 0x21, 0xd3, 0x4a, 0xce, 0x99,
0x4f, 0xde, 0x70, 0xde, 0x6f, 0x43, 0x3f, 0x80, 0x5a, 0xaa, 0xe7, 0x9b, 0x63, 0xf1, 0xb2, 0xbe,
0xf0, 0x7e, 0x43, 0x3f, 0x04, 0x25, 0xd9, 0x9a, 0xc5, 0x6b, 0x79, 0xbe, 0xb4, 0x67, 0xe0, 0x83,
0xb8, 0xd2, 0xa8, 0xab, 0x33, 0xc6, 0x95, 0xf6, 0x34, 0xab, 0x26, 0x77, 0xa5, 0xc4, 0xf8, 0x63,
0x5d, 0xe9, 0xc0, 0x53, 0x7c, 0x84, 0x60, 0x45, 0xde, 0xd9, 0xc3, 0xeb, 0x79, 0xb6, 0x99, 0xdf,
0xc3, 0x54, 0xaf, 0x1f, 0x48, 0x26, 0xd6, 0xe2, 0x63, 0x98, 0x4f, 0xf7, 0xc6, 0x72, 0xb4, 0x28,
0x6d, 0xf9, 0xa9, 0x57, 0x26, 0xe2, 0x8d, 0x27, 0xfb, 0x36, 0x54, 0x13, 0x7d, 0x0b, 0xfc, 0xea,
0x18, 0x3b, 0x4e, 0x5e, 0x8b, 0xed, 0xa7, 0xc9, 0x1e, 0xd4, 0x52, 0x77, 0xd5, 0x79, 0x36, 0x2c,
0x69, 0x21, 0xa8, 0x97, 0x27, 0x61, 0x8d, 0x17, 0xd0, 0x83, 0x5a, 0xea, 0xe6, 0x30, 0x67, 0x26,
0xd9, 0x45, 0x69, 0xce, 0x4c, 0xd2, 0x8b, 0x48, 0xed, 0x04, 0xfe, 0x5e, 0xe2, 0x92, 0x32, 0x75,
0x11, 0x8c, 0xdf, 0x1c, 0x3b, 0x8e, 0xec, 0x1e, 0x5c, 0x5d, 0x3f, 0x88, 0x48, 0x0c, 0xe1, 0x1d,
0xa8, 0xc4, 0x17, 0x94, 0xf8, 0x62, 0x6e, 0x58, 0x38, 0xc8, 0x4e, 0xb5, 0xa0, 0xcc, 0x2f, 0xcb,
0xb0, 0x96, 0x73, 0xeb, 0x9f, 0xb8, 0x49, 0x54, 0x5f, 0x1e, 0xcb, 0x13, 0xe3, 0xd4, 0xa1, 0xcc,
0x2b, 0xd6, 0x9c, 0x41, 0x53, 0x37, 0x48, 0xea, 0x78, 0x1e, 0x56, 0xf2, 0x6a, 0x27, 0xf0, 0xfb,
0x30, 0x17, 0xdd, 0x03, 0xe0, 0x57, 0x72, 0xdc, 0x3e, 0x75, 0x51, 0xa2, 0xee, 0xc7, 0x15, 0x8d,
0xbc, 0x09, 0x25, 0x56, 0x04, 0x63, 0x79, 0x90, 0x4b, 0x16, 0xc8, 0xfb, 0x69, 0xf3, 0x47, 0x08,
0x1a, 0x79, 0x15, 0x16, 0xce, 0x3d, 0xdf, 0xc6, 0x95, 0x89, 0xea, 0xcd, 0x03, 0x4a, 0xc5, 0x9b,
0xf0, 0x14, 0x16, 0x25, 0x79, 0x3d, 0xbe, 0x96, 0x37, 0x5e, 0x4e, 0x49, 0xa2, 0xbe, 0x31, 0xb9,
0x40, 0x3c, 0xf7, 0x16, 0x94, 0x58, 0x3e, 0x9e, 0xa3, 0xd2, 0x64, 0x7a, 0x9f, 0xb3, 0xfd, 0xa9,
0x74, 0x5e, 0x3b, 0x81, 0x09, 0x28, 0xc9, 0xe4, 0x3c, 0xe7, 0xe8, 0x92, 0xe4, 0xf5, 0xea, 0xa5,
0x09, 0x38, 0xa3, 0x69, 0xd6, 0x07, 0xa0, 0x6c, 0xf9, 0xde, 0x93, 0x61, 0x94, 0x3c, 0xff, 0x7f,
0xa6, 0xdd, 0xb8, 0xf9, 0x9d, 0xeb, 0xdb, 0x56, 0xd0, 0x1b, 0x74, 0x42, 0x8b, 0xba, 0xc6, 0x79,
0x5f, 0xb7, 0x3c, 0xf1, 0x74, 0xcd, 0x72, 0x03, 0xe2, 0xbb, 0x86, 0x7d, 0x8d, 0x8d, 0x25, 0xa8,
0xfd, 0x4e, 0xa7, 0xcc, 0xde, 0xaf, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x14, 0xd5, 0xf4,
0x14, 0x2f, 0x00, 0x00,
// 2283 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4b, 0x6f, 0x1c, 0xc7,
0xf1, 0x57, 0xef, 0x72, 0x97, 0xdc, 0xda, 0x59, 0x72, 0xd5, 0x7c, 0x68, 0x3d, 0x7a, 0x51, 0x63,
0xeb, 0x6f, 0x4a, 0xb2, 0x25, 0x9b, 0xb2, 0xfe, 0x4a, 0x10, 0xe4, 0x45, 0x31, 0xa2, 0x08, 0xd9,
0x02, 0x3d, 0x74, 0x0c, 0x3b, 0x86, 0xb0, 0x18, 0xee, 0xb4, 0xb8, 0x03, 0xcd, 0x63, 0x33, 0x3d,
0x4b, 0x6a, 0x75, 0x0a, 0xe2, 0x20, 0x48, 0x90, 0x44, 0x3e, 0x24, 0x08, 0x90, 0x1c, 0x72, 0x08,
0xe0, 0x43, 0x4e, 0x49, 0x90, 0x00, 0x01, 0x82, 0x1c, 0x7d, 0xc8, 0x2d, 0x41, 0xbe, 0x43, 0x6e,
0xc9, 0x67, 0x48, 0xd0, 0x8f, 0x19, 0xce, 0x0c, 0x7b, 0x96, 0x4b, 0xad, 0x15, 0x92, 0xb7, 0x99,
0x9a, 0xea, 0xea, 0xea, 0x5f, 0x57, 0x55, 0x57, 0x75, 0x0d, 0x68, 0x9e, 0xe3, 0xee, 0xf4, 0xe9,
0xf5, 0x5e, 0x18, 0x44, 0x01, 0x9e, 0x4d, 0xbf, 0x5d, 0x17, 0x2f, 0xba, 0xd6, 0x09, 0x3c, 0x2f,
0xf0, 0x05, 0x51, 0xd7, 0x68, 0xa7, 0x4b, 0x3c, 0x4b, 0xbc, 0x19, 0x9f, 0x21, 0x38, 0x73, 0x27,
0x24, 0x56, 0x44, 0xee, 0x04, 0xae, 0x4b, 0x3a, 0x91, 0x13, 0xf8, 0x26, 0xf9, 0x76, 0x9f, 0xd0,
0x08, 0xbf, 0x01, 0x13, 0x5b, 0x16, 0x25, 0x2d, 0xb4, 0x88, 0x96, 0xea, 0xcb, 0xe7, 0xae, 0x67,
0x64, 0x4b, 0x99, 0xef, 0xd0, 0xed, 0x15, 0x8b, 0x12, 0x93, 0x73, 0xe2, 0x33, 0x30, 0x69, 0x6f,
0xb5, 0x7d, 0xcb, 0x23, 0xad, 0xd2, 0x22, 0x5a, 0xaa, 0x99, 0x55, 0x7b, 0xeb, 0x81, 0xe5, 0x11,
0xfc, 0x2a, 0xcc, 0x74, 0x12, 0xf9, 0x82, 0xa1, 0xcc, 0x19, 0xa6, 0xf7, 0xc8, 0x9c, 0x71, 0x01,
0xaa, 0x42, 0xbf, 0xd6, 0xc4, 0x22, 0x5a, 0xd2, 0x4c, 0xf9, 0x86, 0xcf, 0x03, 0xd0, 0xae, 0x15,
0xda, 0xb4, 0xed, 0xf7, 0xbd, 0x56, 0x65, 0x11, 0x2d, 0x55, 0xcc, 0x9a, 0xa0, 0x3c, 0xe8, 0x7b,
0xc6, 0x8f, 0x10, 0xcc, 0xaf, 0x86, 0x41, 0xef, 0x58, 0x2c, 0xc2, 0xf8, 0x0d, 0x82, 0xb9, 0x7b,
0x16, 0x3d, 0x1e, 0x88, 0x9e, 0x07, 0x88, 0x1c, 0x8f, 0xb4, 0x69, 0x64, 0x79, 0x3d, 0x8e, 0xea,
0x84, 0x59, 0x63, 0x94, 0x4d, 0x46, 0x30, 0x3e, 0x04, 0x6d, 0x25, 0x08, 0x5c, 0x93, 0xd0, 0x5e,
0xe0, 0x53, 0x82, 0x6f, 0x42, 0x95, 0x46, 0x56, 0xd4, 0xa7, 0x52, 0xc9, 0xb3, 0x4a, 0x25, 0x37,
0x39, 0x8b, 0x29, 0x59, 0xf1, 0x1c, 0x54, 0x76, 0x2c, 0xb7, 0x2f, 0x74, 0x9c, 0x32, 0xc5, 0x8b,
0xf1, 0x11, 0x4c, 0x6f, 0x46, 0xa1, 0xe3, 0x6f, 0x7f, 0x8e, 0xc2, 0x6b, 0xb1, 0xf0, 0x7f, 0x20,
0x78, 0x69, 0x95, 0xd0, 0x4e, 0xe8, 0x6c, 0x1d, 0x13, 0xd3, 0x35, 0x40, 0xdb, 0xa3, 0xac, 0xaf,
0x72, 0xa8, 0xcb, 0x66, 0x86, 0x96, 0xdb, 0x8c, 0x4a, 0x7e, 0x33, 0x7e, 0x55, 0x02, 0x5d, 0xb5,
0xa8, 0x71, 0xe0, 0xfb, 0x72, 0xe2, 0x51, 0x25, 0x3e, 0xe8, 0x72, 0x76, 0x90, 0x8c, 0x06, 0x7b,
0xb3, 0x6d, 0x72, 0x42, 0xe2, 0x78, 0xf9, 0x55, 0x95, 0x15, 0xab, 0x5a, 0x86, 0xf9, 0x1d, 0x27,
0x8c, 0xfa, 0x96, 0xdb, 0xee, 0x74, 0x2d, 0xdf, 0x27, 0x2e, 0xc7, 0x89, 0xb6, 0x26, 0x16, 0xcb,
0x4b, 0x35, 0x73, 0x56, 0x7e, 0xbc, 0x23, 0xbe, 0x31, 0xb0, 0x28, 0x7e, 0x0b, 0x16, 0x7a, 0xdd,
0x01, 0x75, 0x3a, 0xfb, 0x06, 0x55, 0xf8, 0xa0, 0xb9, 0xf8, 0x6b, 0x7a, 0x14, 0xf7, 0xf3, 0xb7,
0x03, 0xcb, 0x3e, 0x1e, 0x7e, 0xfe, 0x0c, 0x41, 0xcb, 0x24, 0x2e, 0xb1, 0xe8, 0xf1, 0x30, 0x41,
0xe3, 0x67, 0x08, 0x2e, 0xac, 0x91, 0x28, 0xb5, 0x99, 0x91, 0x15, 0x39, 0x34, 0x72, 0x3a, 0xf4,
0x28, 0xd5, 0xfa, 0x04, 0xc1, 0xc5, 0x42, 0xb5, 0xc6, 0xb1, 0xed, 0xdb, 0x50, 0x61, 0x4f, 0xb4,
0x55, 0x5a, 0x2c, 0x2f, 0xd5, 0x97, 0x2f, 0x29, 0xc7, 0xdc, 0x27, 0x83, 0xf7, 0x59, 0xc8, 0xd8,
0xb0, 0x9c, 0xd0, 0x14, 0xfc, 0xc6, 0x77, 0x11, 0x2c, 0x6c, 0x76, 0x83, 0xdd, 0x3d, 0x95, 0x5e,
0x04, 0x40, 0x59, 0x6f, 0x2f, 0xe7, 0xbd, 0x7d, 0x00, 0x67, 0xf6, 0xe9, 0x30, 0x0e, 0x1a, 0x57,
0xa0, 0x99, 0xdb, 0x0f, 0x01, 0x4c, 0xcd, 0x9c, 0xc9, 0x6e, 0x08, 0x35, 0xfe, 0x80, 0x60, 0x41,
0x1c, 0xfb, 0x1b, 0x56, 0x18, 0x39, 0x47, 0x1d, 0x3a, 0x2f, 0xc3, 0x74, 0x2f, 0xd6, 0x43, 0xf0,
0x4d, 0x70, 0xbe, 0x46, 0x42, 0xe5, 0x76, 0xf4, 0x7b, 0x04, 0x73, 0xec, 0x94, 0x3f, 0x49, 0x3a,
0xff, 0x0e, 0xc1, 0xec, 0x3d, 0x8b, 0x9e, 0x24, 0x95, 0xff, 0x28, 0x83, 0x6c, 0xa2, 0xf3, 0x51,
0x06, 0x0f, 0xc6, 0x98, 0x55, 0x3a, 0x3e, 0x56, 0xa6, 0x33, 0x5a, 0x53, 0xe3, 0x4f, 0x7b, 0xd1,
0xf8, 0x84, 0x69, 0xfe, 0x67, 0x04, 0xe7, 0xd7, 0x48, 0x94, 0x68, 0x7d, 0x2c, 0xa2, 0xf6, 0xa8,
0xd6, 0xf2, 0x4c, 0x9c, 0x39, 0x4a, 0xe5, 0x8f, 0x24, 0xb6, 0xff, 0x16, 0xc1, 0x3c, 0x8b, 0xab,
0xc7, 0xc3, 0x08, 0x46, 0xc8, 0x0a, 0x8d, 0x5f, 0xca, 0xd3, 0x28, 0xad, 0xf1, 0x38, 0xd0, 0x29,
0x0c, 0xaf, 0xa4, 0x32, 0x3c, 0xa6, 0x5c, 0x42, 0x59, 0x5f, 0xa5, 0xad, 0xf2, 0x62, 0x99, 0x29,
0x97, 0xa6, 0x19, 0x3f, 0x46, 0xb0, 0x10, 0xe7, 0xa4, 0x9b, 0x64, 0xdb, 0x23, 0x7e, 0xf4, 0xfc,
0x78, 0xe6, 0xd1, 0x28, 0x29, 0xb2, 0xc9, 0x73, 0x50, 0xa3, 0x62, 0x9e, 0x24, 0xdd, 0xdc, 0x23,
0x18, 0x9f, 0x22, 0x38, 0xb3, 0x4f, 0x9d, 0x71, 0xc0, 0x6a, 0xc1, 0xa4, 0xe3, 0xdb, 0xe4, 0x49,
0xa2, 0x4d, 0xfc, 0xca, 0xbe, 0x6c, 0xf5, 0x1d, 0xd7, 0x4e, 0xd4, 0x88, 0x5f, 0xf1, 0x25, 0xd0,
0x88, 0x6f, 0x6d, 0xb9, 0xa4, 0xcd, 0x79, 0xf9, 0xa6, 0x4e, 0x99, 0x75, 0x41, 0x5b, 0x67, 0x24,
0xe3, 0x27, 0x08, 0x66, 0xd9, 0x9e, 0x4a, 0x1d, 0xe9, 0x8b, 0xc5, 0x6c, 0x11, 0xea, 0xa9, 0x4d,
0x93, 0xea, 0xa6, 0x49, 0xc6, 0x63, 0x98, 0xcb, 0xaa, 0x33, 0x0e, 0x66, 0x17, 0x00, 0x92, 0x1d,
0x11, 0xb6, 0x55, 0x36, 0x53, 0x14, 0xe3, 0xdf, 0x08, 0xb0, 0x48, 0x2f, 0x38, 0x18, 0x47, 0x5c,
0xfe, 0x3e, 0x72, 0x88, 0x6b, 0xa7, 0x23, 0x58, 0x8d, 0x53, 0xf8, 0xe7, 0x55, 0xd0, 0xc8, 0x93,
0x28, 0xb4, 0xda, 0x3d, 0x2b, 0xb4, 0x3c, 0x51, 0x7c, 0x8c, 0x14, 0x6c, 0xea, 0x7c, 0xd8, 0x06,
0x1f, 0x65, 0xfc, 0x95, 0x25, 0x26, 0xd2, 0x28, 0x8f, 0xfb, 0x8a, 0xcf, 0x03, 0x70, 0xa3, 0x15,
0x9f, 0x2b, 0xe2, 0x33, 0xa7, 0xf0, 0x70, 0xfe, 0x29, 0x82, 0x26, 0x5f, 0x82, 0x58, 0x4f, 0x8f,
0x89, 0xcd, 0x8d, 0x41, 0xb9, 0x31, 0x43, 0x5c, 0xe8, 0x8b, 0x50, 0x95, 0xc0, 0x96, 0x47, 0x05,
0x56, 0x0e, 0x38, 0x60, 0x19, 0xc6, 0xaf, 0x11, 0xcc, 0xe7, 0x20, 0x1f, 0xc7, 0xa2, 0xdf, 0x03,
0x2c, 0x56, 0x68, 0xef, 0x2d, 0x3b, 0x3e, 0x7a, 0x72, 0x15, 0xb3, 0x7c, 0xc9, 0x83, 0x64, 0x9e,
0x76, 0x72, 0x14, 0x6a, 0xfc, 0x1d, 0xc1, 0xb9, 0x35, 0x12, 0x71, 0xd6, 0x15, 0x16, 0x3b, 0x36,
0xc2, 0x60, 0x3b, 0x24, 0x94, 0x9e, 0x5c, 0xfb, 0xf8, 0xb9, 0xc8, 0x55, 0x54, 0x4b, 0x1a, 0x07,
0xff, 0x4b, 0xa0, 0xf1, 0x39, 0x88, 0xdd, 0x0e, 0x83, 0x5d, 0x2a, 0xed, 0xa8, 0x2e, 0x69, 0x66,
0xb0, 0xcb, 0x0d, 0x22, 0x0a, 0x22, 0xcb, 0x15, 0x0c, 0xf2, 0x60, 0xe0, 0x14, 0xf6, 0x99, 0xfb,
0x60, 0xac, 0x18, 0x13, 0x4e, 0x4e, 0x2e, 0xc6, 0x1f, 0x23, 0x98, 0xcf, 0x2d, 0x65, 0x1c, 0x6c,
0x6f, 0x89, 0x4c, 0x4a, 0x2c, 0x66, 0x7a, 0xf9, 0xa2, 0x72, 0x4c, 0x6a, 0x32, 0xc1, 0x6d, 0x7c,
0x86, 0xa0, 0xc9, 0xaa, 0xad, 0x13, 0x1e, 0xd0, 0x7e, 0x50, 0x82, 0xc6, 0xba, 0x4f, 0x49, 0x18,
0x1d, 0xff, 0x64, 0x1a, 0x7f, 0x15, 0xea, 0x7c, 0x61, 0xb4, 0x6d, 0x5b, 0x91, 0x25, 0x4f, 0xa3,
0x0b, 0xca, 0x1b, 0xbb, 0xbb, 0x8c, 0x6f, 0xd5, 0x8a, 0x2c, 0x53, 0xa0, 0x43, 0xd9, 0x33, 0x3e,
0x0b, 0xb5, 0xae, 0x45, 0xbb, 0xed, 0xc7, 0x64, 0x40, 0x5b, 0xd5, 0xc5, 0xf2, 0x52, 0xc3, 0x9c,
0x62, 0x84, 0xfb, 0x64, 0x40, 0x99, 0x5d, 0x4d, 0xc7, 0x50, 0x8c, 0x63, 0x50, 0x17, 0xa1, 0x1e,
0x06, 0xbb, 0xeb, 0xab, 0xed, 0x2d, 0xb2, 0xed, 0xf8, 0xd2, 0x57, 0x81, 0x93, 0x56, 0x18, 0x85,
0x69, 0x21, 0x18, 0x88, 0x6f, 0x4b, 0x4f, 0x9d, 0xe2, 0x84, 0x6f, 0xf8, 0xb6, 0xb1, 0x03, 0xcd,
0x0d, 0xd7, 0xea, 0x90, 0x6e, 0xe0, 0xda, 0x24, 0xe4, 0x81, 0x1f, 0x37, 0xa1, 0x1c, 0x59, 0xdb,
0xf2, 0x64, 0x61, 0x8f, 0xf8, 0x0b, 0x30, 0x11, 0x0d, 0x7a, 0xb1, 0xcd, 0xbe, 0xa2, 0x0c, 0xc1,
0x29, 0x31, 0xef, 0x0d, 0x7a, 0xc4, 0xe4, 0x23, 0xf0, 0x02, 0x54, 0xf9, 0x15, 0xb1, 0x38, 0x73,
0x34, 0x53, 0xbe, 0x19, 0x0f, 0x33, 0xf3, 0xae, 0x85, 0x41, 0xbf, 0x87, 0xd7, 0x41, 0xeb, 0xed,
0xd1, 0x18, 0x08, 0xc5, 0x01, 0x3f, 0xaf, 0xb4, 0x99, 0x19, 0x6a, 0xfc, 0xab, 0x04, 0x8d, 0x4d,
0x62, 0x85, 0x9d, 0xee, 0x49, 0xa8, 0x39, 0x19, 0xe2, 0x36, 0x75, 0xa5, 0xbb, 0xb0, 0x47, 0x7c,
0x0d, 0x4e, 0xa7, 0x16, 0xd4, 0xde, 0x66, 0x00, 0xb5, 0xaa, 0xbc, 0x0b, 0xd3, 0xec, 0xe5, 0x81,
0xbb, 0x0d, 0x53, 0x36, 0x75, 0xdb, 0x7c, 0x8b, 0x26, 0xf9, 0x16, 0xa9, 0xd7, 0xb7, 0x4a, 0x5d,
0xbe, 0x35, 0x93, 0xb6, 0x78, 0xc0, 0x77, 0xa1, 0x41, 0x39, 0x4a, 0x71, 0xc6, 0x35, 0x35, 0x6a,
0x62, 0xa0, 0x89, 0x71, 0x32, 0xe5, 0xfa, 0x0f, 0x82, 0x19, 0x93, 0x44, 0xa1, 0x43, 0x76, 0xc8,
0x89, 0x00, 0xfc, 0x2a, 0x94, 0x1d, 0x9b, 0x72, 0xc0, 0xeb, 0xcb, 0x2d, 0xa5, 0x4b, 0xaf, 0xaf,
0x52, 0x93, 0x31, 0xe1, 0x97, 0xa1, 0x11, 0xf4, 0xa3, 0x5e, 0x3f, 0x6a, 0x0b, 0xd7, 0xe6, 0x9e,
0x5c, 0x33, 0x35, 0x41, 0xe4, 0x9e, 0xcf, 0xef, 0xf0, 0x52, 0x08, 0xd0, 0xbe, 0x1b, 0xd1, 0xe7,
0x73, 0x67, 0xa9, 0x59, 0x69, 0x14, 0xcd, 0x72, 0x01, 0xaa, 0x7c, 0xd8, 0x00, 0x65, 0xdc, 0x87,
0x89, 0x7b, 0x4e, 0xc4, 0xed, 0x8f, 0xd5, 0x0e, 0x88, 0xd7, 0x0e, 0xec, 0x11, 0xbf, 0x04, 0x2c,
0x46, 0x08, 0xb9, 0x25, 0xee, 0xb9, 0x93, 0x61, 0xb0, 0xcb, 0xa3, 0x1a, 0xef, 0x0a, 0x06, 0xa1,
0x74, 0xe9, 0x92, 0x29, 0xdf, 0x8c, 0x0f, 0xf6, 0x5c, 0x6e, 0x8c, 0xf5, 0x63, 0x98, 0xe8, 0x3a,
0xf2, 0xa2, 0x41, 0x33, 0xf9, 0xb3, 0xf1, 0x3d, 0x04, 0xda, 0x5d, 0xb7, 0x4f, 0x5f, 0x84, 0x33,
0xab, 0xee, 0x69, 0xcb, 0xea, 0x7b, 0xda, 0xbf, 0x21, 0x98, 0xdf, 0x20, 0x21, 0x75, 0x68, 0x44,
0xfc, 0x48, 0x16, 0x6f, 0xeb, 0xfe, 0xa3, 0x20, 0x5b, 0x25, 0xa3, 0x5c, 0x95, 0xfc, 0xf9, 0xd4,
0x8c, 0x6c, 0x47, 0xfc, 0xbe, 0x27, 0xf2, 0x2d, 0x71, 0x6f, 0x31, 0xe9, 0xf7, 0x3d, 0x9e, 0x8c,
0xdd, 0x8e, 0x73, 0x8a, 0x0a, 0x77, 0x7e, 0xb5, 0xfb, 0x4a, 0x7d, 0x33, 0x59, 0xc5, 0x4f, 0x45,
0x2f, 0x40, 0xb9, 0xa8, 0xe7, 0xc7, 0x7a, 0x01, 0x24, 0xb8, 0x39, 0xa8, 0xff, 0x0f, 0x72, 0xfe,
0x5a, 0xd0, 0xa1, 0xf8, 0x05, 0x82, 0xc5, 0x62, 0xad, 0xc6, 0x39, 0x2b, 0xbf, 0x06, 0x15, 0xc7,
0x7f, 0x14, 0xc4, 0xb5, 0xc4, 0x55, 0xf5, 0xd1, 0xa2, 0x9c, 0x57, 0x0c, 0x34, 0xfe, 0x89, 0xa0,
0xf9, 0x6e, 0x9f, 0x84, 0x83, 0x23, 0xd8, 0x7e, 0x8f, 0x78, 0x6d, 0xea, 0x3c, 0x25, 0xf1, 0xf6,
0x7b, 0xc4, 0xdb, 0x74, 0x9e, 0x92, 0x8c, 0x65, 0x54, 0xb2, 0x96, 0x91, 0x4d, 0xc7, 0xaa, 0x43,
0x6a, 0xc5, 0xc9, 0x4c, 0xad, 0x68, 0x3c, 0x43, 0xa0, 0xaf, 0x91, 0x28, 0xbf, 0xd4, 0xa3, 0x33,
0x8a, 0x4f, 0x10, 0x9c, 0x55, 0x2a, 0x34, 0x8e, 0x3d, 0x7c, 0x29, 0x6b, 0x0f, 0xea, 0x54, 0x63,
0xdf, 0x94, 0xd2, 0x14, 0xde, 0x04, 0x6d, 0xb5, 0xef, 0x79, 0x83, 0x18, 0x93, 0x4b, 0xa0, 0x85,
0xe2, 0x51, 0x9c, 0xc4, 0x22, 0x7f, 0xaa, 0x4b, 0x1a, 0x3b, 0x6f, 0x8d, 0x6b, 0xd0, 0x90, 0x43,
0xa4, 0xd6, 0x3a, 0x4c, 0x85, 0xf2, 0x59, 0xf2, 0x27, 0xef, 0xc6, 0x3c, 0xcc, 0x9a, 0x64, 0x9b,
0x59, 0x62, 0xf8, 0xb6, 0xe3, 0x3f, 0x96, 0xd3, 0xb0, 0xbc, 0x71, 0x2e, 0x4b, 0x97, 0xb2, 0xfe,
0x1f, 0x26, 0x2d, 0xdb, 0x66, 0xd5, 0xdf, 0xd0, 0x6d, 0xf9, 0xba, 0xe0, 0x31, 0x63, 0xe6, 0x14,
0x72, 0xa5, 0x91, 0x91, 0xbb, 0xfa, 0x15, 0x98, 0xc9, 0x25, 0x7c, 0x78, 0x0a, 0x26, 0x1e, 0x04,
0x3e, 0x69, 0x9e, 0xc2, 0x4d, 0xd0, 0x56, 0x1c, 0xdf, 0x0a, 0x07, 0xef, 0x93, 0x4e, 0x14, 0x84,
0x4d, 0x1b, 0xcf, 0x40, 0xfd, 0xae, 0x1b, 0x58, 0x91, 0x24, 0x90, 0xe5, 0xbf, 0x2c, 0x40, 0xe3,
0x1d, 0x3e, 0xcd, 0x26, 0x09, 0x77, 0x9c, 0x0e, 0xc1, 0x6d, 0x68, 0xe6, 0xff, 0x7d, 0xc1, 0xaf,
0x29, 0x37, 0xa4, 0xe0, 0x17, 0x19, 0x7d, 0x98, 0xe2, 0xc6, 0x29, 0xfc, 0x11, 0x4c, 0x67, 0xff,
0x4a, 0xc1, 0x6a, 0xff, 0x57, 0xfe, 0xba, 0x72, 0x90, 0xf0, 0x36, 0x34, 0x32, 0x3f, 0x99, 0xe0,
0x2b, 0x4a, 0xd9, 0xaa, 0x1f, 0x51, 0xf4, 0x4b, 0x4a, 0xd6, 0xf4, 0x8f, 0x20, 0x42, 0xfb, 0x6c,
0xaf, 0xbd, 0x40, 0x7b, 0x65, 0x43, 0xfe, 0x20, 0xed, 0x2d, 0x38, 0xbd, 0xaf, 0x75, 0x8e, 0x5f,
0x57, 0xca, 0x2f, 0x6a, 0xb1, 0x1f, 0x34, 0xc5, 0x2e, 0xe0, 0xfd, 0x3f, 0x53, 0xe0, 0xeb, 0xea,
0x1d, 0x28, 0xfa, 0x95, 0x44, 0xbf, 0x31, 0x32, 0x7f, 0x02, 0xdc, 0xf7, 0x11, 0x9c, 0x29, 0xe8,
0x77, 0xe3, 0x9b, 0x4a, 0x71, 0xc3, 0x9b, 0xf6, 0xfa, 0x5b, 0x87, 0x1b, 0x94, 0x28, 0xe2, 0xc3,
0x4c, 0xae, 0xc3, 0x8c, 0xaf, 0x29, 0x45, 0xa9, 0x7b, 0xe1, 0xfa, 0x6b, 0xa3, 0x31, 0x27, 0xf3,
0x3d, 0x84, 0x99, 0x5c, 0x57, 0xb9, 0x60, 0x3e, 0x75, 0xef, 0xf9, 0xa0, 0x0d, 0xfd, 0x10, 0x1a,
0x99, 0xf6, 0x6f, 0x81, 0xc5, 0xab, 0x5a, 0xc4, 0x07, 0x89, 0x7e, 0x08, 0x5a, 0xba, 0x4b, 0x8b,
0x97, 0x8a, 0x7c, 0x69, 0x9f, 0xe0, 0xc3, 0xb8, 0xd2, 0x5e, 0x83, 0x67, 0x88, 0x2b, 0xed, 0xeb,
0x5b, 0x8d, 0xee, 0x4a, 0x29, 0xf9, 0x43, 0x5d, 0xe9, 0xd0, 0x53, 0x7c, 0x8c, 0x60, 0x41, 0xdd,
0xe4, 0xc3, 0xcb, 0x45, 0xb6, 0x59, 0xdc, 0xce, 0xd4, 0x6f, 0x1e, 0x6a, 0x4c, 0x82, 0xe2, 0x63,
0x98, 0xce, 0xb6, 0xc9, 0x0a, 0x50, 0x54, 0x76, 0xff, 0xf4, 0x6b, 0x23, 0xf1, 0x26, 0x93, 0x7d,
0x13, 0xea, 0xa9, 0x16, 0x06, 0x7e, 0x75, 0x88, 0x1d, 0xa7, 0x6f, 0xc8, 0x0e, 0x42, 0xb2, 0x0b,
0x8d, 0xcc, 0xb5, 0x75, 0x91, 0x0d, 0x2b, 0xba, 0x09, 0xfa, 0xd5, 0x51, 0x58, 0x93, 0x05, 0x74,
0xa1, 0x91, 0xb9, 0x44, 0x2c, 0x98, 0x49, 0x75, 0x67, 0x5a, 0x30, 0x93, 0xf2, 0x4e, 0xd2, 0x38,
0x85, 0xbf, 0x93, 0xba, 0xaf, 0xcc, 0xdc, 0x09, 0xe3, 0x37, 0x87, 0xca, 0x51, 0x5d, 0x89, 0xeb,
0xcb, 0x87, 0x19, 0x92, 0xa8, 0xf0, 0x2e, 0xd4, 0x92, 0xbb, 0x4a, 0x7c, 0xb9, 0x30, 0x2c, 0x1c,
0x66, 0xa7, 0x36, 0xa1, 0x2a, 0x2e, 0xcb, 0xb0, 0x51, 0xd0, 0x00, 0x48, 0x5d, 0x2a, 0xea, 0x2f,
0x0f, 0xe5, 0x49, 0xf4, 0x34, 0xa1, 0x2a, 0x2a, 0xd6, 0x02, 0xa1, 0x99, 0x1b, 0x24, 0x7d, 0x38,
0x0f, 0x2f, 0x79, 0x8d, 0x53, 0xf8, 0x03, 0x98, 0x8a, 0xef, 0x01, 0xf0, 0x2b, 0x05, 0x6e, 0x9f,
0xb9, 0x28, 0xd1, 0x0f, 0xe2, 0x8a, 0x25, 0xaf, 0x43, 0x85, 0x17, 0xc1, 0x58, 0x1d, 0xe4, 0xd2,
0x05, 0xf2, 0x41, 0x68, 0xfe, 0x10, 0x41, 0xab, 0xa8, 0xc2, 0xc2, 0x85, 0xe7, 0xdb, 0xb0, 0x32,
0x51, 0xbf, 0x75, 0xc8, 0x51, 0xc9, 0x26, 0x3c, 0x85, 0x59, 0x45, 0x5e, 0x8f, 0x6f, 0x14, 0xc9,
0x2b, 0x28, 0x49, 0xf4, 0x37, 0x46, 0x1f, 0x90, 0xcc, 0xbd, 0x01, 0x15, 0x9e, 0x8f, 0x17, 0x40,
0x9a, 0x4e, 0xef, 0x0b, 0xb6, 0x3f, 0x93, 0xce, 0x1b, 0xa7, 0x30, 0x01, 0x2d, 0x9d, 0x9c, 0x17,
0x1c, 0x5d, 0x8a, 0xbc, 0x5e, 0xbf, 0x32, 0x02, 0x67, 0x3c, 0xcd, 0x72, 0x1f, 0xb4, 0x8d, 0x30,
0x78, 0x32, 0x88, 0x93, 0xe7, 0xff, 0xcd, 0xb4, 0x2b, 0xb7, 0xbe, 0x75, 0x73, 0xdb, 0x89, 0xba,
0xfd, 0x2d, 0x66, 0x51, 0x37, 0x04, 0xef, 0xeb, 0x4e, 0x20, 0x9f, 0x6e, 0x38, 0x7e, 0x44, 0x42,
0xdf, 0x72, 0x6f, 0x70, 0x59, 0x92, 0xda, 0xdb, 0xda, 0xaa, 0xf2, 0xf7, 0x9b, 0xff, 0x0d, 0x00,
0x00, 0xff, 0xff, 0x39, 0x70, 0x98, 0x72, 0x1f, 0x2f, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -1043,6 +1043,7 @@ func (node *ProxyNode) Insert(ctx context.Context, request *milvuspb.InsertReque
ctx: ctx,
Condition: NewTaskCondition(ctx),
dataService: node.dataService,
req: request,
BaseInsertTask: BaseInsertTask{
BaseMsg: msgstream.BaseMsg{
HashValues: request.HashKeys,
@ -1054,7 +1055,7 @@ func (node *ProxyNode) Insert(ctx context.Context, request *milvuspb.InsertReque
},
CollectionName: request.CollectionName,
PartitionName: request.PartitionName,
RowData: request.RowData,
// RowData: transfer column based request to this
},
},
rowIDAllocator: node.idAllocator,

View File

@ -12,10 +12,13 @@
package proxynode
import (
"bytes"
"context"
"encoding/binary"
"errors"
"fmt"
"math"
"reflect"
"regexp"
"runtime"
"sort"
@ -96,6 +99,7 @@ type BaseInsertTask = msgstream.InsertMsg
type InsertTask struct {
BaseInsertTask
req *milvuspb.InsertRequest
Condition
ctx context.Context
dataService types.DataService
@ -129,11 +133,6 @@ func (it *InsertTask) BeginTs() Timestamp {
}
func (it *InsertTask) SetTs(ts Timestamp) {
rowNum := len(it.RowData)
it.Timestamps = make([]uint64, rowNum)
for index := range it.Timestamps {
it.Timestamps[index] = ts
}
it.BeginTimestamp = ts
it.EndTimestamp = ts
}
@ -147,6 +146,243 @@ func (it *InsertTask) OnEnqueue() error {
return nil
}
func (it *InsertTask) transferColumnBasedRequestToRowBasedData() error {
dTypes := make([]schemapb.DataType, 0, len(it.req.FieldsData))
datas := make([][]interface{}, 0, len(it.req.FieldsData))
rowNum := 0
appendScalarField := func(getDataFunc func() interface{}) error {
fieldDatas := reflect.ValueOf(getDataFunc())
if rowNum != 0 && rowNum != fieldDatas.Len() {
return errors.New("the row num of different column is not equal")
}
rowNum = fieldDatas.Len()
datas = append(datas, make([]interface{}, 0, rowNum))
idx := len(datas) - 1
for i := 0; i < rowNum; i++ {
datas[idx] = append(datas[idx], fieldDatas.Index(i).Interface())
}
return nil
}
appendFloatVectorField := func(fDatas []float32, dim int64) error {
l := len(fDatas)
if int64(l)%dim != 0 {
return errors.New("invalid vectors")
}
r := int64(l) / dim
if rowNum != 0 && rowNum != int(r) {
return errors.New("the row num of different column is not equal")
}
rowNum = int(r)
datas = append(datas, make([]interface{}, 0, rowNum))
idx := len(datas) - 1
vector := make([]float32, 0, dim)
for i := 0; i < l; i++ {
vector = append(vector, fDatas[i])
if int64(i+1)%dim == 0 {
datas[idx] = append(datas[idx], vector)
vector = make([]float32, 0, dim)
}
}
return nil
}
appendBinaryVectorField := func(bDatas []byte, dim int64) error {
l := len(bDatas)
if dim%8 != 0 {
return errors.New("invalid dim")
}
if (8*int64(l))%dim != 0 {
return errors.New("invalid vectors")
}
r := (8 * int64(l)) / dim
if rowNum != 0 && rowNum != int(r) {
return errors.New("the row num of different column is not equal")
}
rowNum = int(r)
datas = append(datas, make([]interface{}, 0, rowNum))
idx := len(datas) - 1
vector := make([]byte, 0, dim)
for i := 0; i < l; i++ {
vector = append(vector, bDatas[i])
if (8*int64(i+1))%dim == 0 {
datas[idx] = append(datas[idx], vector)
vector = make([]byte, 0, dim)
}
}
return nil
}
for _, field := range it.req.FieldsData {
switch field.Field.(type) {
case *schemapb.FieldData_Scalars:
scalarField := field.GetScalars()
switch scalarField.Data.(type) {
case *schemapb.ScalarField_BoolData:
err := appendScalarField(func() interface{} {
return scalarField.GetBoolData().Data
})
if err != nil {
return err
}
case *schemapb.ScalarField_IntData:
err := appendScalarField(func() interface{} {
return scalarField.GetIntData().Data
})
if err != nil {
return err
}
case *schemapb.ScalarField_LongData:
err := appendScalarField(func() interface{} {
return scalarField.GetLongData().Data
})
if err != nil {
return err
}
case *schemapb.ScalarField_FloatData:
err := appendScalarField(func() interface{} {
return scalarField.GetFloatData().Data
})
if err != nil {
return err
}
case *schemapb.ScalarField_DoubleData:
err := appendScalarField(func() interface{} {
return scalarField.GetDoubleData().Data
})
if err != nil {
return err
}
case *schemapb.ScalarField_BytesData:
return errors.New("bytes field is not supported now")
case *schemapb.ScalarField_StringData:
return errors.New("string field is not supported now")
case nil:
continue
default:
continue
}
case *schemapb.FieldData_Vectors:
vectorField := field.GetVectors()
switch vectorField.Data.(type) {
case *schemapb.VectorField_FloatVector:
floatVectorFieldData := vectorField.GetFloatVector().Data
dim := vectorField.GetDim()
err := appendFloatVectorField(floatVectorFieldData, dim)
if err != nil {
return err
}
case *schemapb.VectorField_BinaryVector:
binaryVectorFieldData := vectorField.GetBinaryVector()
dim := vectorField.GetDim()
err := appendBinaryVectorField(binaryVectorFieldData, dim)
if err != nil {
return err
}
case nil:
continue
default:
continue
}
case nil:
continue
default:
continue
}
dTypes = append(dTypes, field.Type)
}
it.RowData = make([]*commonpb.Blob, 0, rowNum)
l := len(dTypes)
// TODO(dragondriver): big endian or little endian?
endian := binary.LittleEndian
for i := 0; i < rowNum; i++ {
blob := &commonpb.Blob{
Value: make([]byte, 0),
}
for j := 0; j < l; j++ {
var buffer bytes.Buffer
switch dTypes[j] {
case schemapb.DataType_Bool:
d := datas[j][i].(bool)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Int8:
d := datas[j][i].(int8)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Int16:
d := datas[j][i].(int16)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Int32:
d := datas[j][i].(int32)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Int64:
d := datas[j][i].(int64)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Float:
d := datas[j][i].(float32)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_Double:
d := datas[j][i].(float64)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_FloatVector:
d := datas[j][i].([]float32)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
case schemapb.DataType_BinaryVector:
d := datas[j][i].([]byte)
err := binary.Write(&buffer, endian, d)
if err != nil {
log.Warn("ConvertData", zap.Error(err))
}
blob.Value = append(blob.Value, buffer.Bytes()...)
default:
log.Warn("unsupported data type")
}
}
it.RowData = append(it.RowData, blob)
}
return nil
}
func (it *InsertTask) PreExecute(ctx context.Context) error {
it.Base.MsgType = commonpb.MsgType_Insert
it.Base.SourceID = Params.ProxyID
@ -160,6 +396,17 @@ func (it *InsertTask) PreExecute(ctx context.Context) error {
return err
}
err := it.transferColumnBasedRequestToRowBasedData()
if err != nil {
return err
}
rowNum := len(it.RowData)
it.Timestamps = make([]uint64, rowNum)
for index := range it.Timestamps {
it.Timestamps[index] = it.BeginTimestamp
}
return nil
}

View File

@ -11,7 +11,7 @@ allure-pytest==2.7.0
pytest-print==0.2.1
pytest-level==0.1.1
pytest-xdist==2.2.1
pymilvus==2.0a1.dev10
pymilvus==2.0a1.dev15
pytest-rerunfailures==9.1.1
git+https://github.com/Projectplace/pytest-tags
ndg-httpsclient