Upgrade minio-go and add region and virtual host config for segcore chunk manager (#25811)

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
This commit is contained in:
zhagnlu 2023-08-02 14:47:07 +08:00 committed by GitHub
parent 98eabcd527
commit caf62033cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 291 additions and 204 deletions

View File

@ -96,6 +96,10 @@ minio:
# Log level for aws sdk log.
# Supported level: off, fatal, error, warn, info, debug, trace
logLevel: error
# Cloud data center region
region: ""
# Cloud whether use virtual host bucket mode
useVirtualHost: false
# Milvus supports three MQ: rocksmq(based on RockDB), Pulsar and Kafka, which should be reserved in config what you use.
# There is a note about enabling priority if we config multiple mq in this file

18
go.mod
View File

@ -25,10 +25,10 @@ require (
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/jarcoal/httpmock v1.0.8
github.com/jinzhu/now v1.1.5 // indirect
github.com/klauspost/compress v1.14.2
github.com/klauspost/compress v1.16.5
github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
github.com/minio/minio-go/v7 v7.0.17
github.com/minio/minio-go/v7 v7.0.56
github.com/opentracing/opentracing-go v1.2.0
github.com/panjf2000/ants/v2 v2.7.2
github.com/pkg/errors v0.9.1
@ -81,7 +81,7 @@ require (
github.com/danieljoos/wincred v1.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect
@ -109,7 +109,6 @@ require (
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/asmfmt v1.3.1 // indirect
github.com/klauspost/cpuid v1.3.1 // indirect
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/linkedin/goavro/v2 v2.11.1 // indirect
@ -120,9 +119,8 @@ require (
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect
github.com/minio/md5-simd v1.1.0 // indirect
github.com/minio/sha256-simd v0.1.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.4.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
@ -135,9 +133,9 @@ require (
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
github.com/rs/xid v1.2.1 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/samber/lo v1.27.0
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/sirupsen/logrus v1.9.2 // indirect
github.com/soheilhy/cmux v0.1.5
github.com/spf13/afero v1.6.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
@ -175,7 +173,7 @@ require (
gonum.org/v1/gonum v0.9.3 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29 // indirect
gopkg.in/ini.v1 v1.62.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
sigs.k8s.io/yaml v1.2.0 // indirect

42
go.sum
View File

@ -206,8 +206,9 @@ github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/
github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v0.0.0-20180829124132-7f401d37b68a/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM=
github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM=
github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM=
@ -397,14 +398,12 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@ -486,7 +485,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
@ -509,13 +507,11 @@ github.com/klauspost/asmfmt v1.3.1/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.10.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.14.2 h1:S0OHlFk/Gbon/yauFJ4FfJJF5V0fc5HbBTJazi28pRw=
github.com/klauspost/compress v1.14.2/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
@ -588,15 +584,14 @@ github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpsp
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.17 h1:5SiS3pqiQDbNhmXMxtqn2HzAInbN5cbHT7ip9F0F07E=
github.com/minio/minio-go/v7 v7.0.17/go.mod h1:SyQ1IFeJuaa+eV5yEDxW7hYE1s5VVq5sgImDe27R+zg=
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.56 h1:pkZplIEHu8vinjkmhsexcXpWth2tjVLphrTZx6fBVZY=
github.com/minio/minio-go/v7 v7.0.56/go.mod h1:NUDy4A4oXPq1l2yK6LTSvCEzAMeIcoz9lcj5dbzSrRE=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
@ -708,8 +703,9 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@ -732,12 +728,11 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y=
github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
@ -919,7 +914,6 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
@ -1137,11 +1131,11 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
@ -1384,9 +1378,9 @@ gopkg.in/httprequest.v1 v1.2.1/go.mod h1:x2Otw96yda5+8+6ZeWwHIJTFkEHWP/qP8pJOzqE
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=

View File

@ -85,8 +85,10 @@ typedef struct CStorageConfig {
const char* storage_type;
const char* iam_endpoint;
const char* log_level;
const char* region;
bool useSSL;
bool useIAM;
bool useVirtualHost;
} CStorageConfig;
#ifdef __cplusplus

View File

@ -266,6 +266,8 @@ NewBuildIndexInfo(CBuildIndexInfo* c_build_index_info, CStorageConfig c_storage_
storage_config.iam_endpoint = std::string(c_storage_config.iam_endpoint);
storage_config.useSSL = c_storage_config.useSSL;
storage_config.useIAM = c_storage_config.useIAM;
storage_config.region = c_storage_config.region;
storage_config.useVirtualHost = c_storage_config.useVirtualHost;
*c_build_index_info = build_index_info.release();
auto status = CStatus();

View File

@ -161,8 +161,8 @@ MinioChunkManager::BuildS3Client(const StorageConfig& storage_config, const Aws:
AssertInfo(!aws_credentials.GetAWSSecretKey().empty(), "if use iam, secret key should not be empty");
AssertInfo(!aws_credentials.GetSessionToken().empty(), "if use iam, token should not be empty");
client_ = std::make_shared<Aws::S3::S3Client>(provider, config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
client_ = std::make_shared<Aws::S3::S3Client>(
provider, config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -177,7 +177,7 @@ MinioChunkManager::BuildAccessKeyClient(const StorageConfig& storage_config,
client_ = std::make_shared<Aws::S3::S3Client>(
Aws::Auth::AWSCredentials(ConvertToAwsString(storage_config.access_key_id),
ConvertToAwsString(storage_config.access_key_value)),
config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, storage_config.useVirtualHost);
}
void
@ -186,7 +186,7 @@ MinioChunkManager::BuildGoogleCloudClient(const StorageConfig& storage_config,
if (storage_config.useIAM) {
// Using S3 client instead of google client because of compatible protocol
client_ = std::make_shared<Aws::S3::S3Client>(config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
false);
storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -203,7 +203,8 @@ MinioChunkManager::BuildAliyunCloudClient(const StorageConfig& storage_config,
AssertInfo(!aliyun_credentials.GetAWSSecretKey().empty(), "if use iam, secret key should not be empty");
AssertInfo(!aliyun_credentials.GetSessionToken().empty(), "if use iam, token should not be empty");
client_ = std::make_shared<Aws::S3::S3Client>(aliyun_provider, config,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, true);
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
storage_config.useVirtualHost);
} else {
BuildAccessKeyClient(storage_config, config);
}
@ -236,6 +237,10 @@ MinioChunkManager::MinioChunkManager(const StorageConfig& storage_config)
config.verifySSL = false;
}
if (!storage_config.region.empty()) {
config.region = ConvertToAwsString(storage_config.region);
}
if (storageType == RemoteStorageType::S3) {
BuildS3Client(storage_config, config);
} else if (storageType == RemoteStorageType::ALIYUN_CLOUD) {
@ -257,8 +262,8 @@ MinioChunkManager::MinioChunkManager(const StorageConfig& storage_config)
}
MinioChunkManager::~MinioChunkManager() {
ShutdownSDKAPI();
client_.reset();
ShutdownSDKAPI();
}
uint64_t

View File

@ -88,8 +88,10 @@ struct StorageConfig {
std::string storage_type = "minio";
std::string iam_endpoint = "";
std::string log_level = "error";
std::string region = "";
bool useSSL = false;
bool useIAM = false;
bool useVirtualHost = false;
bool
operator==(const StorageConfig& other) const {
@ -97,7 +99,9 @@ struct StorageConfig {
access_key_id.compare(other.access_key_id) == 0 &&
access_key_value.compare(other.access_key_value) == 0 &&
remote_root_path.compare(other.remote_root_path) == 0 && storage_type.compare(other.storage_type) == 0 &&
iam_endpoint.compare(other.iam_endpoint) == 0 && useSSL == other.useSSL && useIAM == other.useIAM;
iam_endpoint.compare(other.iam_endpoint) == 0 && useSSL == other.useSSL && useIAM == other.useIAM &&
log_level.compare(other.log_level) && region.compare(other.region) == 0 &&
useVirtualHost == other.useVirtualHost;
}
};

View File

@ -55,6 +55,8 @@ InitRemoteChunkManagerSingleton(CStorageConfig c_storage_config) {
storage_config.log_level = std::string(c_storage_config.log_level);
storage_config.useSSL = c_storage_config.useSSL;
storage_config.useIAM = c_storage_config.useIAM;
storage_config.useVirtualHost = c_storage_config.useVirtualHost;
storage_config.region = c_storage_config.region;
milvus::storage::RemoteChunkManagerFactory::GetInstance().Init(storage_config);
return milvus::SuccessCStatus();

View File

@ -30,11 +30,13 @@ class MinioChunkManagerTest : public testing::Test {
virtual void
SetUp() {
chunk_manager_ = std::make_unique<MinioChunkManager>(get_default_storage_config());
configs_ = get_default_storage_config();
chunk_manager_ = std::make_unique<MinioChunkManager>(configs_);
}
protected:
MinioChunkManagerPtr chunk_manager_;
StorageConfig configs_;
};
StorageConfig
@ -48,8 +50,8 @@ get_google_cloud_storage_config() {
auto iamEndPoint = "";
auto bucketName = "gcp-zilliz-infra-test";
return StorageConfig{endpoint, bucketName, accessKey, accessValue, rootPath,
"minio", iamEndPoint, "error", useSSL, useIam};
return StorageConfig{endpoint, bucketName, accessKey, accessValue, rootPath, "minio",
iamEndPoint, "error", "", useSSL, useIam};
}
class GoogleChunkManagerTest : public testing::Test {
@ -95,7 +97,7 @@ TEST_F(MinioChunkManagerTest, BucketNegtive) {
}
TEST_F(MinioChunkManagerTest, ObjectExist) {
string testBucketName = "test-objexist";
string testBucketName = configs_.bucket_name;
string objPath = "1/3";
chunk_manager_->SetBucketName(testBucketName);
if (!chunk_manager_->BucketExists(testBucketName)) {
@ -108,15 +110,16 @@ TEST_F(MinioChunkManagerTest, ObjectExist) {
}
TEST_F(MinioChunkManagerTest, WritePositive) {
string testBucketName = "test-write";
string testBucketName = configs_.bucket_name;
chunk_manager_->SetBucketName(testBucketName);
EXPECT_EQ(chunk_manager_->GetBucketName(), testBucketName);
if (!chunk_manager_->BucketExists(testBucketName)) {
chunk_manager_->CreateBucket(testBucketName);
}
// if (!chunk_manager_->BucketExists(testBucketName)) {
// chunk_manager_->CreateBucket(testBucketName);
// }
auto has_bucket = chunk_manager_->BucketExists(testBucketName);
uint8_t data[5] = {0x17, 0x32, 0x45, 0x34, 0x23};
string path = "1/3/5";
string path = "1";
chunk_manager_->Write(path, data, sizeof(data));
bool exist = chunk_manager_->Exist(path);
@ -141,7 +144,7 @@ TEST_F(MinioChunkManagerTest, WritePositive) {
}
TEST_F(MinioChunkManagerTest, ReadPositive) {
string testBucketName = "test-read";
string testBucketName = configs_.bucket_name;
chunk_manager_->SetBucketName(testBucketName);
EXPECT_EQ(chunk_manager_->GetBucketName(), testBucketName);

View File

@ -95,9 +95,11 @@ get_default_storage_config() {
auto iamEndPoint = minioConfig["iamEndpoint"].as<std::string>();
auto logLevel = minioConfig["logLevel"].as<std::string>();
auto bucketName = minioConfig["bucketName"].as<std::string>();
auto useVirHost = minioConfig["useVirtualHost"].as<bool>();
auto region = minioConfig["region"].as<std::string>();
return StorageConfig{endpoint, bucketName, accessKey, accessValue, rootPath,
"minio", iamEndPoint, logLevel, useSSL, useIam};
return StorageConfig{endpoint, bucketName, accessKey, accessValue, rootPath, "minio",
iamEndPoint, logLevel, region, useSSL, useIam, useVirHost};
}
void
@ -109,6 +111,7 @@ delete_cstorage_config(CStorageConfig config) {
delete[] config.remote_root_path;
delete[] config.storage_type;
delete[] config.iam_endpoint;
delete[] config.region;
}
class TestConfigWrapper {

View File

@ -4558,7 +4558,7 @@ func Test_newChunkManagerFactory(t *testing.T) {
storageCli, err := server.newChunkManagerFactory()
assert.Nil(t, storageCli)
assert.Error(t, err)
assert.Contains(t, err.Error(), "too many colons in address")
assert.Contains(t, err.Error(), "invalid port")
})
t.Run("local storage init", func(t *testing.T) {
@ -4592,7 +4592,7 @@ func Test_initGarbageCollection(t *testing.T) {
storageCli, err := server.newChunkManagerFactory()
assert.Nil(t, storageCli)
assert.Error(t, err)
assert.Contains(t, err.Error(), "too many colons in address")
assert.Contains(t, err.Error(), "invalid port")
})
}

View File

@ -290,6 +290,8 @@ func (ib *indexBuilder) process(buildID UniqueID) bool {
UseIAM: Params.MinioCfg.UseIAM,
IAMEndpoint: Params.MinioCfg.IAMEndpoint,
StorageType: Params.CommonCfg.StorageType,
Region: Params.MinioCfg.Region,
UseVirtualHost: Params.MinioCfg.UseVirtualHost,
}
}
req := &indexpb.CreateJobRequest{

View File

@ -208,6 +208,8 @@ message StorageConfig {
bool useIAM = 7;
string IAMEndpoint = 8;
string storage_type = 9;
bool use_virtual_host = 10;
string region = 11;
}
message CreateJobRequest {

View File

@ -1397,6 +1397,8 @@ type StorageConfig struct {
UseIAM bool `protobuf:"varint,7,opt,name=useIAM,proto3" json:"useIAM,omitempty"`
IAMEndpoint string `protobuf:"bytes,8,opt,name=IAMEndpoint,proto3" json:"IAMEndpoint,omitempty"`
StorageType string `protobuf:"bytes,9,opt,name=storage_type,json=storageType,proto3" json:"storage_type,omitempty"`
UseVirtualHost bool `protobuf:"varint,10,opt,name=use_virtual_host,json=useVirtualHost,proto3" json:"use_virtual_host,omitempty"`
Region string `protobuf:"bytes,11,opt,name=region,proto3" json:"region,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1490,6 +1492,20 @@ func (m *StorageConfig) GetStorageType() string {
return ""
}
func (m *StorageConfig) GetUseVirtualHost() bool {
if m != nil {
return m.UseVirtualHost
}
return false
}
func (m *StorageConfig) GetRegion() string {
if m != nil {
return m.Region
}
return ""
}
type CreateJobRequest struct {
ClusterID string `protobuf:"bytes,1,opt,name=clusterID,proto3" json:"clusterID,omitempty"`
IndexFilePrefix string `protobuf:"bytes,2,opt,name=index_file_prefix,json=indexFilePrefix,proto3" json:"index_file_prefix,omitempty"`
@ -2158,150 +2174,153 @@ func init() {
func init() { proto.RegisterFile("index_coord.proto", fileDescriptor_f9e019eb3fda53c2) }
var fileDescriptor_f9e019eb3fda53c2 = []byte{
// 2282 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4f, 0x8f, 0x1b, 0x49,
0x15, 0x4f, 0xbb, 0x3d, 0x33, 0xee, 0xd7, 0xf6, 0xfc, 0xa9, 0xcc, 0x82, 0xe3, 0x24, 0x64, 0xd2,
0xd9, 0x24, 0x03, 0x22, 0x93, 0x30, 0xcb, 0xa2, 0x05, 0x01, 0xd2, 0x64, 0x66, 0x93, 0x38, 0xd9,
0x44, 0x43, 0x3b, 0x5a, 0x89, 0x15, 0xc2, 0xb4, 0xdd, 0xe5, 0x99, 0xda, 0x69, 0x77, 0x39, 0x5d,
0xd5, 0x49, 0x26, 0x48, 0x08, 0x0e, 0x7b, 0x00, 0x21, 0x21, 0x10, 0x12, 0x5f, 0x80, 0xd3, 0xf2,
0x0d, 0xb8, 0x70, 0xe1, 0xc8, 0x05, 0xee, 0x5c, 0xf8, 0x12, 0x5c, 0x51, 0xfd, 0xe9, 0x76, 0x77,
0xbb, 0x3d, 0x76, 0x66, 0x06, 0x21, 0xb1, 0x37, 0xd7, 0xab, 0x57, 0x7f, 0xfa, 0xbd, 0xdf, 0x7b,
0xbf, 0xf7, 0xca, 0xb0, 0x46, 0x42, 0x1f, 0xbf, 0xee, 0xf6, 0x29, 0x8d, 0xfc, 0xad, 0x51, 0x44,
0x39, 0x45, 0x68, 0x48, 0x82, 0x97, 0x31, 0x53, 0xa3, 0x2d, 0x39, 0xdf, 0xaa, 0xf7, 0xe9, 0x70,
0x48, 0x43, 0x25, 0x6b, 0xd5, 0x59, 0xff, 0x10, 0x0f, 0x3d, 0x3d, 0x5a, 0x26, 0x21, 0xc7, 0x51,
0xe8, 0x05, 0xc9, 0x6c, 0x76, 0xbd, 0xf3, 0xcf, 0x2a, 0x58, 0x6d, 0xb1, 0x47, 0x3b, 0x1c, 0x50,
0xe4, 0x40, 0xbd, 0x4f, 0x83, 0x00, 0xf7, 0x39, 0xa1, 0x61, 0x7b, 0xaf, 0x69, 0x6c, 0x18, 0x9b,
0xa6, 0x9b, 0x93, 0xa1, 0x26, 0x2c, 0x0d, 0x08, 0x0e, 0xfc, 0xf6, 0x5e, 0xb3, 0x22, 0xa7, 0x93,
0x21, 0xba, 0x0a, 0xa0, 0xae, 0x1b, 0x7a, 0x43, 0xdc, 0x34, 0x37, 0x8c, 0x4d, 0xcb, 0xb5, 0xa4,
0xe4, 0x99, 0x37, 0xc4, 0x62, 0xa1, 0x1c, 0xb4, 0xf7, 0x9a, 0x55, 0xb5, 0x50, 0x0f, 0xd1, 0x7d,
0xb0, 0xf9, 0xf1, 0x08, 0x77, 0x47, 0x5e, 0xe4, 0x0d, 0x59, 0x73, 0x61, 0xc3, 0xdc, 0xb4, 0xb7,
0xaf, 0x6f, 0xe5, 0x3e, 0x54, 0x7f, 0xe1, 0x13, 0x7c, 0xfc, 0xb1, 0x17, 0xc4, 0x78, 0xdf, 0x23,
0x91, 0x0b, 0x62, 0xd5, 0xbe, 0x5c, 0x84, 0xf6, 0xa0, 0xae, 0x0e, 0xd7, 0x9b, 0x2c, 0xce, 0xbb,
0x89, 0x2d, 0x97, 0xe9, 0x5d, 0xae, 0xeb, 0x5d, 0xb0, 0xdf, 0x8d, 0xe8, 0x2b, 0xd6, 0x5c, 0x92,
0x17, 0xb5, 0xb5, 0xcc, 0xa5, 0xaf, 0x98, 0xf8, 0x4a, 0x4e, 0xb9, 0x17, 0x28, 0x85, 0x9a, 0x54,
0xb0, 0xa4, 0x44, 0x4e, 0xbf, 0x0f, 0x0b, 0x8c, 0x7b, 0x1c, 0x37, 0xad, 0x0d, 0x63, 0x73, 0x79,
0xfb, 0x5a, 0xe9, 0x05, 0xa4, 0xc5, 0x3b, 0x42, 0xcd, 0x55, 0xda, 0xe8, 0x7d, 0xf8, 0xb2, 0xba,
0xbe, 0x1c, 0x76, 0x07, 0x1e, 0x09, 0xba, 0x11, 0xf6, 0x18, 0x0d, 0x9b, 0x20, 0x0d, 0xb9, 0x4e,
0xd2, 0x35, 0x0f, 0x3c, 0x12, 0xb8, 0x72, 0x0e, 0x39, 0xd0, 0x20, 0xac, 0xeb, 0xc5, 0x9c, 0x76,
0xe5, 0x7c, 0xd3, 0xde, 0x30, 0x36, 0x6b, 0xae, 0x4d, 0xd8, 0x4e, 0xcc, 0xa9, 0x3c, 0x06, 0x3d,
0x85, 0xb5, 0x98, 0xe1, 0xa8, 0x9b, 0x33, 0x4f, 0x7d, 0x5e, 0xf3, 0xac, 0x88, 0xb5, 0xed, 0x8c,
0x89, 0xbe, 0x0e, 0x68, 0x84, 0x43, 0x9f, 0x84, 0x07, 0x7a, 0x47, 0x69, 0x87, 0x86, 0xb4, 0xc3,
0xaa, 0x9e, 0x91, 0xfa, 0xc2, 0x1c, 0xce, 0x67, 0x06, 0xc0, 0x03, 0x89, 0x0f, 0x79, 0x97, 0xef,
0x26, 0x10, 0x21, 0xe1, 0x80, 0x4a, 0x78, 0xd9, 0xdb, 0x57, 0xb7, 0x26, 0x11, 0xbd, 0x95, 0x62,
0x52, 0x23, 0x48, 0xc2, 0xb3, 0x09, 0x4b, 0x3e, 0x0e, 0x30, 0xc7, 0xbe, 0x84, 0x5e, 0xcd, 0x4d,
0x86, 0xe8, 0x1a, 0xd8, 0xfd, 0x08, 0x0b, 0xcb, 0x71, 0xa2, 0xb1, 0x57, 0x75, 0x41, 0x89, 0x9e,
0x93, 0x21, 0x76, 0x3e, 0xab, 0x42, 0xbd, 0x83, 0x0f, 0x86, 0x38, 0xe4, 0xea, 0x26, 0xf3, 0x40,
0x7d, 0x03, 0xec, 0x91, 0x17, 0x71, 0xa2, 0x55, 0x14, 0xdc, 0xb3, 0x22, 0x74, 0x05, 0x2c, 0xa6,
0x77, 0xdd, 0x93, 0xa7, 0x9a, 0xee, 0x58, 0x80, 0x2e, 0x41, 0x2d, 0x8c, 0x87, 0xca, 0x40, 0x1a,
0xf2, 0x61, 0x3c, 0x94, 0x30, 0xc9, 0x04, 0xc3, 0x42, 0x3e, 0x18, 0x9a, 0xb0, 0xd4, 0x8b, 0x89,
0x8c, 0xaf, 0x45, 0x35, 0xa3, 0x87, 0xe8, 0x4b, 0xb0, 0x18, 0x52, 0x1f, 0xb7, 0xf7, 0x34, 0x2c,
0xf5, 0x08, 0xdd, 0x80, 0x86, 0x32, 0xea, 0x4b, 0x1c, 0x31, 0x42, 0x43, 0x0d, 0x4a, 0x85, 0xe4,
0x8f, 0x95, 0xec, 0xb4, 0xb8, 0xbc, 0x06, 0xf6, 0x24, 0x16, 0x61, 0x30, 0x46, 0xe0, 0x2d, 0x58,
0x51, 0x87, 0x0f, 0x48, 0x80, 0xbb, 0x47, 0xf8, 0x98, 0x35, 0xed, 0x0d, 0x73, 0xd3, 0x72, 0xd5,
0x9d, 0x1e, 0x90, 0x00, 0x3f, 0xc1, 0xc7, 0x2c, 0xeb, 0xbb, 0xfa, 0x89, 0xbe, 0x6b, 0x14, 0x7d,
0x87, 0x6e, 0xc2, 0x32, 0xc3, 0x11, 0xf1, 0x02, 0xf2, 0x06, 0x77, 0x19, 0x79, 0x83, 0x9b, 0xcb,
0x52, 0xa7, 0x91, 0x4a, 0x3b, 0xe4, 0x0d, 0x16, 0x66, 0x78, 0x15, 0x11, 0x8e, 0xbb, 0x87, 0x5e,
0xe8, 0xd3, 0xc1, 0xa0, 0xb9, 0x22, 0xcf, 0xa9, 0x4b, 0xe1, 0x23, 0x25, 0x73, 0xfe, 0x60, 0xc0,
0x45, 0x17, 0x1f, 0x10, 0xc6, 0x71, 0xf4, 0x8c, 0xfa, 0xd8, 0xc5, 0x2f, 0x62, 0xcc, 0x38, 0xba,
0x07, 0xd5, 0x9e, 0xc7, 0xb0, 0x86, 0xe4, 0x95, 0x52, 0xeb, 0x3c, 0x65, 0x07, 0xf7, 0x3d, 0x86,
0x5d, 0xa9, 0x89, 0xbe, 0x05, 0x4b, 0x9e, 0xef, 0x47, 0x98, 0x31, 0x09, 0x8c, 0x69, 0x8b, 0x76,
0x94, 0x8e, 0x9b, 0x28, 0x67, 0xbc, 0x68, 0x66, 0xbd, 0xe8, 0xfc, 0xc6, 0x80, 0xf5, 0xfc, 0xcd,
0xd8, 0x88, 0x86, 0x0c, 0xa3, 0xf7, 0x60, 0x51, 0xf8, 0x22, 0x66, 0xfa, 0x72, 0x97, 0x4b, 0xcf,
0xe9, 0x48, 0x15, 0x57, 0xab, 0x8a, 0x94, 0x4a, 0x42, 0xc2, 0x93, 0x70, 0x57, 0x37, 0xbc, 0x5e,
0x8c, 0x34, 0x4d, 0x0c, 0xed, 0x90, 0x70, 0x15, 0xdd, 0x2e, 0x90, 0xf4, 0xb7, 0xf3, 0x43, 0x58,
0x7f, 0x88, 0x79, 0x06, 0x13, 0xda, 0x56, 0xf3, 0x84, 0x4e, 0x9e, 0x0b, 0x2a, 0x05, 0x2e, 0x70,
0xfe, 0x68, 0xc0, 0x3b, 0x85, 0xbd, 0xcf, 0xf2, 0xb5, 0x29, 0xb8, 0x2b, 0x67, 0x01, 0xb7, 0x59,
0x04, 0xb7, 0xf3, 0x73, 0x03, 0x2e, 0x3f, 0xc4, 0x3c, 0x9b, 0x38, 0xce, 0xd9, 0x12, 0xe8, 0x2b,
0x00, 0x69, 0xc2, 0x60, 0x4d, 0x73, 0xc3, 0xdc, 0x34, 0xdd, 0x8c, 0xc4, 0xf9, 0xa5, 0x01, 0x6b,
0x13, 0xe7, 0xe7, 0xf3, 0x8e, 0x51, 0xcc, 0x3b, 0xff, 0x2d, 0x73, 0xfc, 0xce, 0x80, 0x2b, 0xe5,
0xe6, 0x38, 0x8b, 0xf3, 0xbe, 0xa7, 0x16, 0x61, 0x81, 0x52, 0x41, 0x4a, 0x37, 0xcb, 0xf8, 0x60,
0xf2, 0x4c, 0xbd, 0xc8, 0xf9, 0xbb, 0x09, 0x68, 0x57, 0x26, 0x0b, 0xc5, 0x3a, 0x6f, 0xe1, 0x9a,
0x53, 0x97, 0x32, 0x85, 0x82, 0xa5, 0x7a, 0x1e, 0x05, 0xcb, 0xc2, 0xa9, 0x0a, 0x96, 0x2b, 0x60,
0x89, 0xac, 0xc9, 0xb8, 0x37, 0x1c, 0x49, 0xbe, 0xa8, 0xba, 0x63, 0xc1, 0x64, 0x79, 0xb0, 0x34,
0x67, 0x79, 0x50, 0x3b, 0x75, 0x79, 0xb0, 0x0b, 0x0d, 0x69, 0xc4, 0x3d, 0x8f, 0x7b, 0xcf, 0x8f,
0x47, 0x09, 0xdf, 0x14, 0x48, 0x5e, 0x57, 0xa8, 0x89, 0x92, 0x9b, 0x5f, 0xe3, 0xbc, 0x86, 0x8b,
0x49, 0x76, 0x90, 0x35, 0xc0, 0x5b, 0xf8, 0x34, 0x1f, 0x4f, 0x95, 0x62, 0x3c, 0xcd, 0xf0, 0xac,
0xf3, 0xef, 0x0a, 0xac, 0xb5, 0x13, 0xe2, 0xda, 0xf7, 0xf8, 0xa1, 0x2c, 0x3c, 0x4e, 0x0e, 0xb7,
0xe9, 0x30, 0xca, 0xb0, 0xbc, 0x39, 0x95, 0xe5, 0xab, 0x79, 0x96, 0xcf, 0x5f, 0x70, 0xa1, 0x08,
0xbd, 0xf3, 0xa9, 0x73, 0x37, 0x61, 0x35, 0xc3, 0xda, 0x23, 0x8f, 0x1f, 0x8a, 0x5a, 0x57, 0xd0,
0xf6, 0x32, 0xc9, 0x7e, 0x3d, 0x43, 0xb7, 0x61, 0x25, 0xa5, 0x59, 0x5f, 0xb1, 0x6f, 0x4d, 0xc2,
0x6c, 0xcc, 0xc9, 0x7e, 0x42, 0xbf, 0xf9, 0x2a, 0xc4, 0x2a, 0xa9, 0x42, 0xb2, 0x15, 0x11, 0xe4,
0x2a, 0x22, 0xe7, 0xcf, 0x06, 0xd8, 0x69, 0x94, 0xcf, 0xd9, 0x8b, 0xe4, 0xfc, 0x52, 0x29, 0xfa,
0xe5, 0x3a, 0xd4, 0x71, 0xe8, 0xf5, 0x02, 0xac, 0xc1, 0x6f, 0x2a, 0xf0, 0x2b, 0x99, 0x02, 0xff,
0x03, 0xb0, 0xc7, 0xf5, 0x68, 0x12, 0xc8, 0x37, 0xa7, 0x16, 0xa4, 0x59, 0x50, 0xb8, 0x90, 0x16,
0xa6, 0xcc, 0xf9, 0x55, 0x65, 0xcc, 0x95, 0x0a, 0xb1, 0x67, 0xc9, 0x88, 0x3f, 0x82, 0xba, 0xfe,
0x0a, 0x55, 0x27, 0xab, 0xbc, 0xf8, 0xed, 0xb2, 0x6b, 0x95, 0x1d, 0xba, 0x95, 0x31, 0xe3, 0x87,
0x21, 0x8f, 0x8e, 0x5d, 0x9b, 0x8d, 0x25, 0xad, 0x2e, 0xac, 0x16, 0x15, 0xd0, 0x2a, 0x98, 0x47,
0xf8, 0x58, 0xdb, 0x58, 0xfc, 0x14, 0x1c, 0xf2, 0x52, 0x60, 0x47, 0x97, 0x0e, 0xd7, 0x4e, 0x4c,
0xca, 0x03, 0xea, 0x2a, 0xed, 0xef, 0x54, 0x3e, 0x30, 0x9c, 0xdf, 0x1b, 0xb0, 0xba, 0x17, 0xd1,
0xd1, 0x5b, 0xe7, 0x63, 0x07, 0xea, 0x99, 0xe2, 0x3a, 0x89, 0xde, 0x9c, 0x6c, 0x56, 0x66, 0xbe,
0x04, 0x35, 0x3f, 0xa2, 0xa3, 0xae, 0x17, 0x04, 0x32, 0xb0, 0x44, 0x9d, 0x19, 0xd1, 0xd1, 0x4e,
0x10, 0x38, 0xaf, 0x60, 0x7d, 0x0f, 0xb3, 0x7e, 0x44, 0x7a, 0x6f, 0xcf, 0x14, 0x33, 0x48, 0x3c,
0x97, 0x85, 0xcd, 0x42, 0x16, 0x76, 0x7e, 0x6d, 0xc0, 0x3b, 0x85, 0x93, 0xcf, 0x82, 0x8e, 0xef,
0xe7, 0x31, 0xab, 0xc0, 0x31, 0xa3, 0x89, 0xca, 0x62, 0xd5, 0x93, 0x24, 0x2e, 0xe7, 0xee, 0x8b,
0x9c, 0xb3, 0x1f, 0xd1, 0x03, 0x59, 0xa2, 0x9e, 0x5f, 0x79, 0xf7, 0x57, 0x03, 0xae, 0x4e, 0x39,
0xe3, 0x2c, 0x5f, 0x5e, 0xec, 0xce, 0x2b, 0xb3, 0xba, 0x73, 0xb3, 0xd8, 0x9d, 0x97, 0x37, 0xaf,
0xd5, 0x29, 0xcd, 0xeb, 0x9f, 0x2a, 0xd0, 0xe8, 0x70, 0x1a, 0x79, 0x07, 0x78, 0x97, 0x86, 0x03,
0x72, 0x20, 0xd2, 0x76, 0x52, 0xf4, 0x1b, 0xf2, 0xa3, 0xd3, 0xb2, 0xfe, 0x3a, 0xd4, 0xbd, 0x7e,
0x1f, 0x33, 0x26, 0x7a, 0x20, 0x9d, 0x8d, 0x2c, 0xd7, 0x56, 0xb2, 0x27, 0x42, 0x84, 0xbe, 0x06,
0x6b, 0x0c, 0xf7, 0x23, 0xcc, 0xbb, 0x63, 0x4d, 0x8d, 0xe0, 0x15, 0x35, 0xb1, 0x93, 0x68, 0x8b,
0x2e, 0x21, 0x66, 0xb8, 0xd3, 0xf9, 0x48, 0xa3, 0x58, 0x8f, 0x44, 0x8d, 0xd6, 0x8b, 0xfb, 0x47,
0x98, 0x67, 0xe9, 0x01, 0x94, 0x48, 0x42, 0xf1, 0x32, 0x58, 0x11, 0xa5, 0x5c, 0xe6, 0x74, 0x59,
0x10, 0x58, 0x6e, 0x4d, 0x08, 0x44, 0xda, 0xd2, 0xbb, 0xb6, 0x77, 0x9e, 0xea, 0x42, 0x40, 0x8f,
0x44, 0xa3, 0xdb, 0xde, 0x79, 0xfa, 0x61, 0xe8, 0x8f, 0x28, 0x09, 0xb9, 0x4c, 0xf0, 0x96, 0x9b,
0x15, 0x89, 0xcf, 0x63, 0xca, 0x12, 0x5d, 0x9e, 0xb0, 0xba, 0xe5, 0xda, 0x5a, 0x26, 0x49, 0xfb,
0x5f, 0x26, 0xac, 0xaa, 0x42, 0xec, 0x31, 0xed, 0x25, 0x60, 0xba, 0x02, 0x56, 0x3f, 0x88, 0x45,
0x4f, 0xa3, 0x91, 0x64, 0xb9, 0x63, 0x81, 0xb0, 0x48, 0x96, 0x86, 0x22, 0x3c, 0x20, 0xaf, 0xb5,
0xe5, 0x56, 0xc6, 0x3c, 0x24, 0xc5, 0x59, 0xc6, 0x34, 0x27, 0x18, 0xd3, 0xf7, 0xb8, 0xa7, 0x69,
0xac, 0x2a, 0x69, 0xcc, 0x12, 0x12, 0xc5, 0x60, 0x13, 0xc4, 0xb4, 0x50, 0x42, 0x4c, 0x19, 0xa6,
0x5e, 0xcc, 0x33, 0x75, 0x1e, 0xea, 0x4b, 0xc5, 0xd0, 0x7f, 0x04, 0xcb, 0x89, 0x61, 0xfa, 0x12,
0x23, 0xd2, 0x7a, 0x25, 0xbd, 0x96, 0x4c, 0x98, 0x59, 0x30, 0xb9, 0x0d, 0x96, 0xc3, 0x56, 0x91,
0xd9, 0xad, 0x53, 0x31, 0x7b, 0xa1, 0x34, 0x85, 0xd3, 0x94, 0xa6, 0x59, 0x96, 0xb6, 0xf3, 0x2c,
0xfd, 0x11, 0xac, 0xfe, 0x20, 0xc6, 0xd1, 0xf1, 0x63, 0xda, 0x63, 0xf3, 0xf9, 0xb8, 0x05, 0x35,
0xed, 0xa8, 0x24, 0xa1, 0xa7, 0x63, 0xe7, 0x1f, 0x06, 0x34, 0x64, 0xb8, 0x3d, 0xf7, 0xd8, 0x51,
0xf2, 0xc4, 0x93, 0x78, 0xd9, 0xc8, 0x7b, 0xf9, 0x94, 0x4d, 0x4d, 0xc9, 0xfb, 0x84, 0x59, 0xf6,
0x3e, 0x51, 0x52, 0xe7, 0x54, 0x4b, 0xeb, 0x9c, 0x42, 0x97, 0xb4, 0x30, 0xd1, 0x25, 0x7d, 0x6e,
0xc0, 0x5a, 0xc6, 0x46, 0x67, 0x49, 0x78, 0x39, 0xcb, 0x56, 0x8a, 0x96, 0xbd, 0x9f, 0x27, 0x02,
0xb3, 0xcc, 0xd5, 0x19, 0x22, 0x48, 0x6c, 0x9c, 0x23, 0x83, 0x27, 0xb0, 0x22, 0xa8, 0xfa, 0x7c,
0xdc, 0xf9, 0x37, 0x03, 0x96, 0x1e, 0xd3, 0x9e, 0x74, 0x64, 0x16, 0x43, 0x46, 0xfe, 0xed, 0x6b,
0x15, 0x4c, 0x9f, 0x0c, 0x75, 0xf6, 0x16, 0x3f, 0x45, 0x8c, 0x31, 0xee, 0x45, 0x7c, 0xfc, 0x7a,
0x27, 0x0a, 0x39, 0x21, 0x91, 0x0f, 0x40, 0x97, 0xa0, 0x86, 0x43, 0x5f, 0x4d, 0xea, 0x6a, 0x19,
0x87, 0xbe, 0x9c, 0x3a, 0x9f, 0x2e, 0x6a, 0x1d, 0x16, 0x46, 0x74, 0xfc, 0xe2, 0xa6, 0x06, 0xce,
0x3a, 0xa0, 0x87, 0x98, 0x3f, 0xa6, 0x3d, 0xe1, 0x95, 0xc4, 0x3c, 0xce, 0x5f, 0x2a, 0xb2, 0x39,
0x19, 0x8b, 0xcf, 0xe2, 0x60, 0x07, 0x1a, 0x8a, 0xae, 0x3e, 0xa5, 0xbd, 0x6e, 0x18, 0x27, 0x46,
0xb1, 0xa5, 0xf0, 0x31, 0xed, 0x3d, 0x8b, 0x87, 0xe8, 0x0e, 0x5c, 0x24, 0x61, 0x77, 0xa4, 0x19,
0x34, 0xd5, 0x54, 0x56, 0x5a, 0x25, 0x61, 0xc2, 0xad, 0x5a, 0xfd, 0x16, 0xac, 0xe0, 0xf0, 0x45,
0x8c, 0x63, 0x9c, 0xaa, 0x2a, 0x9b, 0x35, 0xb4, 0x58, 0xeb, 0x09, 0xa6, 0xf4, 0xd8, 0x51, 0x97,
0x05, 0x94, 0x33, 0x9d, 0x13, 0x2d, 0x21, 0xe9, 0x08, 0x01, 0xfa, 0x00, 0x2c, 0xb1, 0x5c, 0x41,
0x4b, 0x35, 0x19, 0x97, 0xcb, 0xa0, 0xa5, 0xfd, 0xed, 0xd6, 0x3e, 0x55, 0x3f, 0x98, 0x08, 0x10,
0x5d, 0x76, 0xfb, 0x84, 0x1d, 0x69, 0xa6, 0x01, 0x25, 0xda, 0x23, 0xec, 0xc8, 0xf9, 0x31, 0x5c,
0xca, 0xbe, 0xfd, 0x10, 0xc6, 0x49, 0xff, 0x3c, 0xab, 0x8f, 0xdf, 0x1a, 0xd0, 0x2a, 0x3b, 0xe0,
0x7f, 0x58, 0x74, 0x6d, 0xff, 0xc2, 0x06, 0x90, 0x33, 0xbb, 0x94, 0x46, 0x3e, 0x0a, 0x24, 0xb4,
0x76, 0xe9, 0x70, 0x44, 0x43, 0x1c, 0x72, 0x99, 0xb1, 0x18, 0xda, 0xca, 0xef, 0xa7, 0x07, 0x93,
0x8a, 0xda, 0x56, 0xad, 0x77, 0x4b, 0xf5, 0x0b, 0xca, 0xce, 0x05, 0xf4, 0x42, 0x36, 0x27, 0x63,
0x53, 0xec, 0x1e, 0x7a, 0x61, 0x88, 0x03, 0xb4, 0x3d, 0xe5, 0x3d, 0xb0, 0x4c, 0x39, 0x39, 0xf3,
0x46, 0xe9, 0x99, 0x1d, 0x1e, 0x91, 0xf0, 0x20, 0x31, 0xb1, 0x73, 0x01, 0x3d, 0x07, 0x3b, 0xf3,
0x28, 0x83, 0x6e, 0x95, 0x59, 0x6a, 0xf2, 0xd5, 0xa6, 0x75, 0x92, 0x2f, 0x9c, 0x0b, 0x68, 0x00,
0x8d, 0xdc, 0xab, 0x21, 0xda, 0x3c, 0xa9, 0x27, 0xca, 0x3e, 0xd5, 0xb5, 0xbe, 0x3a, 0x87, 0x66,
0x7a, 0xfb, 0x9f, 0x2a, 0x83, 0x4d, 0x3c, 0xbb, 0xdd, 0x9d, 0xb2, 0xc9, 0xb4, 0x07, 0xc2, 0xd6,
0xbd, 0xf9, 0x17, 0xa4, 0x87, 0xfb, 0xe3, 0x8f, 0x54, 0x01, 0x75, 0x7b, 0x76, 0xe3, 0xa7, 0x4e,
0xdb, 0x9c, 0xb7, 0x43, 0x74, 0x2e, 0xa0, 0x7d, 0xb0, 0xd2, 0x1e, 0x0d, 0xbd, 0x5b, 0xb6, 0xb0,
0xd8, 0xc2, 0xcd, 0xe1, 0x9c, 0x5c, 0x97, 0x53, 0xee, 0x9c, 0xb2, 0x16, 0xac, 0xdc, 0x39, 0xa5,
0x2d, 0x93, 0x73, 0x01, 0xc5, 0x32, 0x76, 0x0a, 0xd1, 0x8d, 0xee, 0xcc, 0xf2, 0x6f, 0x2e, 0xcd,
0xb4, 0xb6, 0xe6, 0x55, 0x4f, 0x8f, 0xfd, 0xd9, 0xf8, 0xc5, 0x3a, 0xd7, 0xd2, 0xa0, 0x7b, 0x27,
0x6d, 0x55, 0xd6, 0x61, 0xb5, 0xbe, 0xf1, 0x16, 0x2b, 0x32, 0x98, 0x44, 0x9d, 0x43, 0xfa, 0x4a,
0x15, 0x8b, 0x71, 0xe4, 0x89, 0x5c, 0x58, 0x72, 0xb8, 0x0e, 0xe1, 0x49, 0xd5, 0xa9, 0x87, 0x9f,
0xb0, 0x22, 0x3d, 0xbc, 0x0b, 0xf0, 0x10, 0xf3, 0xa7, 0x98, 0x47, 0xc2, 0xd6, 0xb7, 0xa6, 0xe5,
0x29, 0xad, 0x90, 0x1c, 0x75, 0x7b, 0xa6, 0x5e, 0x7a, 0x40, 0x0f, 0xec, 0xdd, 0x43, 0xdc, 0x3f,
0x7a, 0x84, 0xbd, 0x80, 0x1f, 0xa2, 0xf2, 0x95, 0x19, 0x8d, 0x29, 0x90, 0x2f, 0x53, 0x4c, 0xce,
0xd8, 0xfe, 0x7c, 0x51, 0xff, 0xd7, 0xfd, 0x8c, 0xfa, 0xf8, 0xff, 0x3f, 0x05, 0xef, 0x83, 0x95,
0xb6, 0x63, 0xe5, 0x11, 0x5e, 0xec, 0xd6, 0x66, 0x45, 0xf8, 0x27, 0x60, 0xa5, 0x85, 0x6d, 0xf9,
0x8e, 0xc5, 0xde, 0xa0, 0x75, 0x73, 0x86, 0x56, 0x7a, 0xdb, 0x67, 0x50, 0x4b, 0x0a, 0x51, 0x74,
0x63, 0x5a, 0x3a, 0xca, 0xee, 0x3c, 0xe3, 0xae, 0x3f, 0x01, 0x3b, 0x53, 0xa5, 0x95, 0x13, 0xd0,
0x64, 0x75, 0xd7, 0xba, 0x3d, 0x53, 0xef, 0x8b, 0x11, 0x90, 0xf7, 0xbf, 0xf9, 0xc9, 0xf6, 0x01,
0xe1, 0x87, 0x71, 0x4f, 0x58, 0xf6, 0xae, 0xd2, 0xbc, 0x43, 0xa8, 0xfe, 0x75, 0x37, 0xb9, 0xe5,
0x5d, 0xb9, 0xd3, 0x5d, 0x69, 0xa7, 0x51, 0xaf, 0xb7, 0x28, 0x87, 0xef, 0xfd, 0x27, 0x00, 0x00,
0xff, 0xff, 0x91, 0xcd, 0x0b, 0xf2, 0xb8, 0x22, 0x00, 0x00,
// 2322 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcf, 0x6f, 0x1c, 0x49,
0xf5, 0x4f, 0x4f, 0xfb, 0xc7, 0xf4, 0xeb, 0x19, 0xff, 0xa8, 0x78, 0xbf, 0xdf, 0xc9, 0x24, 0x21,
0x4e, 0x67, 0x93, 0x18, 0x44, 0x9c, 0xe0, 0x65, 0xd1, 0x82, 0x00, 0xc9, 0xb1, 0x37, 0xc9, 0x24,
0x9b, 0xc8, 0xb4, 0xa3, 0x48, 0xac, 0x10, 0x4d, 0xcf, 0x74, 0x8d, 0x5d, 0xeb, 0x9e, 0xae, 0x49,
0x57, 0x75, 0x12, 0x07, 0x09, 0xc1, 0x61, 0x0f, 0x20, 0x24, 0x04, 0x42, 0xe2, 0x1f, 0xe0, 0xb4,
0x7f, 0x02, 0x17, 0x2e, 0x1c, 0xb9, 0xc0, 0x9d, 0x0b, 0x77, 0xce, 0x5c, 0x51, 0xfd, 0xe8, 0x9e,
0xee, 0x9e, 0x1e, 0xcf, 0xc4, 0x36, 0x42, 0x82, 0xdb, 0xd4, 0xab, 0x57, 0x3f, 0xfa, 0xbd, 0xcf,
0x7b, 0x9f, 0xf7, 0x6a, 0x60, 0x95, 0x44, 0x01, 0x7e, 0xe3, 0xf5, 0x28, 0x8d, 0x83, 0xcd, 0x61,
0x4c, 0x39, 0x45, 0x68, 0x40, 0xc2, 0x57, 0x09, 0x53, 0xa3, 0x4d, 0x39, 0xdf, 0x6e, 0xf4, 0xe8,
0x60, 0x40, 0x23, 0x25, 0x6b, 0x37, 0x58, 0xef, 0x10, 0x0f, 0x7c, 0x3d, 0x5a, 0x22, 0x11, 0xc7,
0x71, 0xe4, 0x87, 0xe9, 0x6c, 0x7e, 0xbd, 0xf3, 0xb7, 0x39, 0xb0, 0x3a, 0x62, 0x8f, 0x4e, 0xd4,
0xa7, 0xc8, 0x81, 0x46, 0x8f, 0x86, 0x21, 0xee, 0x71, 0x42, 0xa3, 0xce, 0x6e, 0xcb, 0x58, 0x37,
0x36, 0x4c, 0xb7, 0x20, 0x43, 0x2d, 0x58, 0xec, 0x13, 0x1c, 0x06, 0x9d, 0xdd, 0x56, 0x4d, 0x4e,
0xa7, 0x43, 0x74, 0x15, 0x40, 0x5d, 0x37, 0xf2, 0x07, 0xb8, 0x65, 0xae, 0x1b, 0x1b, 0x96, 0x6b,
0x49, 0xc9, 0x33, 0x7f, 0x80, 0xc5, 0x42, 0x39, 0xe8, 0xec, 0xb6, 0xe6, 0xd4, 0x42, 0x3d, 0x44,
0xf7, 0xc1, 0xe6, 0xc7, 0x43, 0xec, 0x0d, 0xfd, 0xd8, 0x1f, 0xb0, 0xd6, 0xfc, 0xba, 0xb9, 0x61,
0x6f, 0x5d, 0xdf, 0x2c, 0x7c, 0xa8, 0xfe, 0xc2, 0x27, 0xf8, 0xf8, 0x85, 0x1f, 0x26, 0x78, 0xcf,
0x27, 0xb1, 0x0b, 0x62, 0xd5, 0x9e, 0x5c, 0x84, 0x76, 0xa1, 0xa1, 0x0e, 0xd7, 0x9b, 0x2c, 0xcc,
0xba, 0x89, 0x2d, 0x97, 0xe9, 0x5d, 0xae, 0xeb, 0x5d, 0x70, 0xe0, 0xc5, 0xf4, 0x35, 0x6b, 0x2d,
0xca, 0x8b, 0xda, 0x5a, 0xe6, 0xd2, 0xd7, 0x4c, 0x7c, 0x25, 0xa7, 0xdc, 0x0f, 0x95, 0x42, 0x5d,
0x2a, 0x58, 0x52, 0x22, 0xa7, 0x3f, 0x84, 0x79, 0xc6, 0x7d, 0x8e, 0x5b, 0xd6, 0xba, 0xb1, 0xb1,
0xb4, 0x75, 0xad, 0xf2, 0x02, 0xd2, 0xe2, 0xfb, 0x42, 0xcd, 0x55, 0xda, 0xe8, 0x43, 0xf8, 0x7f,
0x75, 0x7d, 0x39, 0xf4, 0xfa, 0x3e, 0x09, 0xbd, 0x18, 0xfb, 0x8c, 0x46, 0x2d, 0x90, 0x86, 0x5c,
0x23, 0xd9, 0x9a, 0x07, 0x3e, 0x09, 0x5d, 0x39, 0x87, 0x1c, 0x68, 0x12, 0xe6, 0xf9, 0x09, 0xa7,
0x9e, 0x9c, 0x6f, 0xd9, 0xeb, 0xc6, 0x46, 0xdd, 0xb5, 0x09, 0xdb, 0x4e, 0x38, 0x95, 0xc7, 0xa0,
0xa7, 0xb0, 0x9a, 0x30, 0x1c, 0x7b, 0x05, 0xf3, 0x34, 0x66, 0x35, 0xcf, 0xb2, 0x58, 0xdb, 0xc9,
0x99, 0xe8, 0xab, 0x80, 0x86, 0x38, 0x0a, 0x48, 0x74, 0xa0, 0x77, 0x94, 0x76, 0x68, 0x4a, 0x3b,
0xac, 0xe8, 0x19, 0xa9, 0x2f, 0xcc, 0xe1, 0x7c, 0x6e, 0x00, 0x3c, 0x90, 0xf8, 0x90, 0x77, 0xf9,
0x76, 0x0a, 0x11, 0x12, 0xf5, 0xa9, 0x84, 0x97, 0xbd, 0x75, 0x75, 0x73, 0x1c, 0xd1, 0x9b, 0x19,
0x26, 0x35, 0x82, 0x24, 0x3c, 0x5b, 0xb0, 0x18, 0xe0, 0x10, 0x73, 0x1c, 0x48, 0xe8, 0xd5, 0xdd,
0x74, 0x88, 0xae, 0x81, 0xdd, 0x8b, 0xb1, 0xb0, 0x1c, 0x27, 0x1a, 0x7b, 0x73, 0x2e, 0x28, 0xd1,
0x73, 0x32, 0xc0, 0xce, 0xe7, 0x73, 0xd0, 0xd8, 0xc7, 0x07, 0x03, 0x1c, 0x71, 0x75, 0x93, 0x59,
0xa0, 0xbe, 0x0e, 0xf6, 0xd0, 0x8f, 0x39, 0xd1, 0x2a, 0x0a, 0xee, 0x79, 0x11, 0xba, 0x02, 0x16,
0xd3, 0xbb, 0xee, 0xca, 0x53, 0x4d, 0x77, 0x24, 0x40, 0x97, 0xa0, 0x1e, 0x25, 0x03, 0x65, 0x20,
0x0d, 0xf9, 0x28, 0x19, 0x48, 0x98, 0xe4, 0x82, 0x61, 0xbe, 0x18, 0x0c, 0x2d, 0x58, 0xec, 0x26,
0x44, 0xc6, 0xd7, 0x82, 0x9a, 0xd1, 0x43, 0xf4, 0x7f, 0xb0, 0x10, 0xd1, 0x00, 0x77, 0x76, 0x35,
0x2c, 0xf5, 0x08, 0xdd, 0x80, 0xa6, 0x32, 0xea, 0x2b, 0x1c, 0x33, 0x42, 0x23, 0x0d, 0x4a, 0x85,
0xe4, 0x17, 0x4a, 0x76, 0x5a, 0x5c, 0x5e, 0x03, 0x7b, 0x1c, 0x8b, 0xd0, 0x1f, 0x21, 0xf0, 0x16,
0x2c, 0xab, 0xc3, 0xfb, 0x24, 0xc4, 0xde, 0x11, 0x3e, 0x66, 0x2d, 0x7b, 0xdd, 0xdc, 0xb0, 0x5c,
0x75, 0xa7, 0x07, 0x24, 0xc4, 0x4f, 0xf0, 0x31, 0xcb, 0xfb, 0xae, 0x71, 0xa2, 0xef, 0x9a, 0x65,
0xdf, 0xa1, 0x9b, 0xb0, 0xc4, 0x70, 0x4c, 0xfc, 0x90, 0xbc, 0xc5, 0x1e, 0x23, 0x6f, 0x71, 0x6b,
0x49, 0xea, 0x34, 0x33, 0xe9, 0x3e, 0x79, 0x8b, 0x85, 0x19, 0x5e, 0xc7, 0x84, 0x63, 0xef, 0xd0,
0x8f, 0x02, 0xda, 0xef, 0xb7, 0x96, 0xe5, 0x39, 0x0d, 0x29, 0x7c, 0xa4, 0x64, 0xce, 0xef, 0x0c,
0xb8, 0xe8, 0xe2, 0x03, 0xc2, 0x38, 0x8e, 0x9f, 0xd1, 0x00, 0xbb, 0xf8, 0x65, 0x82, 0x19, 0x47,
0xf7, 0x60, 0xae, 0xeb, 0x33, 0xac, 0x21, 0x79, 0xa5, 0xd2, 0x3a, 0x4f, 0xd9, 0xc1, 0x7d, 0x9f,
0x61, 0x57, 0x6a, 0xa2, 0x6f, 0xc0, 0xa2, 0x1f, 0x04, 0x31, 0x66, 0x4c, 0x02, 0x63, 0xd2, 0xa2,
0x6d, 0xa5, 0xe3, 0xa6, 0xca, 0x39, 0x2f, 0x9a, 0x79, 0x2f, 0x3a, 0xbf, 0x32, 0x60, 0xad, 0x78,
0x33, 0x36, 0xa4, 0x11, 0xc3, 0xe8, 0x03, 0x58, 0x10, 0xbe, 0x48, 0x98, 0xbe, 0xdc, 0xe5, 0xca,
0x73, 0xf6, 0xa5, 0x8a, 0xab, 0x55, 0x45, 0x4a, 0x25, 0x11, 0xe1, 0x69, 0xb8, 0xab, 0x1b, 0x5e,
0x2f, 0x47, 0x9a, 0x26, 0x86, 0x4e, 0x44, 0xb8, 0x8a, 0x6e, 0x17, 0x48, 0xf6, 0xdb, 0xf9, 0x3e,
0xac, 0x3d, 0xc4, 0x3c, 0x87, 0x09, 0x6d, 0xab, 0x59, 0x42, 0xa7, 0xc8, 0x05, 0xb5, 0x12, 0x17,
0x38, 0xbf, 0x37, 0xe0, 0xbd, 0xd2, 0xde, 0x67, 0xf9, 0xda, 0x0c, 0xdc, 0xb5, 0xb3, 0x80, 0xdb,
0x2c, 0x83, 0xdb, 0xf9, 0xa9, 0x01, 0x97, 0x1f, 0x62, 0x9e, 0x4f, 0x1c, 0xe7, 0x6c, 0x09, 0xf4,
0x25, 0x80, 0x2c, 0x61, 0xb0, 0x96, 0xb9, 0x6e, 0x6e, 0x98, 0x6e, 0x4e, 0xe2, 0xfc, 0xdc, 0x80,
0xd5, 0xb1, 0xf3, 0x8b, 0x79, 0xc7, 0x28, 0xe7, 0x9d, 0x7f, 0x97, 0x39, 0x7e, 0x63, 0xc0, 0x95,
0x6a, 0x73, 0x9c, 0xc5, 0x79, 0xdf, 0x51, 0x8b, 0xb0, 0x40, 0xa9, 0x20, 0xa5, 0x9b, 0x55, 0x7c,
0x30, 0x7e, 0xa6, 0x5e, 0xe4, 0xfc, 0xc5, 0x04, 0xb4, 0x23, 0x93, 0x85, 0x62, 0x9d, 0x77, 0x70,
0xcd, 0xa9, 0x4b, 0x99, 0x52, 0xc1, 0x32, 0x77, 0x1e, 0x05, 0xcb, 0xfc, 0xa9, 0x0a, 0x96, 0x2b,
0x60, 0x89, 0xac, 0xc9, 0xb8, 0x3f, 0x18, 0x4a, 0xbe, 0x98, 0x73, 0x47, 0x82, 0xf1, 0xf2, 0x60,
0x71, 0xc6, 0xf2, 0xa0, 0x7e, 0xea, 0xf2, 0x60, 0x07, 0x9a, 0xd2, 0x88, 0xbb, 0x3e, 0xf7, 0x9f,
0x1f, 0x0f, 0x53, 0xbe, 0x29, 0x91, 0xbc, 0xae, 0x50, 0x53, 0x25, 0xb7, 0xb8, 0xc6, 0x79, 0x03,
0x17, 0xd3, 0xec, 0x20, 0x6b, 0x80, 0x77, 0xf0, 0x69, 0x31, 0x9e, 0x6a, 0xe5, 0x78, 0x9a, 0xe2,
0x59, 0xe7, 0x9f, 0x35, 0x58, 0xed, 0xa4, 0xc4, 0xb5, 0xe7, 0xf3, 0x43, 0x59, 0x78, 0x9c, 0x1c,
0x6e, 0x93, 0x61, 0x94, 0x63, 0x79, 0x73, 0x22, 0xcb, 0xcf, 0x15, 0x59, 0xbe, 0x78, 0xc1, 0xf9,
0x32, 0xf4, 0xce, 0xa7, 0xce, 0xdd, 0x80, 0x95, 0x1c, 0x6b, 0x0f, 0x7d, 0x7e, 0x28, 0x6a, 0x5d,
0x41, 0xdb, 0x4b, 0x24, 0xff, 0xf5, 0x0c, 0xdd, 0x86, 0xe5, 0x8c, 0x66, 0x03, 0xc5, 0xbe, 0x75,
0x09, 0xb3, 0x11, 0x27, 0x07, 0x29, 0xfd, 0x16, 0xab, 0x10, 0xab, 0xa2, 0x0a, 0xc9, 0x57, 0x44,
0x50, 0xa8, 0x88, 0x9c, 0x3f, 0x18, 0x60, 0x67, 0x51, 0x3e, 0x63, 0x2f, 0x52, 0xf0, 0x4b, 0xad,
0xec, 0x97, 0xeb, 0xd0, 0xc0, 0x91, 0xdf, 0x0d, 0xb1, 0x06, 0xbf, 0xa9, 0xc0, 0xaf, 0x64, 0x0a,
0xfc, 0x0f, 0xc0, 0x1e, 0xd5, 0xa3, 0x69, 0x20, 0xdf, 0x9c, 0x58, 0x90, 0xe6, 0x41, 0xe1, 0x42,
0x56, 0x98, 0x32, 0xe7, 0x17, 0xb5, 0x11, 0x57, 0x2a, 0xc4, 0x9e, 0x25, 0x23, 0xfe, 0x00, 0x1a,
0xfa, 0x2b, 0x54, 0x9d, 0xac, 0xf2, 0xe2, 0x37, 0xab, 0xae, 0x55, 0x75, 0xe8, 0x66, 0xce, 0x8c,
0x1f, 0x47, 0x3c, 0x3e, 0x76, 0x6d, 0x36, 0x92, 0xb4, 0x3d, 0x58, 0x29, 0x2b, 0xa0, 0x15, 0x30,
0x8f, 0xf0, 0xb1, 0xb6, 0xb1, 0xf8, 0x29, 0x38, 0xe4, 0x95, 0xc0, 0x8e, 0x2e, 0x1d, 0xae, 0x9d,
0x98, 0x94, 0xfb, 0xd4, 0x55, 0xda, 0xdf, 0xaa, 0x7d, 0x64, 0x38, 0xbf, 0x35, 0x60, 0x65, 0x37,
0xa6, 0xc3, 0x77, 0xce, 0xc7, 0x0e, 0x34, 0x72, 0xc5, 0x75, 0x1a, 0xbd, 0x05, 0xd9, 0xb4, 0xcc,
0x7c, 0x09, 0xea, 0x41, 0x4c, 0x87, 0x9e, 0x1f, 0x86, 0x32, 0xb0, 0x44, 0x9d, 0x19, 0xd3, 0xe1,
0x76, 0x18, 0x3a, 0xaf, 0x61, 0x6d, 0x17, 0xb3, 0x5e, 0x4c, 0xba, 0xef, 0xce, 0x14, 0x53, 0x48,
0xbc, 0x90, 0x85, 0xcd, 0x52, 0x16, 0x76, 0x7e, 0x69, 0xc0, 0x7b, 0xa5, 0x93, 0xcf, 0x82, 0x8e,
0xef, 0x16, 0x31, 0xab, 0xc0, 0x31, 0xa5, 0x89, 0xca, 0x63, 0xd5, 0x97, 0x24, 0x2e, 0xe7, 0xee,
0x8b, 0x9c, 0xb3, 0x17, 0xd3, 0x03, 0x59, 0xa2, 0x9e, 0x5f, 0x79, 0xf7, 0x27, 0x03, 0xae, 0x4e,
0x38, 0xe3, 0x2c, 0x5f, 0x5e, 0xee, 0xce, 0x6b, 0xd3, 0xba, 0x73, 0xb3, 0xdc, 0x9d, 0x57, 0x37,
0xaf, 0x73, 0x13, 0x9a, 0xd7, 0x7f, 0xd4, 0xa0, 0xb9, 0xcf, 0x69, 0xec, 0x1f, 0xe0, 0x1d, 0x1a,
0xf5, 0xc9, 0x81, 0x48, 0xdb, 0x69, 0xd1, 0x6f, 0xc8, 0x8f, 0xce, 0xca, 0xfa, 0xeb, 0xd0, 0xf0,
0x7b, 0x3d, 0xcc, 0x98, 0xe8, 0x81, 0x74, 0x36, 0xb2, 0x5c, 0x5b, 0xc9, 0x9e, 0x08, 0x11, 0xfa,
0x0a, 0xac, 0x32, 0xdc, 0x8b, 0x31, 0xf7, 0x46, 0x9a, 0x1a, 0xc1, 0xcb, 0x6a, 0x62, 0x3b, 0xd5,
0x16, 0x5d, 0x42, 0xc2, 0xf0, 0xfe, 0xfe, 0x27, 0x1a, 0xc5, 0x7a, 0x24, 0x6a, 0xb4, 0x6e, 0xd2,
0x3b, 0xc2, 0x3c, 0x4f, 0x0f, 0xa0, 0x44, 0x12, 0x8a, 0x97, 0xc1, 0x8a, 0x29, 0xe5, 0x32, 0xa7,
0xcb, 0x82, 0xc0, 0x72, 0xeb, 0x42, 0x20, 0xd2, 0x96, 0xde, 0xb5, 0xb3, 0xfd, 0x54, 0x17, 0x02,
0x7a, 0x24, 0x1a, 0xdd, 0xce, 0xf6, 0xd3, 0x8f, 0xa3, 0x60, 0x48, 0x49, 0xc4, 0x65, 0x82, 0xb7,
0xdc, 0xbc, 0x48, 0x7c, 0x1e, 0x53, 0x96, 0xf0, 0x78, 0xca, 0xea, 0x96, 0x6b, 0x6b, 0x99, 0x20,
0x6d, 0xc1, 0x29, 0x09, 0xc3, 0xde, 0x2b, 0x12, 0xf3, 0xc4, 0x0f, 0xbd, 0x43, 0xca, 0xb8, 0xcc,
0xf1, 0x75, 0x77, 0x29, 0x61, 0xf8, 0x85, 0x12, 0x3f, 0xa2, 0x8c, 0x8b, 0x6b, 0xc4, 0xf8, 0x40,
0x70, 0x84, 0x2d, 0xb7, 0xd1, 0x23, 0xe7, 0xef, 0x26, 0xac, 0xa8, 0x52, 0xee, 0x31, 0xed, 0xa6,
0x70, 0xbc, 0x02, 0x56, 0x2f, 0x4c, 0x44, 0x57, 0xa4, 0xb1, 0x68, 0xb9, 0x23, 0x81, 0xb0, 0x69,
0x9e, 0xc8, 0x62, 0xdc, 0x27, 0x6f, 0xb4, 0xed, 0x97, 0x47, 0x4c, 0x26, 0xc5, 0x79, 0xce, 0x35,
0xc7, 0x38, 0x37, 0xf0, 0xb9, 0xaf, 0x89, 0x70, 0x4e, 0x12, 0xa1, 0x25, 0x24, 0x8a, 0x03, 0xc7,
0xa8, 0x6d, 0xbe, 0x82, 0xda, 0x72, 0x5c, 0xbf, 0x50, 0xe4, 0xfa, 0x62, 0xb0, 0x2c, 0x96, 0x93,
0xc7, 0x23, 0x58, 0x4a, 0x4d, 0xdb, 0x93, 0x28, 0x93, 0xf6, 0xaf, 0xe8, 0xd6, 0x64, 0xca, 0xcd,
0xc3, 0xd1, 0x6d, 0xb2, 0x02, 0x3a, 0xcb, 0xb5, 0x81, 0x75, 0xaa, 0xda, 0xa0, 0x54, 0xdc, 0xc2,
0x69, 0x8a, 0xdb, 0x3c, 0xcf, 0xdb, 0x45, 0x9e, 0xff, 0x04, 0x56, 0xbe, 0x97, 0xe0, 0xf8, 0xf8,
0x31, 0xed, 0xb2, 0xd9, 0x7c, 0xdc, 0x86, 0xba, 0x76, 0x54, 0x4a, 0x09, 0xd9, 0xd8, 0xf9, 0xab,
0x01, 0x4d, 0x19, 0xb0, 0xcf, 0x7d, 0x76, 0x94, 0x3e, 0x12, 0xa5, 0x5e, 0x36, 0x8a, 0x5e, 0x3e,
0x65, 0x5b, 0x54, 0xf1, 0xc2, 0x61, 0x56, 0xbd, 0x70, 0x54, 0x54, 0x4a, 0x73, 0x95, 0x95, 0x52,
0xa9, 0xcf, 0x9a, 0x1f, 0xeb, 0xb3, 0xbe, 0x30, 0x60, 0x35, 0x67, 0xa3, 0xb3, 0xa4, 0xcc, 0x82,
0x65, 0x6b, 0x65, 0xcb, 0xde, 0x2f, 0x52, 0x89, 0x59, 0xe5, 0xea, 0x1c, 0x95, 0xa4, 0x36, 0x2e,
0xd0, 0xc9, 0x13, 0x58, 0x16, 0x64, 0x7f, 0x3e, 0xee, 0xfc, 0xb3, 0x01, 0x8b, 0x8f, 0x69, 0x57,
0x3a, 0x32, 0x8f, 0x21, 0xa3, 0xf8, 0x7a, 0xb6, 0x02, 0x66, 0x40, 0x06, 0x3a, 0xff, 0x8b, 0x9f,
0x22, 0xc6, 0x18, 0xf7, 0x63, 0x3e, 0x7a, 0xff, 0x13, 0xa5, 0xa0, 0x90, 0xc8, 0x27, 0xa4, 0x4b,
0x50, 0xc7, 0x51, 0xa0, 0x26, 0x75, 0xbd, 0x8d, 0xa3, 0x40, 0x4e, 0x9d, 0x4f, 0x1f, 0xb6, 0x06,
0xf3, 0x43, 0x3a, 0x7a, 0xb3, 0x53, 0x03, 0x67, 0x0d, 0xd0, 0x43, 0xcc, 0x1f, 0xd3, 0xae, 0xf0,
0x4a, 0x6a, 0x1e, 0xe7, 0x8f, 0x35, 0xd9, 0xde, 0x8c, 0xc4, 0x67, 0x71, 0xb0, 0x03, 0x4d, 0x45,
0x78, 0x9f, 0xd1, 0xae, 0x17, 0x25, 0xa9, 0x51, 0x6c, 0x29, 0x7c, 0x4c, 0xbb, 0xcf, 0x92, 0x01,
0xba, 0x03, 0x17, 0x49, 0xe4, 0x0d, 0x35, 0x07, 0x67, 0x9a, 0xca, 0x4a, 0x2b, 0x24, 0x4a, 0xd9,
0x59, 0xab, 0xdf, 0x82, 0x65, 0x1c, 0xbd, 0x4c, 0x70, 0x82, 0x33, 0x55, 0x65, 0xb3, 0xa6, 0x16,
0x6b, 0x3d, 0xc1, 0xb5, 0x3e, 0x3b, 0xf2, 0x58, 0x48, 0x39, 0xd3, 0x39, 0xd1, 0x12, 0x92, 0x7d,
0x21, 0x40, 0x1f, 0x81, 0x25, 0x96, 0x2b, 0x68, 0xa9, 0x36, 0xe5, 0x72, 0x15, 0xb4, 0xb4, 0xbf,
0xdd, 0xfa, 0x67, 0xea, 0x07, 0x13, 0x01, 0xa2, 0x0b, 0xf7, 0x80, 0xb0, 0x23, 0xcd, 0x55, 0xa0,
0x44, 0xbb, 0x84, 0x1d, 0x39, 0x3f, 0x84, 0x4b, 0xf9, 0xd7, 0x23, 0xc2, 0x38, 0xe9, 0x9d, 0x67,
0xfd, 0xf2, 0x6b, 0x03, 0xda, 0x55, 0x07, 0xfc, 0x07, 0xcb, 0xb6, 0xad, 0x9f, 0xd9, 0x00, 0x72,
0x66, 0x87, 0xd2, 0x38, 0x40, 0xa1, 0x84, 0xd6, 0x0e, 0x1d, 0x0c, 0x69, 0x84, 0x23, 0x2e, 0x33,
0x16, 0x43, 0x9b, 0xc5, 0xfd, 0xf4, 0x60, 0x5c, 0x51, 0xdb, 0xaa, 0xfd, 0x7e, 0xa5, 0x7e, 0x49,
0xd9, 0xb9, 0x80, 0x5e, 0xca, 0xf6, 0x66, 0x64, 0x8a, 0x9d, 0x43, 0x3f, 0x8a, 0x70, 0x88, 0xb6,
0x26, 0xbc, 0x28, 0x56, 0x29, 0xa7, 0x67, 0xde, 0xa8, 0x3c, 0x73, 0x9f, 0xc7, 0x24, 0x3a, 0x48,
0x4d, 0xec, 0x5c, 0x40, 0xcf, 0xc1, 0xce, 0x3d, 0xeb, 0xa0, 0x5b, 0x55, 0x96, 0x1a, 0x7f, 0xf7,
0x69, 0x9f, 0xe4, 0x0b, 0xe7, 0x02, 0xea, 0x43, 0xb3, 0xf0, 0xee, 0x88, 0x36, 0x4e, 0xea, 0xaa,
0xf2, 0x8f, 0x7d, 0xed, 0x2f, 0xcf, 0xa0, 0x99, 0xdd, 0xfe, 0xc7, 0xca, 0x60, 0x63, 0x0f, 0x77,
0x77, 0x27, 0x6c, 0x32, 0xe9, 0x89, 0xb1, 0x7d, 0x6f, 0xf6, 0x05, 0xd9, 0xe1, 0xc1, 0xe8, 0x23,
0x55, 0x40, 0xdd, 0x9e, 0xde, 0x3a, 0xaa, 0xd3, 0x36, 0x66, 0xed, 0x31, 0x9d, 0x0b, 0x68, 0x0f,
0xac, 0xac, 0xcb, 0x43, 0xef, 0x57, 0x2d, 0x2c, 0x37, 0x81, 0x33, 0x38, 0xa7, 0xd0, 0x27, 0x55,
0x3b, 0xa7, 0xaa, 0x89, 0xab, 0x76, 0x4e, 0x65, 0xd3, 0xe5, 0x5c, 0x40, 0x89, 0x8c, 0x9d, 0x52,
0x74, 0xa3, 0x3b, 0xd3, 0xfc, 0x5b, 0x48, 0x33, 0xed, 0xcd, 0x59, 0xd5, 0xb3, 0x63, 0x7f, 0x32,
0x7a, 0xf3, 0x2e, 0x34, 0x45, 0xe8, 0xde, 0x49, 0x5b, 0x55, 0xf5, 0x68, 0xed, 0xaf, 0xbd, 0xc3,
0x8a, 0x1c, 0x26, 0xd1, 0xfe, 0x21, 0x7d, 0xad, 0x8a, 0xc5, 0x24, 0xf6, 0x45, 0x2e, 0xac, 0x38,
0x5c, 0x87, 0xf0, 0xb8, 0xea, 0xc4, 0xc3, 0x4f, 0x58, 0x91, 0x1d, 0xee, 0x01, 0x3c, 0xc4, 0xfc,
0x29, 0xe6, 0xb1, 0xb0, 0xf5, 0xad, 0x49, 0x79, 0x4a, 0x2b, 0xa4, 0x47, 0xdd, 0x9e, 0xaa, 0x97,
0x1d, 0xd0, 0x05, 0x7b, 0xe7, 0x10, 0xf7, 0x8e, 0x1e, 0x61, 0x3f, 0xe4, 0x87, 0xa8, 0x7a, 0x65,
0x4e, 0x63, 0x02, 0xe4, 0xab, 0x14, 0xd3, 0x33, 0xb6, 0xbe, 0x58, 0xd0, 0xff, 0x96, 0x3f, 0xa3,
0x01, 0xfe, 0xef, 0x4f, 0xc1, 0x7b, 0x60, 0x65, 0xed, 0x58, 0x75, 0x84, 0x97, 0xbb, 0xb5, 0x69,
0x11, 0xfe, 0x29, 0x58, 0x59, 0x61, 0x5b, 0xbd, 0x63, 0xb9, 0x37, 0x68, 0xdf, 0x9c, 0xa2, 0x95,
0xdd, 0xf6, 0x19, 0xd4, 0xd3, 0x42, 0x14, 0xdd, 0x98, 0x94, 0x8e, 0xf2, 0x3b, 0x4f, 0xb9, 0xeb,
0x8f, 0xc0, 0xce, 0x55, 0x69, 0xd5, 0x04, 0x34, 0x5e, 0xdd, 0xb5, 0x6f, 0x4f, 0xd5, 0xfb, 0xdf,
0x08, 0xc8, 0xfb, 0x5f, 0xff, 0x74, 0xeb, 0x80, 0xf0, 0xc3, 0xa4, 0x2b, 0x2c, 0x7b, 0x57, 0x69,
0xde, 0x21, 0x54, 0xff, 0xba, 0x9b, 0xde, 0xf2, 0xae, 0xdc, 0xe9, 0xae, 0xb4, 0xd3, 0xb0, 0xdb,
0x5d, 0x90, 0xc3, 0x0f, 0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0xf9, 0x2b, 0x24, 0xbb, 0xfa, 0x22,
0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -437,8 +437,10 @@ func genStorageConfig() *indexpb.StorageConfig {
BucketName: Params.MinioCfg.BucketName,
RootPath: Params.MinioCfg.RootPath,
IAMEndpoint: Params.MinioCfg.IAMEndpoint,
Region: Params.MinioCfg.Region,
UseSSL: Params.MinioCfg.UseSSL,
UseIAM: Params.MinioCfg.UseIAM,
UseVirtualHost: Params.MinioCfg.UseVirtualHost,
StorageType: Params.CommonCfg.StorageType,
}
}

View File

@ -26,6 +26,8 @@ func NewChunkManagerFactoryWithParam(params *paramtable.ComponentParam) *ChunkMa
UseIAM(params.MinioCfg.UseIAM),
CloudProvider(params.MinioCfg.CloudProvider),
IAMEndpoint(params.MinioCfg.IAMEndpoint),
UseVirtualHost(params.MinioCfg.UseVirtualHost),
Region(params.MinioCfg.Region),
CreateBucket(true))
}

View File

@ -71,10 +71,12 @@ func newMinioChunkManagerWithConfig(ctx context.Context, c *config) (*MinioChunk
var newMinioFn = minio.New
var bucketLookupType = minio.BucketLookupAuto
if c.useVirtualHost {
bucketLookupType = minio.BucketLookupDNS
}
switch c.cloudProvider {
case paramtable.CloudProviderAliyun:
// auto doesn't work for aliyun, so we set to dns deliberately
bucketLookupType = minio.BucketLookupDNS
if c.useIAM {
newMinioFn = aliyun.NewMinioClient
} else {
@ -96,6 +98,7 @@ func newMinioChunkManagerWithConfig(ctx context.Context, c *config) (*MinioChunk
BucketLookup: bucketLookupType,
Creds: creds,
Secure: c.useSSL,
Region: c.region,
}
minIOClient, err := newMinioFn(c.address, minioOpts)
// options nil or invalid formatted endpoint, don't need to retry

View File

@ -50,6 +50,8 @@ func newMinIOChunkManager(ctx context.Context, bucketName string, rootPath strin
CloudProvider("aws"),
IAMEndpoint(""),
CreateBucket(true),
UseVirtualHost(false),
Region(""),
)
return client, err
}

View File

@ -12,6 +12,8 @@ type config struct {
useIAM bool
cloudProvider string
iamEndpoint string
useVirtualHost bool
region string
}
func newDefaultConfig() *config {
@ -79,3 +81,15 @@ func IAMEndpoint(iamEndpoint string) Option {
c.iamEndpoint = iamEndpoint
}
}
func UseVirtualHost(useVirtualHost bool) Option {
return func(c *config) {
c.useVirtualHost = useVirtualHost
}
}
func Region(region string) Option {
return func(c *config) {
c.region = region
}
}

View File

@ -120,9 +120,6 @@ func TestGlobalMethods(t *testing.T) {
// Incorrect option
err = ZstdCompress(strings.NewReader(data), compressed, zstd.WithWindowSize(3))
assert.Error(t, err)
err = ZstdDecompress(compressed, origin, zstd.WithDecoderConcurrency(0))
assert.Error(t, err)
}
func TestCurrencyGlobalMethods(t *testing.T) {

View File

@ -52,6 +52,7 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
cRootPath := C.CString(config.RootPath)
cStorageType := C.CString(storageType)
cIamEndPoint := C.CString(config.IAMEndpoint)
cRegion := C.CString(config.Region)
defer C.free(unsafe.Pointer(cAddress))
defer C.free(unsafe.Pointer(cBucketName))
defer C.free(unsafe.Pointer(cAccessKey))
@ -59,6 +60,7 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
defer C.free(unsafe.Pointer(cRootPath))
defer C.free(unsafe.Pointer(cStorageType))
defer C.free(unsafe.Pointer(cIamEndPoint))
defer C.free(unsafe.Pointer(cRegion))
storageConfig := C.CStorageConfig{
address: cAddress,
bucket_name: cBucketName,
@ -69,6 +71,8 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) {
iam_endpoint: cIamEndPoint,
useSSL: C.bool(config.UseSSL),
useIAM: C.bool(config.UseIAM),
region: cRegion,
useVirtualHost: C.bool(config.UseVirtualHost),
}
status := C.NewBuildIndexInfo(&cBuildIndexInfo, storageConfig)

View File

@ -50,6 +50,7 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
cStorageType := C.CString(params.CommonCfg.StorageType)
cIamEndPoint := C.CString(params.MinioCfg.IAMEndpoint)
cLogLevel := C.CString(params.MinioCfg.LogLevel)
cRegion := C.CString(params.MinioCfg.Region)
defer C.free(unsafe.Pointer(cAddress))
defer C.free(unsafe.Pointer(cBucketName))
defer C.free(unsafe.Pointer(cAccessKey))
@ -58,6 +59,7 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
defer C.free(unsafe.Pointer(cStorageType))
defer C.free(unsafe.Pointer(cIamEndPoint))
defer C.free(unsafe.Pointer(cLogLevel))
defer C.free(unsafe.Pointer(cRegion))
storageConfig := C.CStorageConfig{
address: cAddress,
bucket_name: cBucketName,
@ -69,6 +71,8 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error {
useSSL: C.bool(params.MinioCfg.UseSSL),
useIAM: C.bool(params.MinioCfg.UseIAM),
log_level: cLogLevel,
region: cRegion,
useVirtualHost: C.bool(params.MinioCfg.UseVirtualHost),
}
status := C.InitRemoteChunkManagerSingleton(storageConfig)

View File

@ -42,12 +42,14 @@ const (
DefaultMinioUseSSL = "false"
DefaultMinioBucketName = "a-bucket"
DefaultMinioUseIAM = "false"
DefaultMinioUseVirtualHost = "false"
DefaultMinioCloudProvider = "aws"
DefaultMinioIAMEndpoint = ""
DefaultEtcdEndpoints = "localhost:2379"
DefaultInsertBufferSize = "16777216"
DefaultEnvPrefix = "milvus"
DefaultMinioLogLevel = "error"
DefaultMinioRegion = ""
DefaultLogFormat = "text"
DefaultLogLevelForBase = "debug"

View File

@ -486,6 +486,8 @@ type MinioConfig struct {
CloudProvider string
IAMEndpoint string
LogLevel string
Region string
UseVirtualHost bool
}
func (p *MinioConfig) init(base *BaseTable) {
@ -501,6 +503,8 @@ func (p *MinioConfig) init(base *BaseTable) {
p.initCloudProvider()
p.initIAMEndpoint()
p.initLogLevel()
p.initUseVirtualHost()
p.initRegion()
}
func (p *MinioConfig) initAddress() {
@ -566,6 +570,15 @@ func (p *MinioConfig) initUseIAM() {
}
}
func (p *MinioConfig) initUseVirtualHost() {
useVirHost := p.Base.LoadWithDefault("minio.useVirtualHost", DefaultMinioUseVirtualHost)
var err error
p.UseVirtualHost, err = strconv.ParseBool(useVirHost)
if err != nil {
panic("parse bool useVirtualHost:" + err.Error())
}
}
// CloudProvider supported
const (
CloudProviderAWS = "aws"
@ -593,3 +606,7 @@ func (p *MinioConfig) initIAMEndpoint() {
func (p *MinioConfig) initLogLevel() {
p.LogLevel = p.Base.LoadWithDefault("minio.logLevel", DefaultMinioLogLevel)
}
func (p *MinioConfig) initRegion() {
p.Region = p.Base.LoadWithDefault("minio.region", DefaultMinioRegion)
}