From c07ed83c41308217c297b6d0bcb706a85fa20e8c Mon Sep 17 00:00:00 2001 From: Fabi <38692350+fgerschwiler@users.noreply.github.com> Date: Tue, 7 Apr 2020 13:23:04 +0200 Subject: [PATCH] Project commands (#26) * feat: eventstore repository * fix: remove gorm * version * feat: pkg * feat: add some files for project * feat: eventstore without eventstore-lib * rename files * gnueg * fix: key json * fix: add object * fix: change imports * fix: internal models * fix: some imports * fix: global model * fix: add some functions on repo * feat(eventstore): sdk * fix(eventstore): search query * fix(eventstore): rename app to eventstore * delete empty test * remove unused func * merge master * fix(eventstore): tests * fix(models): delete unused struct * fix: some funcitons * feat(eventstore): implemented push events * fix: move project eventstore to project package * fix: change project eventstore funcs * feat(eventstore): overwrite context data * fix: change project eventstore * fix: add project repo to mgmt server * feat(types): SQL-config * fix: commented code * feat(eventstore): options to overwrite editor * feat: auth interceptor and cockroach migrations * fix: migrations * fix: fix filter * fix: not found on getbyid * fix: add sequence * fix: add some tests * fix(eventstore): nullable sequence * fix: add some tests * merge * fix: add some tests * fix(migrations): correct statements for sequence * fix: add some tests * fix: add some tests * fix: changes from mr * Update internal/eventstore/models/field.go Co-Authored-By: livio-a * fix(eventstore): code quality * fix: add types to aggregate/Event-types * fix(eventstore): rename modifier* to editor* * fix(eventstore): delete editor_org * fix(migrations): remove editor_org field, rename modifier_* to editor_* * fix: generate files * fix(eventstore): tests * fix(eventstore): rename modifier to editor * fix(migrations): add cluster migration, fix(migrations): fix typo of host in clean clsuter * fix(eventstore): move health * fix(eventstore): AggregateTypeFilter aggregateType as param * code quality * feat: start implementing project members * feat: remove member funcs * feat: remove member model * feat: remove member events * feat: remove member repo model * fix: better error func testing * Update docs/local.md Co-Authored-By: Silvan * Update docs/local.md Co-Authored-By: Silvan * fix: mr requests * fix: md file Co-authored-by: adlerhurst Co-authored-by: livio-a --- cmd/zitadel/startup.yaml | 16 +- docs/local.md | 33 + go.mod | 12 +- go.sum | 25 +- internal/api/auth/authorization.go | 8 +- internal/api/auth/context.go | 40 +- internal/api/auth/context_mock.go | 7 + internal/api/auth/permissions_test.go | 2 +- .../server/middleware/auth_interceptor.go | 11 +- internal/api/header.go | 5 + internal/eventstore/eventstore.go | 4 + internal/eventstore/health.go | 9 - .../internal/repository/mock/repository.go | 4 +- .../repository/mock/repository.mock.go | 14 - .../internal/repository/sql/db_mock_test.go | 31 +- .../internal/repository/sql/filter.go | 26 +- .../internal/repository/sql/filter_test.go | 4 +- .../internal/repository/sql/push.go | 16 +- .../internal/repository/sql/sequence.go | 27 + internal/eventstore/models/field.go | 4 +- internal/eventstore/models/search_query.go | 2 +- internal/management/auth/token_verifier.go | 25 + internal/management/config.go | 3 - .../repository/eventsourcing/project.go | 73 + .../repository/eventsourcing/repository.go | 48 + internal/management/repository/project.go | 14 + internal/management/repository/repository.go | 6 + internal/project/model/project.go | 35 + internal/project/model/state.go | 23 + internal/project/model/types.go | 37 + .../repository/eventsourcing/events.go | 55 + .../repository/eventsourcing/events_test.go | 169 + .../repository/eventsourcing/eventstore.go | 110 + .../eventsourcing/eventstore_mock.go | 33 + .../eventsourcing/eventstore_test.go | 311 ++ .../repository/eventsourcing/project.go | 131 + .../repository/eventsourcing/project_test.go | 453 ++ .../protoc/protoc-gen-authoption/templates.go | 4 +- migrations/cockroach/V1.0__eventstore.sql | 49 + migrations/cockroach/V1.1__management.sql | 16 + migrations/cockroach/clean_cluster.go | 5 + migrations/cockroach/clean_local.go | 5 + migrations/cockroach/migrate_cluster.go | 5 + migrations/cockroach/migrate_local.go | 5 + pkg/admin/api/grpc/admin.pb.go | 8 +- pkg/admin/api/grpc/admin.pb.gw.go | 271 +- pkg/admin/api/grpc/admin.swagger.json | 60 +- pkg/admin/api/grpc/mock/admin.proto.mock.go | 16 +- pkg/auth/api/grpc/auth.pb.go | 4147 ++++++----------- pkg/auth/api/grpc/auth.pb.gw.go | 890 +++- pkg/auth/api/grpc/auth.swagger.json | 80 +- pkg/auth/api/grpc/user.go | 8 - pkg/auth/api/proto/auth.proto | 6 + pkg/management/api/api.go | 6 +- pkg/management/api/grpc/management.pb.go | 1141 +++-- .../api/grpc/management.swagger.json | 70 +- pkg/management/api/grpc/project.go | 30 +- pkg/management/api/grpc/project_converter.go | 45 + pkg/management/api/grpc/server.go | 16 +- pkg/management/api/proto/management.proto | 19 +- pkg/management/management.go | 12 +- 61 files changed, 5259 insertions(+), 3481 deletions(-) create mode 100644 docs/local.md create mode 100644 internal/api/auth/context_mock.go delete mode 100644 internal/eventstore/health.go create mode 100644 internal/eventstore/internal/repository/sql/sequence.go create mode 100644 internal/management/auth/token_verifier.go delete mode 100644 internal/management/config.go create mode 100644 internal/management/repository/eventsourcing/project.go create mode 100644 internal/management/repository/eventsourcing/repository.go create mode 100644 internal/management/repository/project.go create mode 100644 internal/management/repository/repository.go create mode 100644 internal/project/model/project.go create mode 100644 internal/project/model/state.go create mode 100644 internal/project/model/types.go create mode 100644 internal/project/repository/eventsourcing/events.go create mode 100644 internal/project/repository/eventsourcing/events_test.go create mode 100644 internal/project/repository/eventsourcing/eventstore.go create mode 100644 internal/project/repository/eventsourcing/eventstore_mock.go create mode 100644 internal/project/repository/eventsourcing/eventstore_test.go create mode 100644 internal/project/repository/eventsourcing/project.go create mode 100644 internal/project/repository/eventsourcing/project_test.go create mode 100644 migrations/cockroach/V1.0__eventstore.sql create mode 100644 migrations/cockroach/V1.1__management.sql create mode 100644 migrations/cockroach/clean_cluster.go create mode 100644 migrations/cockroach/clean_local.go create mode 100644 migrations/cockroach/migrate_cluster.go create mode 100644 migrations/cockroach/migrate_local.go create mode 100644 pkg/management/api/grpc/project_converter.go diff --git a/cmd/zitadel/startup.yaml b/cmd/zitadel/startup.yaml index abf809b34b..4f96d4e25c 100644 --- a/cmd/zitadel/startup.yaml +++ b/cmd/zitadel/startup.yaml @@ -16,7 +16,17 @@ Mgmt: ServerPort: 50010 GatewayPort: 50011 CustomHeaders: - - x-caos- + - x-zitadel- + Repository: + Eventstore: + ServiceName: 'ManagementAPI' + Repository: + SQL: + Host: $CR_HOST + Port: $CR_PORT + User: 'management' + Database: 'management' + SSLmode: disable Auth: API: @@ -24,7 +34,7 @@ Auth: ServerPort: 50020 GatewayPort: 50021 CustomHeaders: - - x-caos- + - x-zitadel- Login: # will get port range 5003x @@ -35,7 +45,7 @@ Admin: ServerPort: 50040 GatewayPort: 50041 CustomHeaders: - - x-caos- + - x-zitadel- Console: Port: 50050 diff --git a/docs/local.md b/docs/local.md new file mode 100644 index 0000000000..3829ca52b7 --- /dev/null +++ b/docs/local.md @@ -0,0 +1,33 @@ + +## local development + +### start cockroach in docker + +```bash +docker rm -f zitadel-db && +rm -rf ${GOPATH}/src/github.com/caos/zitadel/cockroach-data && +docker run -d \ +--name=zitadel-db \ +--hostname=zitadel-db \ +-p 26257:26257 -p 8080:8080 \ +-v "${GOPATH}/src/github.com/caos/zitadel/cockroach-data/zitadel1:/cockroach/cockroach-data" \ +cockroachdb/cockroach:v19.2.2 start --insecure +``` + +### local database migrations + +#### local migrate + +`go generate $GOPATH/src/github.com/caos/zitadel/migrations/cockroach/migrate_local.go` + +#### local cleanup + +`go generate $GOPATH/src/github.com/caos/zitadel/migrations/cockroach/clean_local.go` + + +### Connect to Cockroach + +`docker exec -it "zitadel-db" /cockroach/cockroach sql --insecure` + +#### Should show eventstore, management, admin, auth +`show databases;` \ No newline at end of file diff --git a/go.mod b/go.mod index 6e59d7622c..59e501bbd3 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/Masterminds/goutils v1.1.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible - github.com/aws/aws-sdk-go v1.30.1 // indirect + github.com/aws/aws-sdk-go v1.30.4 // indirect github.com/caos/logging v0.0.1 github.com/cockroachdb/cockroach-go v0.0.0-20200312223839-f565e4789405 github.com/envoyproxy/protoc-gen-validate v0.3.0 @@ -32,14 +32,14 @@ require ( github.com/nicksnyder/go-i18n/v2 v2.0.3 github.com/rs/cors v1.7.0 github.com/sirupsen/logrus v1.5.0 // indirect + github.com/sony/sonyflake v1.0.0 github.com/stretchr/testify v1.5.1 go.opencensus.io v0.22.3 - golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 - golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect - golang.org/x/sys v0.0.0-20200331124033-c3d80250170d // indirect + golang.org/x/crypto v0.0.0-20200403201458-baeed622b8d8 golang.org/x/text v0.3.2 - golang.org/x/tools v0.0.0-20200331202046-9d5940d49312 - google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940 + golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b + google.golang.org/api v0.21.0 // indirect + google.golang.org/genproto v0.0.0-20200403120447-c50568487044 google.golang.org/grpc v1.28.0 google.golang.org/protobuf v1.20.1 gopkg.in/yaml.v2 v2.2.8 // indirect diff --git a/go.sum b/go.sum index a969d15e08..0492b6d3f0 100644 --- a/go.sum +++ b/go.sum @@ -9,8 +9,6 @@ cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6T cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.55.0 h1:eoz/lYxKSL4CNAiaUJ0ZfD1J3bfMYbU5B3rwM1C1EIU= -cloud.google.com/go v0.55.0/go.mod h1:ZHmoY+/lIMNkN2+fBmuTiqZ4inFhvQad8ft7MT8IV5Y= cloud.google.com/go v0.56.0 h1:WRz29PgAsVEyPSDHyk+0fpEkwEFyfhHn+JbksT6gIL4= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -24,9 +22,6 @@ cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIA cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -contrib.go.opencensus.io/exporter/stackdriver v0.13.0 h1:Jaz7WbqjtfoCPa1KbfisCX+P5aM3DizEY9pQMU0oAQo= -contrib.go.opencensus.io/exporter/stackdriver v0.13.0/go.mod h1:z2tyTZtPmQ2HvWH4cOmVDgtY+1lomfKdbLnkJvZdc8c= -contrib.go.opencensus.io/exporter/stackdriver v0.13.0/go.mod h1:z2tyTZtPmQ2HvWH4cOmVDgtY+1lomfKdbLnkJvZdc8c= contrib.go.opencensus.io/exporter/stackdriver v0.13.1 h1:RX9W6FelAqTVnBi/bRXJLXr9n18v4QkQwZYIdnNS51I= contrib.go.opencensus.io/exporter/stackdriver v0.13.1/go.mod h1:z2tyTZtPmQ2HvWH4cOmVDgtY+1lomfKdbLnkJvZdc8c= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -50,10 +45,10 @@ github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQY github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.0 h1:7NDwnnQrI1Ivk0bXLzMmuX5ozzOwteHOsAs4druW7gI= -github.com/aws/aws-sdk-go v1.30.0/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.30.1 h1:cUMxtoFvIHhScZgv17tGxw15r6rVKJHR1hsIFRx9hcA= github.com/aws/aws-sdk-go v1.30.1/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.30.4 h1:dpQgypC3rld2Uuz+/2u+0nbfmmyEWxau6v1hdAlvoc8= +github.com/aws/aws-sdk-go v1.30.4/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/caos/logging v0.0.1 h1:YSGtO2/+5OWdwilBCou50akoDHAT/OhkbrolkVlR6U0= github.com/caos/logging v0.0.1 h1:YSGtO2/+5OWdwilBCou50akoDHAT/OhkbrolkVlR6U0= github.com/caos/logging v0.0.1/go.mod h1:9LKiDE2ChuGv6CHYif/kiugrfEXu9AwDiFWSreX7Wp0= @@ -75,6 +70,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= +github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -243,6 +240,8 @@ github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= +github.com/sony/sonyflake v1.0.0 h1:MpU6Ro7tfXwgn2l5eluf9xQvQJDROTBImNCfRXn/YeM= +github.com/sony/sonyflake v1.0.0/go.mod h1:Jv3cfhf/UFtolOTTRd3q4Nl6ENqM+KfyZ5PseKfZGF4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -278,6 +277,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200403201458-baeed622b8d8 h1:fpnn/HnJONpIu6hkXi1u/7rR0NzilgWr4T0JmWkEitk= +golang.org/x/crypto v0.0.0-20200403201458-baeed622b8d8/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -328,7 +329,6 @@ golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -371,7 +371,6 @@ golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d h1:nc5K6ox/4lTFbMVSL9WRR81ixkcwXThoiF6yf+R9scA= @@ -419,11 +418,12 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56 h1:DFtSed2q3HtNuVazwVDZ4nSRS/JrZEig0gz2BY4VNrg= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200317043434-63da46f3035e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4 h1:kDtqNkeBrZb8B+atrj50B5XLHpzXXqcCdZPP/ApQ5NY= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331202046-9d5940d49312 h1:2PHG+Ia3gK1K2kjxZnSylizb//eyaMG8gDFbOG7wLV8= golang.org/x/tools v0.0.0-20200331202046-9d5940d49312/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b h1:AFZdJUT7jJYXQEC29hYH/WZkoV7+KhwxQGmdZ19yYoY= +golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -442,6 +442,8 @@ google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0 h1:jz2KixHX7EcCPiQrySzPdnYT7DbINAypCqKZ1Z7GM40= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.21.0 h1:zS+Q/CJJnVlXpXQVIz+lH0ZT2lBuT2ac7XD8Y/3w6hY= +google.golang.org/api v0.21.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -467,9 +469,10 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200317114155-1f3552e48f24/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940 h1:MRHtG0U6SnaUb+s+LhNE1qt1FQ1wlhqr5E4usBKC0uA= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200403120447-c50568487044 h1:112OPFAnKD+XtZhdffFnz17dEbiCTCKfnNQCAWmwFzA= +google.golang.org/genproto v0.0.0-20200403120447-c50568487044/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/internal/api/auth/authorization.go b/internal/api/auth/authorization.go index 5f7f31ec41..941ebf110b 100644 --- a/internal/api/auth/authorization.go +++ b/internal/api/auth/authorization.go @@ -19,11 +19,16 @@ func CheckUserAuthorization(ctx context.Context, req interface{}, token, orgID s return nil, err } + var perms []string + //TODO: Remove as soon as authentification is implemented + if CheckInternal(ctx) { + return ctx, nil + } if requiredAuthOption.Permission == authenticated { return ctx, nil } - ctx, perms, err := getUserMethodPermissions(ctx, verifier, requiredAuthOption.Permission, authConfig) + ctx, perms, err = getUserMethodPermissions(ctx, verifier, requiredAuthOption.Permission, authConfig) if err != nil { return nil, err } @@ -32,6 +37,7 @@ func CheckUserAuthorization(ctx context.Context, req interface{}, token, orgID s if err != nil { return nil, err } + return ctx, nil } diff --git a/internal/api/auth/context.go b/internal/api/auth/context.go index e0c87929e5..45e37f87fa 100644 --- a/internal/api/auth/context.go +++ b/internal/api/auth/context.go @@ -2,8 +2,11 @@ package auth import ( "context" - "github.com/caos/logging" + "github.com/caos/zitadel/internal/api" + grpc_util "github.com/caos/zitadel/internal/api/grpc" + "google.golang.org/grpc/metadata" + "strconv" ) type key int @@ -38,14 +41,21 @@ type TokenVerifier interface { } func VerifyTokenAndWriteCtxData(ctx context.Context, token, orgID string, t TokenVerifier) (_ context.Context, err error) { - userID, clientID, agentID, err := verifyAccessToken(ctx, token, t) - if err != nil { - return nil, err + var userID, projectID, clientID, agentID string + //TODO: Remove as soon an authentification is implemented + if CheckInternal(ctx) { + userID = grpc_util.GetHeader(ctx, api.ZitadelUserID) + projectID = grpc_util.GetHeader(ctx, api.ZitadelClientID) + agentID = grpc_util.GetHeader(ctx, api.ZitadelAgentID) + } else { + userID, clientID, agentID, err = verifyAccessToken(ctx, token, t) + if err != nil { + return nil, err + } + + projectID, err = t.GetProjectIDByClientID(ctx, clientID) + logging.LogWithFields("AUTH-GfAoV", "clientID", clientID).OnError(err).Warn("could not read projectid by clientid") } - - projectID, err := t.GetProjectIDByClientID(ctx, clientID) - logging.LogWithFields("AUTH-GfAoV", "clientID", clientID).OnError(err).Warn("could not read projectid by clientid") - return context.WithValue(ctx, dataKey, CtxData{UserID: userID, OrgID: orgID, ProjectID: projectID, AgentID: agentID}), nil } @@ -58,3 +68,17 @@ func GetPermissionsFromCtx(ctx context.Context) []string { ctxPermission, _ := ctx.Value(permissionsKey).([]string) return ctxPermission } + +//TODO: Remove as soon an authentification is implemented +func CheckInternal(ctx context.Context) bool { + md, ok := metadata.FromIncomingContext(ctx) + if !ok { + return false + } + v, ok := md[api.LoginKey] + if !ok { + return false + } + ok, _ = strconv.ParseBool(v[0]) + return ok +} diff --git a/internal/api/auth/context_mock.go b/internal/api/auth/context_mock.go new file mode 100644 index 0000000000..61d53c6972 --- /dev/null +++ b/internal/api/auth/context_mock.go @@ -0,0 +1,7 @@ +package auth + +import "context" + +func NewMockContext(orgID, userID string) context.Context { + return context.WithValue(nil, dataKey, CtxData{UserID: userID, OrgID: orgID}) +} diff --git a/internal/api/auth/permissions_test.go b/internal/api/auth/permissions_test.go index ba67f0d25f..fe48172bc7 100644 --- a/internal/api/auth/permissions_test.go +++ b/internal/api/auth/permissions_test.go @@ -16,7 +16,7 @@ type testVerifier struct { } func (v *testVerifier) VerifyAccessToken(ctx context.Context, token string) (string, string, string, error) { - return "", "", "", nil + return "userID", "clientID", "agentID", nil } func (v *testVerifier) ResolveGrants(ctx context.Context, sub, orgID string) ([]*Grant, error) { diff --git a/internal/api/grpc/server/middleware/auth_interceptor.go b/internal/api/grpc/server/middleware/auth_interceptor.go index fbdd42bc9b..8a2b5c3548 100644 --- a/internal/api/grpc/server/middleware/auth_interceptor.go +++ b/internal/api/grpc/server/middleware/auth_interceptor.go @@ -19,11 +19,14 @@ func AuthorizationInterceptor(verifier auth.TokenVerifier, authConfig *auth.Conf return handler(ctx, req) } - authToken := grpc_util.GetAuthorizationHeader(ctx) - if authToken == "" { - return nil, status.Error(codes.Unauthenticated, "auth header missing") + authToken := "" + //TODO: Remoce check internal as soon as authentification is implemented + if !auth.CheckInternal(ctx) { + authToken = grpc_util.GetAuthorizationHeader(ctx) + if authToken == "" { + return nil, status.Error(codes.Unauthenticated, "auth header missing") + } } - orgID := grpc_util.GetHeader(ctx, api.ZitadelOrgID) ctx, err := auth.CheckUserAuthorization(ctx, req, authToken, orgID, verifier, authConfig, authOpt) diff --git a/internal/api/header.go b/internal/api/header.go index 857a91ff3b..bbafe8dd7a 100644 --- a/internal/api/header.go +++ b/internal/api/header.go @@ -9,4 +9,9 @@ const ( Origin = "origin" ZitadelOrgID = "x-zitadel-orgid" + //TODO: Remove as soon an authentification is implemented + ZitadelUserID = "x-zitadel-userid" + ZitadelClientID = "x-zitadel-clientid" + ZitadelAgentID = "x-zitadel-agentid" + LoginKey = "x-zitadel-login" ) diff --git a/internal/eventstore/eventstore.go b/internal/eventstore/eventstore.go index 79589c3baf..724541419b 100644 --- a/internal/eventstore/eventstore.go +++ b/internal/eventstore/eventstore.go @@ -57,3 +57,7 @@ func (es *eventstore) FilterEvents(ctx context.Context, searchQuery *models.Sear } return es.repo.Filter(ctx, searchQuery) } + +func (es *eventstore) Health(ctx context.Context) error { + return es.repo.Health(ctx) +} diff --git a/internal/eventstore/health.go b/internal/eventstore/health.go deleted file mode 100644 index d21aa20f7a..0000000000 --- a/internal/eventstore/health.go +++ /dev/null @@ -1,9 +0,0 @@ -package eventstore - -import ( - "context" -) - -func (app *eventstore) Health(ctx context.Context) error { - return app.repo.Health(ctx) -} diff --git a/internal/eventstore/internal/repository/mock/repository.go b/internal/eventstore/internal/repository/mock/repository.go index 77ecb3479c..f630872fc2 100644 --- a/internal/eventstore/internal/repository/mock/repository.go +++ b/internal/eventstore/internal/repository/mock/repository.go @@ -24,11 +24,11 @@ func (m *MockRepository) ExpectFilterFail(query *models.SearchQuery, err error) } func (m *MockRepository) ExpectPush(aggregates ...*models.Aggregate) *MockRepository { - m.EXPECT().PushEvents(context.Background(), aggregates).Return(nil).MaxTimes(1) + m.EXPECT().PushAggregates(context.Background(), aggregates).Return(nil).MaxTimes(1) return m } func (m *MockRepository) ExpectPushError(err error, aggregates ...*models.Aggregate) *MockRepository { - m.EXPECT().PushEvents(context.Background(), aggregates).Return(err).MaxTimes(1) + m.EXPECT().PushAggregates(context.Background(), aggregates).Return(err).MaxTimes(1) return m } diff --git a/internal/eventstore/internal/repository/mock/repository.mock.go b/internal/eventstore/internal/repository/mock/repository.mock.go index 2dc6a82a49..f479e7aa2d 100644 --- a/internal/eventstore/internal/repository/mock/repository.mock.go +++ b/internal/eventstore/internal/repository/mock/repository.mock.go @@ -81,17 +81,3 @@ func (mr *MockRepositoryMockRecorder) PushAggregates(arg0 interface{}, arg1 ...i varargs := append([]interface{}{arg0}, arg1...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PushAggregates", reflect.TypeOf((*MockRepository)(nil).PushAggregates), varargs...) } - -// PushEvents mocks base method -func (m *MockRepository) PushEvents(arg0 context.Context, arg1 [][]*models.Event) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PushEvents", arg0, arg1) - ret0, _ := ret[0].(error) - return ret0 -} - -// PushEvents indicates an expected call of PushEvents -func (mr *MockRepositoryMockRecorder) PushEvents(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PushEvents", reflect.TypeOf((*MockRepository)(nil).PushEvents), arg0, arg1) -} diff --git a/internal/eventstore/internal/repository/sql/db_mock_test.go b/internal/eventstore/internal/repository/sql/db_mock_test.go index 2cdbd1179e..f3ca1b4af7 100644 --- a/internal/eventstore/internal/repository/sql/db_mock_test.go +++ b/internal/eventstore/internal/repository/sql/db_mock_test.go @@ -17,10 +17,11 @@ const ( ) var ( + eventColumns = []string{"id", "creation_date", "event_type", "event_sequence", "previous_sequence", "event_data", "editor_service", "editor_user", "resource_owner", "aggregate_type", "aggregate_id", "aggregate_version"} expectedFilterEventsLimitFormat = regexp.MustCompile(selectEscaped + ` ORDER BY event_sequence LIMIT \$1`).String() expectedFilterEventsDescFormat = regexp.MustCompile(selectEscaped + ` ORDER BY event_sequence DESC`).String() expectedFilterEventsAggregateIDLimit = regexp.MustCompile(selectEscaped + ` WHERE aggregate_id = \$1 ORDER BY event_sequence LIMIT \$2`).String() - expectedFilterEventsAggregateIDTypeLimit = regexp.MustCompile(selectEscaped + ` WHERE aggregate_id = \$1 AND aggregate_type IN \(\$2\) ORDER BY event_sequence LIMIT \$3`).String() + expectedFilterEventsAggregateIDTypeLimit = regexp.MustCompile(selectEscaped + ` WHERE aggregate_id = \$1 AND aggregate_type = ANY\(\$2\) ORDER BY event_sequence LIMIT \$3`).String() expectedGetAllEvents = regexp.MustCompile(selectEscaped + ` ORDER BY event_sequence`).String() expectedInsertStatement = regexp.MustCompile(`insert into eventstore\.events ` + @@ -31,8 +32,8 @@ var ( `ELSE NULL ` + `end ` + `where \(` + - `\(select count\(id\) from eventstore\.events where event_sequence >= \$14 AND aggregate_type = \$15 AND aggregate_id = \$16\) = 1 OR ` + - `\(\(select count\(id\) from eventstore\.events where aggregate_type = \$17 and aggregate_id = \$18\) = 0 AND \$19 = 0\)\) RETURNING id, event_sequence, creation_date`).String() + `\(select count\(id\) from eventstore\.events where event_sequence >= COALESCE\(\$14, 0\) AND aggregate_type = \$15 AND aggregate_id = \$16\) = 1 OR ` + + `\(\(select count\(id\) from eventstore\.events where aggregate_type = \$17 and aggregate_id = \$18\) = 0 AND COALESCE\(\$19, 0\) = 0\)\) RETURNING id, event_sequence, creation_date`).String() ) type dbMock struct { @@ -107,8 +108,8 @@ func (db *dbMock) expectInsertEvent(e *models.Event, returnedID string, returned e.Type, e.AggregateType, e.AggregateID, e.AggregateVersion, sqlmock.AnyArg(), e.Data, e.EditorUser, e.EditorService, e.ResourceOwner, e.AggregateType, e.AggregateID, e.AggregateType, e.AggregateID, - e.PreviousSequence, e.AggregateType, e.AggregateID, - e.AggregateType, e.AggregateID, e.PreviousSequence, + Sequence(e.PreviousSequence), e.AggregateType, e.AggregateID, + e.AggregateType, e.AggregateID, Sequence(e.PreviousSequence), ). WillReturnRows( sqlmock.NewRows([]string{"id", "event_sequence", "creation_date"}). @@ -124,8 +125,8 @@ func (db *dbMock) expectInsertEventError(e *models.Event) *dbMock { e.Type, e.AggregateType, e.AggregateID, e.AggregateVersion, sqlmock.AnyArg(), e.Data, e.EditorUser, e.EditorService, e.ResourceOwner, e.AggregateType, e.AggregateID, e.AggregateType, e.AggregateID, - e.PreviousSequence, e.AggregateType, e.AggregateID, - e.AggregateType, e.AggregateID, e.PreviousSequence, + Sequence(e.PreviousSequence), e.AggregateType, e.AggregateID, + e.AggregateType, e.AggregateID, Sequence(e.PreviousSequence), ). WillReturnError(sql.ErrTxDone) @@ -133,9 +134,9 @@ func (db *dbMock) expectInsertEventError(e *models.Event) *dbMock { } func (db *dbMock) expectFilterEventsLimit(limit uint64, eventCount int) *dbMock { - rows := sqlmock.NewRows([]string{"id", "creation_date"}) + rows := sqlmock.NewRows(eventColumns) for i := 0; i < eventCount; i++ { - rows.AddRow(fmt.Sprint("event", i), time.Now()) + rows.AddRow(fmt.Sprint("event", i), time.Now(), "eventType", Sequence(i+1), Sequence(i), nil, "svc", "hodor", "org", "aggType", "aggID", "v1.0.0") } db.mock.ExpectQuery(expectedFilterEventsLimitFormat). WithArgs(limit). @@ -144,9 +145,9 @@ func (db *dbMock) expectFilterEventsLimit(limit uint64, eventCount int) *dbMock } func (db *dbMock) expectFilterEventsDesc(eventCount int) *dbMock { - rows := sqlmock.NewRows([]string{"id", "creation_date"}) + rows := sqlmock.NewRows(eventColumns) for i := eventCount; i > 0; i-- { - rows.AddRow(fmt.Sprint("event", i), time.Now()) + rows.AddRow(fmt.Sprint("event", i), time.Now(), "eventType", Sequence(i+1), Sequence(i), nil, "svc", "hodor", "org", "aggType", "aggID", "v1.0.0") } db.mock.ExpectQuery(expectedFilterEventsDescFormat). WillReturnRows(rows) @@ -154,9 +155,9 @@ func (db *dbMock) expectFilterEventsDesc(eventCount int) *dbMock { } func (db *dbMock) expectFilterEventsAggregateIDLimit(aggregateID string, limit uint64) *dbMock { - rows := sqlmock.NewRows([]string{"id", "creation_date"}) + rows := sqlmock.NewRows(eventColumns) for i := limit; i > 0; i-- { - rows.AddRow(fmt.Sprint("event", i), time.Now()) + rows.AddRow(fmt.Sprint("event", i), time.Now(), "eventType", Sequence(i+1), Sequence(i), nil, "svc", "hodor", "org", "aggType", "aggID", "v1.0.0") } db.mock.ExpectQuery(expectedFilterEventsAggregateIDLimit). WithArgs(aggregateID, limit). @@ -165,9 +166,9 @@ func (db *dbMock) expectFilterEventsAggregateIDLimit(aggregateID string, limit u } func (db *dbMock) expectFilterEventsAggregateIDTypeLimit(aggregateID, aggregateType string, limit uint64) *dbMock { - rows := sqlmock.NewRows([]string{"id", "creation_date"}) + rows := sqlmock.NewRows(eventColumns) for i := limit; i > 0; i-- { - rows.AddRow(fmt.Sprint("event", i), time.Now()) + rows.AddRow(fmt.Sprint("event", i), time.Now(), "eventType", Sequence(i+1), Sequence(i), nil, "svc", "hodor", "org", "aggType", "aggID", "v1.0.0") } db.mock.ExpectQuery(expectedFilterEventsAggregateIDTypeLimit). WithArgs(aggregateID, pq.Array([]string{aggregateType}), limit). diff --git a/internal/eventstore/internal/repository/sql/filter.go b/internal/eventstore/internal/repository/sql/filter.go index f2d25d9395..20ba160b96 100644 --- a/internal/eventstore/internal/repository/sql/filter.go +++ b/internal/eventstore/internal/repository/sql/filter.go @@ -57,14 +57,14 @@ func (db *SQL) Filter(ctx context.Context, searchQuery *es_models.SearchQuery) ( for rows.Next() { event := new(models.Event) - events = append(events, event) + var previousSequence Sequence - rows.Scan( + err = rows.Scan( &event.ID, &event.CreationDate, &event.Type, &event.Sequence, - &event.PreviousSequence, + &previousSequence, &event.Data, &event.EditorService, &event.EditorUser, @@ -73,6 +73,14 @@ func (db *SQL) Filter(ctx context.Context, searchQuery *es_models.SearchQuery) ( &event.AggregateID, &event.AggregateVersion, ) + + if err != nil { + logging.Log("SQL-wHNPo").WithError(err).Warn("unable to scan row") + return nil, errors.ThrowInternal(err, "SQL-BfZwF", "unable to scan row") + } + + event.PreviousSequence = uint64(previousSequence) + events = append(events, event) } return events, nil @@ -98,7 +106,7 @@ func prepareWhere(searchQuery *es_models.SearchQuery) (clause string, values []i for i, filter := range searchQuery.Filters { value := filter.GetValue() switch value.(type) { - case []bool, []float64, []int64, []string, *[]bool, *[]float64, *[]int64, *[]string: + case []bool, []float64, []int64, []string, []models.AggregateType, *[]bool, *[]float64, *[]int64, *[]string, *[]models.AggregateType: value = pq.Array(value) } @@ -118,7 +126,7 @@ func getCondition(filter *es_models.Filter) string { func prepareConditionFormat(operation es_models.Operation) string { if operation == es_models.Operation_In { - return "%s %s (?)" + return "%s %s ANY(?)" } return "%s %s ?" } @@ -133,9 +141,9 @@ func getField(field es_models.Field) string { return "event_sequence" case es_models.Field_ResourceOwner: return "resource_owner" - case es_models.Field_ModifierService: + case es_models.Field_EditorService: return "editor_service" - case es_models.Field_ModifierUser: + case es_models.Field_EditorUser: return "editor_user" } return "" @@ -143,14 +151,12 @@ func getField(field es_models.Field) string { func getOperation(operation es_models.Operation) string { switch operation { - case es_models.Operation_Equals: + case es_models.Operation_Equals, es_models.Operation_In: return "=" case es_models.Operation_Greater: return ">" case es_models.Operation_Less: return "<" - case es_models.Operation_In: - return "IN" } return "" } diff --git a/internal/eventstore/internal/repository/sql/filter_test.go b/internal/eventstore/internal/repository/sql/filter_test.go index ccaabb4748..a00d273924 100644 --- a/internal/eventstore/internal/repository/sql/filter_test.go +++ b/internal/eventstore/internal/repository/sql/filter_test.go @@ -105,7 +105,7 @@ func TestSQL_Filter(t *testing.T) { } events, err := sql.Filter(context.Background(), tt.args.searchQuery) if (err != nil) != tt.wantErr { - t.Errorf("SQL.UnlockAggregates() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("SQL.Filter() error = %v, wantErr %v", err, tt.wantErr) } if tt.eventsLen != 0 && len(events) != tt.eventsLen { t.Errorf("events has wrong length got: %d want %d", len(events), tt.eventsLen) @@ -142,7 +142,7 @@ func Test_getCondition(t *testing.T) { args: args{ filter: es_models.NewFilter(es_models.Field_AggregateType, []string{"a", "b"}, es_models.Operation_In), }, - want: "aggregate_type IN (?)", + want: "aggregate_type = ANY(?)", }, } for _, tt := range tests { diff --git a/internal/eventstore/internal/repository/sql/push.go b/internal/eventstore/internal/repository/sql/push.go index a2598e2041..b0840b4307 100644 --- a/internal/eventstore/internal/repository/sql/push.go +++ b/internal/eventstore/internal/repository/sql/push.go @@ -20,9 +20,9 @@ const insertStmt = "insert into eventstore.events " + "end " + "where (" + // exactly one event of requested aggregate must have a >= sequence (last inserted event) - "(select count(id) from eventstore.events where event_sequence >= $14 AND aggregate_type = $15 AND aggregate_id = $16) = 1 OR " + + "(select count(id) from eventstore.events where event_sequence >= COALESCE($14, 0) AND aggregate_type = $15 AND aggregate_id = $16) = 1 OR " + // previous sequence = 0, no events must exist for the requested aggregate - "((select count(id) from eventstore.events where aggregate_type = $17 and aggregate_id = $18) = 0 AND $19 = 0)) " + + "((select count(id) from eventstore.events where aggregate_type = $17 and aggregate_id = $18) = 0 AND COALESCE($19, 0) = 0)) " + "RETURNING id, event_sequence, creation_date" func (db *SQL) PushAggregates(ctx context.Context, aggregates ...*models.Aggregate) (err error) { @@ -52,10 +52,8 @@ func (db *SQL) PushAggregates(ctx context.Context, aggregates ...*models.Aggrega } func insertEvents(stmt *sql.Stmt, events []*models.Event) error { - previousSequence := events[0].PreviousSequence + currentSequence := Sequence(events[0].PreviousSequence) for _, event := range events { - event.PreviousSequence = previousSequence - if event.Data == nil || len(event.Data) == 0 { //json decoder failes with EOF if json text is empty event.Data = []byte("{}") @@ -64,8 +62,8 @@ func insertEvents(stmt *sql.Stmt, events []*models.Event) error { rows, err := stmt.Query(event.Type, event.AggregateType, event.AggregateID, event.AggregateVersion, event.CreationDate, event.Data, event.EditorUser, event.EditorService, event.ResourceOwner, event.AggregateType, event.AggregateID, event.AggregateType, event.AggregateID, - event.PreviousSequence, event.AggregateType, event.AggregateID, - event.AggregateType, event.AggregateID, event.PreviousSequence) + currentSequence, event.AggregateType, event.AggregateID, + event.AggregateType, event.AggregateID, currentSequence) if err != nil { logging.Log("SQL-EXA0q").WithError(err).Info("query failed") @@ -76,7 +74,7 @@ func insertEvents(stmt *sql.Stmt, events []*models.Event) error { rowInserted := false for rows.Next() { rowInserted = true - err = rows.Scan(&event.ID, &event.Sequence, &event.CreationDate) + err = rows.Scan(&event.ID, ¤tSequence, &event.CreationDate) logging.Log("SQL-rAvLD").OnError(err).Info("unable to scan result into event") } @@ -84,7 +82,7 @@ func insertEvents(stmt *sql.Stmt, events []*models.Event) error { return errors.ThrowAlreadyExists(nil, "SQL-GKcAa", "wrong sequence") } - previousSequence = event.Sequence + event.Sequence = uint64(currentSequence) } return nil diff --git a/internal/eventstore/internal/repository/sql/sequence.go b/internal/eventstore/internal/repository/sql/sequence.go new file mode 100644 index 0000000000..4ab62ccf3c --- /dev/null +++ b/internal/eventstore/internal/repository/sql/sequence.go @@ -0,0 +1,27 @@ +package sql + +import ( + "database/sql/driver" +) + +// Sequence represents a number that may be null. +// Sequence implements the sql.Scanner interface so +type Sequence uint64 + +// Scan implements the Scanner interface. +func (n *Sequence) Scan(value interface{}) error { + if value == nil { + *n = 0 + return nil + } + *n = Sequence(value.(int64)) + return nil +} + +// Value implements the driver Valuer interface. +func (seq Sequence) Value() (driver.Value, error) { + if seq == 0 { + return nil, nil + } + return int64(seq), nil +} diff --git a/internal/eventstore/models/field.go b/internal/eventstore/models/field.go index 84d9d1935a..7878e9e966 100644 --- a/internal/eventstore/models/field.go +++ b/internal/eventstore/models/field.go @@ -7,6 +7,6 @@ const ( Field_AggregateID Field_LatestSequence Field_ResourceOwner - Field_ModifierService - Field_ModifierUser + Field_EditorService + Field_EditorUser ) diff --git a/internal/eventstore/models/search_query.go b/internal/eventstore/models/search_query.go index 8f87fa3319..aecad015f6 100644 --- a/internal/eventstore/models/search_query.go +++ b/internal/eventstore/models/search_query.go @@ -33,7 +33,7 @@ func (q *SearchQuery) AggregateIDFilter(id string) *SearchQuery { return q.setFilter(NewFilter(Field_AggregateID, id, Operation_Equals)) } -func (q *SearchQuery) AggregateTypeFilter(types ...string) *SearchQuery { +func (q *SearchQuery) AggregateTypeFilter(types ...AggregateType) *SearchQuery { return q.setFilter(NewFilter(Field_AggregateType, types, Operation_In)) } diff --git a/internal/management/auth/token_verifier.go b/internal/management/auth/token_verifier.go new file mode 100644 index 0000000000..84ba0abe38 --- /dev/null +++ b/internal/management/auth/token_verifier.go @@ -0,0 +1,25 @@ +package auth + +import ( + "context" + "github.com/caos/zitadel/internal/api/auth" +) + +type TokenVerifier struct { +} + +func Start() (v *TokenVerifier) { + return new(TokenVerifier) +} + +func (v *TokenVerifier) VerifyAccessToken(ctx context.Context, token string) (string, string, string, error) { + return "", "", "", nil +} + +func (v *TokenVerifier) ResolveGrants(ctx context.Context, userID, orgID string) ([]*auth.Grant, error) { + return nil, nil +} + +func (v *TokenVerifier) GetProjectIDByClientID(ctx context.Context, clientID string) (string, error) { + return "", nil +} diff --git a/internal/management/config.go b/internal/management/config.go deleted file mode 100644 index 9b95a5228b..0000000000 --- a/internal/management/config.go +++ /dev/null @@ -1,3 +0,0 @@ -package management - -type Config struct{} diff --git a/internal/management/repository/eventsourcing/project.go b/internal/management/repository/eventsourcing/project.go new file mode 100644 index 0000000000..5b3f75ab3a --- /dev/null +++ b/internal/management/repository/eventsourcing/project.go @@ -0,0 +1,73 @@ +package eventsourcing + +import ( + "context" + proj_model "github.com/caos/zitadel/internal/project/model" + proj_event "github.com/caos/zitadel/internal/project/repository/eventsourcing" +) + +type ProjectRepo struct { + ProjectEvents *proj_event.ProjectEventstore + //view *view.View +} + +func (repo *ProjectRepo) ProjectByID(ctx context.Context, id string) (project *proj_model.Project, err error) { + //viewProject, err := repo.view.ProjectByID(id) + //if err != nil && !caos_errs.IsNotFound(err) { + // return nil, err + //} + //if viewProject != nil { + // project = org_view.ProjectToModel(viewProject) + //} else { + project = proj_model.NewProject(id) + //} + return repo.ProjectEvents.ProjectByID(ctx, project) +} + +func (repo *ProjectRepo) CreateProject(ctx context.Context, name string) (*proj_model.Project, error) { + project := &proj_model.Project{Name: name} + project, err := repo.ProjectEvents.CreateProject(ctx, project) + if err != nil { + return nil, err + } + return project, nil +} + +func (repo *ProjectRepo) UpdateProject(ctx context.Context, project *proj_model.Project) (*proj_model.Project, error) { + existingProject, err := repo.ProjectByID(ctx, project.ID) + if err != nil { + return nil, err + } + + project, err = repo.ProjectEvents.UpdateProject(ctx, existingProject, project) + if err != nil { + return nil, err + } + return project, err +} + +func (repo *ProjectRepo) DeactivateProject(ctx context.Context, id string) (*proj_model.Project, error) { + project, err := repo.ProjectByID(ctx, id) + if err != nil { + return nil, err + } + + project, err = repo.ProjectEvents.DeactivateProject(ctx, project) + if err != nil { + return nil, err + } + return project, err +} + +func (repo *ProjectRepo) ReactivateProject(ctx context.Context, id string) (*proj_model.Project, error) { + project, err := repo.ProjectByID(ctx, id) + if err != nil { + return nil, err + } + + project, err = repo.ProjectEvents.ReactivateProject(ctx, project) + if err != nil { + return nil, err + } + return project, err +} diff --git a/internal/management/repository/eventsourcing/repository.go b/internal/management/repository/eventsourcing/repository.go new file mode 100644 index 0000000000..331f190941 --- /dev/null +++ b/internal/management/repository/eventsourcing/repository.go @@ -0,0 +1,48 @@ +package eventsourcing + +import ( + "context" + es_int "github.com/caos/zitadel/internal/eventstore" + es_proj "github.com/caos/zitadel/internal/project/repository/eventsourcing" +) + +type Config struct { + Eventstore es_int.Config + //View view.ViewConfig + //Spooler spooler.SpoolerConfig +} + +type EsRepository struct { + //spooler *es_spooler.Spooler + ProjectRepo +} + +func Start(conf Config) (*EsRepository, error) { + es, err := es_int.Start(conf.Eventstore) + if err != nil { + return nil, err + } + + //view, sql, err := mgmt_view.StartView(conf.View) + //if err != nil { + // return nil, err + //} + + //conf.Spooler.View = view + //conf.Spooler.EsClient = es.Client + //conf.Spooler.SQL = sql + //spool := spooler.StartSpooler(conf.Spooler) + + project, err := es_proj.StartProject(es_proj.ProjectConfig{Eventstore: es}) + if err != nil { + return nil, err + } + + return &EsRepository{ + ProjectRepo{project}, + }, nil +} + +func (repo *EsRepository) Health() error { + return repo.ProjectEvents.Health(context.Background()) +} diff --git a/internal/management/repository/project.go b/internal/management/repository/project.go new file mode 100644 index 0000000000..896609a4a2 --- /dev/null +++ b/internal/management/repository/project.go @@ -0,0 +1,14 @@ +package repository + +import ( + "context" + "github.com/caos/zitadel/internal/project/model" +) + +type ProjectRepository interface { + ProjectByID(ctx context.Context, id string) (*model.Project, error) + CreateProject(ctx context.Context, name string) (*model.Project, error) + UpdateProject(ctx context.Context, project *model.Project) (*model.Project, error) + DeactivateProject(ctx context.Context, id string) (*model.Project, error) + ReactivateProject(ctx context.Context, id string) (*model.Project, error) +} diff --git a/internal/management/repository/repository.go b/internal/management/repository/repository.go new file mode 100644 index 0000000000..97c3a63f5c --- /dev/null +++ b/internal/management/repository/repository.go @@ -0,0 +1,6 @@ +package repository + +type Repository interface { + Health() error + ProjectRepository +} diff --git a/internal/project/model/project.go b/internal/project/model/project.go new file mode 100644 index 0000000000..6da7280558 --- /dev/null +++ b/internal/project/model/project.go @@ -0,0 +1,35 @@ +package model + +import ( + es_models "github.com/caos/zitadel/internal/eventstore/models" + in_model "github.com/caos/zitadel/internal/model" +) + +type Project struct { + es_models.ObjectRoot + + State ProjectState + Name string +} + +type ProjectState in_model.Enum + +var states = []string{"Active", "Inactive"} + +func NewProject(id string) *Project { + return &Project{ObjectRoot: es_models.ObjectRoot{ID: id}, State: Active} +} + +func (p *Project) IsActive() bool { + if p.State == Active { + return true + } + return false +} + +func (p *Project) IsValid() bool { + if p.Name == "" { + return false + } + return true +} diff --git a/internal/project/model/state.go b/internal/project/model/state.go new file mode 100644 index 0000000000..5849aaf180 --- /dev/null +++ b/internal/project/model/state.go @@ -0,0 +1,23 @@ +package model + +type state int32 + +func (s state) String() string { + return states[s] +} + +const ( + Active state = iota + Inactive +) + +func ProjectStateToInt(s ProjectState) int32 { + if s == nil { + return 0 + } + return int32(s.(state)) +} + +func ProjectStateFromInt(index int32) ProjectState { + return state(index) +} diff --git a/internal/project/model/types.go b/internal/project/model/types.go new file mode 100644 index 0000000000..5da86f5f6a --- /dev/null +++ b/internal/project/model/types.go @@ -0,0 +1,37 @@ +package model + +import "github.com/caos/zitadel/internal/eventstore/models" + +const ( + ProjectAggregate models.AggregateType = "project" + + ProjectAdded models.EventType = "project.added" + ProjectChanged models.EventType = "project.changed" + ProjectDeactivated models.EventType = "project.deactivated" + ProjectReactivated models.EventType = "project.reactivated" + + ProjectMemberAdded models.EventType = "project.member.added" + ProjectMemberChanged models.EventType = "project.member.changed" + ProjectMemberRemoved models.EventType = "project.member.removed" + + ProjectRoleAdded models.EventType = "project.role.added" + ProjectRoleRemoved models.EventType = "project.role.removed" + + ProjectGrantAdded models.EventType = "project.grant.added" + ProjectGrantChanged models.EventType = "project.grant.changed" + ProjectGrantDeactivated models.EventType = "project.grant.deactivated" + ProjectGrantReactivated models.EventType = "project.grant.reactivated" + + GrantMemberAdded models.EventType = "project.grant.member.added" + GrantMemberChanged models.EventType = "project.grant.member.changed" + GrantMemberRemoved models.EventType = "project.grant.member.removed" + + ApplicationAdded models.EventType = "project.application.added" + ApplicationChanged models.EventType = "project.application.changed" + ApplicationDeactivated models.EventType = "project.application.deactivated" + ApplicationReactivated models.EventType = "project.application.reactivated" + + OIDCConfigAdded models.EventType = "project.application.config.oidc.added" + OIDCConfigChanged models.EventType = "project.application.config.oidc.changed" + OIDCConfigSecretChanged models.EventType = "project.application.config.oidc.secret.changed" +) diff --git a/internal/project/repository/eventsourcing/events.go b/internal/project/repository/eventsourcing/events.go new file mode 100644 index 0000000000..8afd4d842d --- /dev/null +++ b/internal/project/repository/eventsourcing/events.go @@ -0,0 +1,55 @@ +package eventsourcing + +import ( + "encoding/json" + "github.com/caos/logging" + es_models "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" +) + +func ProjectFromEvents(project *Project, events ...*es_models.Event) (*Project, error) { + if project == nil { + project = &Project{} + } + + return project, project.AppendEvents(events...) +} + +func (p *Project) AppendEvents(events ...*es_models.Event) error { + for _, event := range events { + if err := p.AppendEvent(event); err != nil { + return err + } + } + return nil +} + +func (p *Project) AppendEvent(event *es_models.Event) error { + p.ObjectRoot.AppendEvent(event) + + switch event.Type { + case model.ProjectAdded, model.ProjectChanged: + if err := json.Unmarshal(event.Data, p); err != nil { + logging.Log("EVEN-idl93").WithError(err).Error("could not unmarshal event data") + return err + } + p.State = model.ProjectStateToInt(model.Active) + return nil + case model.ProjectDeactivated: + return p.appendDeactivatedEvent() + case model.ProjectReactivated: + return p.appendReactivatedEvent() + } + + return nil +} + +func (p *Project) appendDeactivatedEvent() error { + p.State = model.ProjectStateToInt(model.Inactive) + return nil +} + +func (p *Project) appendReactivatedEvent() error { + p.State = model.ProjectStateToInt(model.Active) + return nil +} diff --git a/internal/project/repository/eventsourcing/events_test.go b/internal/project/repository/eventsourcing/events_test.go new file mode 100644 index 0000000000..f95a11b69a --- /dev/null +++ b/internal/project/repository/eventsourcing/events_test.go @@ -0,0 +1,169 @@ +package eventsourcing + +import ( + "encoding/json" + es_models "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" + "testing" +) + +func TestProjectFromEvents(t *testing.T) { + type args struct { + event []*es_models.Event + project *Project + } + tests := []struct { + name string + args args + result *Project + }{ + { + name: "project from events, ok", + args: args{ + event: []*es_models.Event{ + &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectAdded}, + }, + project: &Project{Name: "ProjectName"}, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Active), Name: "ProjectName"}, + }, + { + name: "project from events, nil project", + args: args{ + event: []*es_models.Event{ + &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectAdded}, + }, + project: nil, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Active)}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.args.project != nil { + data, _ := json.Marshal(tt.args.project) + tt.args.event[0].Data = data + } + result, _ := ProjectFromEvents(tt.args.project, tt.args.event...) + if result.Name != tt.result.Name { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.result.Name, result.Name) + } + }) + } +} + +func TestAppendEvent(t *testing.T) { + type args struct { + event *es_models.Event + project *Project + } + tests := []struct { + name string + args args + result *Project + }{ + { + name: "append added event", + args: args{ + event: &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectAdded}, + project: &Project{Name: "ProjectName"}, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Active), Name: "ProjectName"}, + }, + { + name: "append change event", + args: args{ + event: &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectChanged}, + project: &Project{Name: "ProjectName"}, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Active), Name: "ProjectName"}, + }, + { + name: "append deactivate event", + args: args{ + event: &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectDeactivated}, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Inactive)}, + }, + { + name: "append reactivate event", + args: args{ + event: &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectReactivated}, + }, + result: &Project{ObjectRoot: es_models.ObjectRoot{ID: "ID"}, State: int32(model.Active)}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.args.project != nil { + data, _ := json.Marshal(tt.args.project) + tt.args.event.Data = data + } + result := &Project{} + result.AppendEvent(tt.args.event) + if result.State != tt.result.State { + t.Errorf("got wrong result state: expected: %v, actual: %v ", tt.result.State, result.State) + } + if result.Name != tt.result.Name { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.result.Name, result.Name) + } + if result.ObjectRoot.ID != tt.result.ObjectRoot.ID { + t.Errorf("got wrong result id: expected: %v, actual: %v ", tt.result.ObjectRoot.ID, result.ObjectRoot.ID) + } + }) + } +} + +func TestAppendDeactivatedEvent(t *testing.T) { + type args struct { + project *Project + } + tests := []struct { + name string + args args + result *Project + }{ + { + name: "append reactivate event", + args: args{ + project: &Project{}, + }, + result: &Project{State: int32(model.Inactive)}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.args.project.appendDeactivatedEvent() + if tt.args.project.State != tt.result.State { + t.Errorf("got wrong result: expected: %v, actual: %v ", tt.result, tt.args.project) + } + }) + } +} + +func TestAppendReactivatedEvent(t *testing.T) { + type args struct { + project *Project + } + tests := []struct { + name string + args args + result *Project + }{ + { + name: "append reactivate event", + args: args{ + project: &Project{}, + }, + result: &Project{State: int32(model.Active)}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.args.project.appendReactivatedEvent() + if tt.args.project.State != tt.result.State { + t.Errorf("got wrong result: expected: %v, actual: %v ", tt.result, tt.args.project) + } + }) + } +} diff --git a/internal/project/repository/eventsourcing/eventstore.go b/internal/project/repository/eventsourcing/eventstore.go new file mode 100644 index 0000000000..ae395f091a --- /dev/null +++ b/internal/project/repository/eventsourcing/eventstore.go @@ -0,0 +1,110 @@ +package eventsourcing + +import ( + "context" + caos_errs "github.com/caos/zitadel/internal/errors" + es_int "github.com/caos/zitadel/internal/eventstore" + proj_model "github.com/caos/zitadel/internal/project/model" +) + +type ProjectEventstore struct { + es_int.Eventstore +} + +type ProjectConfig struct { + es_int.Eventstore +} + +func StartProject(conf ProjectConfig) (*ProjectEventstore, error) { + return &ProjectEventstore{Eventstore: conf.Eventstore}, nil +} + +func (es *ProjectEventstore) ProjectByID(ctx context.Context, project *proj_model.Project) (*proj_model.Project, error) { + filter, err := ProjectByIDQuery(project.ID, project.Sequence) + if err != nil { + return nil, err + } + events, err := es.Eventstore.FilterEvents(ctx, filter) + if err != nil { + return nil, err + } + if len(events) == 0 { + return nil, caos_errs.ThrowNotFound(nil, "EVENT-8due3", "Could not find project events") + } + foundProject, err := ProjectFromEvents(nil, events...) + if err != nil { + return nil, err + } + return ProjectToModel(foundProject), nil +} + +func (es *ProjectEventstore) CreateProject(ctx context.Context, project *proj_model.Project) (*proj_model.Project, error) { + if !project.IsValid() { + return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-9dk45", "Name is required") + } + project.State = proj_model.Active + repoProject := ProjectFromModel(project) + projectAggregate, err := ProjectCreateAggregate(ctx, es.Eventstore.AggregateCreator(), repoProject) + if err != nil { + return nil, err + } + err = es.PushAggregates(ctx, projectAggregate) + if err != nil { + return nil, err + } + + repoProject.AppendEvents(projectAggregate.Events...) + return ProjectToModel(repoProject), nil +} + +func (es *ProjectEventstore) UpdateProject(ctx context.Context, existing *proj_model.Project, new *proj_model.Project) (*proj_model.Project, error) { + if !new.IsValid() { + return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-9dk45", "Name is required") + } + repoExisting := ProjectFromModel(existing) + repoNew := ProjectFromModel(new) + projectAggregate, err := ProjectUpdateAggregate(ctx, es.AggregateCreator(), repoExisting, repoNew) + if err != nil { + return nil, err + } + err = es.PushAggregates(ctx, projectAggregate) + if err != nil { + return nil, err + } + repoExisting.AppendEvents(projectAggregate.Events...) + return ProjectToModel(repoExisting), nil +} + +func (es *ProjectEventstore) DeactivateProject(ctx context.Context, existing *proj_model.Project) (*proj_model.Project, error) { + if !existing.IsActive() { + return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-die45", "project must be active") + } + repoExisting := ProjectFromModel(existing) + projectAggregate, err := ProjectDeactivateAggregate(ctx, es.AggregateCreator(), repoExisting) + if err != nil { + return nil, err + } + err = es.PushAggregates(ctx, projectAggregate) + if err != nil { + return nil, err + } + repoExisting.AppendEvents(projectAggregate.Events...) + return ProjectToModel(repoExisting), nil +} + +func (es *ProjectEventstore) ReactivateProject(ctx context.Context, existing *proj_model.Project) (*proj_model.Project, error) { + if existing.IsActive() { + return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-die45", "project must be inactive") + } + repoExisting := ProjectFromModel(existing) + projectAggregate, err := ProjectReactivateAggregate(ctx, es.AggregateCreator(), repoExisting) + if err != nil { + return nil, err + } + err = es.PushAggregates(ctx, projectAggregate) + if err != nil { + return nil, err + } + repoExisting.AppendEvents(projectAggregate.Events...) + return ProjectToModel(repoExisting), nil +} diff --git a/internal/project/repository/eventsourcing/eventstore_mock.go b/internal/project/repository/eventsourcing/eventstore_mock.go new file mode 100644 index 0000000000..5ef4eeb7a5 --- /dev/null +++ b/internal/project/repository/eventsourcing/eventstore_mock.go @@ -0,0 +1,33 @@ +package eventsourcing + +import ( + "encoding/json" + "github.com/caos/zitadel/internal/eventstore/mock" + es_models "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" + "github.com/golang/mock/gomock" +) + +func GetMockProjectByIDOK(ctrl *gomock.Controller) *ProjectEventstore { + data, _ := json.Marshal(Project{Name: "Name"}) + events := []*es_models.Event{ + &es_models.Event{AggregateID: "ID", Sequence: 1, Type: model.ProjectAdded, Data: data}, + } + mockEs := mock.NewMockEventstore(ctrl) + mockEs.EXPECT().FilterEvents(gomock.Any(), gomock.Any()).Return(events, nil) + return &ProjectEventstore{Eventstore: mockEs} +} + +func GetMockProjectByIDNoEvents(ctrl *gomock.Controller) *ProjectEventstore { + events := []*es_models.Event{} + mockEs := mock.NewMockEventstore(ctrl) + mockEs.EXPECT().FilterEvents(gomock.Any(), gomock.Any()).Return(events, nil) + return &ProjectEventstore{Eventstore: mockEs} +} + +func GetMockManipulateProject(ctrl *gomock.Controller) *ProjectEventstore { + mockEs := mock.NewMockEventstore(ctrl) + mockEs.EXPECT().AggregateCreator().Return(es_models.NewAggregateCreator("TEST")) + mockEs.EXPECT().PushAggregates(gomock.Any(), gomock.Any()).Return(nil) + return &ProjectEventstore{Eventstore: mockEs} +} diff --git a/internal/project/repository/eventsourcing/eventstore_test.go b/internal/project/repository/eventsourcing/eventstore_test.go new file mode 100644 index 0000000000..23b6f8b298 --- /dev/null +++ b/internal/project/repository/eventsourcing/eventstore_test.go @@ -0,0 +1,311 @@ +package eventsourcing + +import ( + "context" + "github.com/caos/zitadel/internal/api/auth" + caos_errs "github.com/caos/zitadel/internal/errors" + es_models "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" + "github.com/golang/mock/gomock" + "testing" +) + +func TestProjectByID(t *testing.T) { + ctrl := gomock.NewController(t) + type args struct { + es *ProjectEventstore + project *model.Project + } + type res struct { + project *model.Project + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project from events, ok", + args: args{ + es: GetMockProjectByIDOK(ctrl), + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}}, + }, + res: res{ + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}}, + }, + }, + { + name: "project from events, no events", + args: args{ + es: GetMockProjectByIDNoEvents(ctrl), + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsNotFound, + }, + }, + { + name: "project from events, no id", + args: args{ + es: GetMockProjectByIDNoEvents(ctrl), + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "", Sequence: 1}}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := tt.args.es.ProjectByID(nil, tt.args.project) + + if !tt.res.wantErr && result.ID != tt.res.project.ID { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.project.ID, result.ID) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestCreateProject(t *testing.T) { + ctrl := gomock.NewController(t) + type args struct { + es *ProjectEventstore + ctx context.Context + project *model.Project + } + type res struct { + project *model.Project + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project from events, ok", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name"}, + }, + res: res{ + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name"}, + }, + }, + { + name: "create project no name", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := tt.args.es.CreateProject(tt.args.ctx, tt.args.project) + + if !tt.res.wantErr && result.ID == "" { + t.Errorf("result has no id") + } + if !tt.res.wantErr && result.Name != tt.res.project.Name { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.project.Name, result.Name) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestUpdateProject(t *testing.T) { + ctrl := gomock.NewController(t) + type args struct { + es *ProjectEventstore + ctx context.Context + existing *model.Project + new *model.Project + } + type res struct { + project *model.Project + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project from events, ok", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name"}, + new: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "NameNew"}, + }, + res: res{ + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "NameNew"}, + }, + }, + { + name: "create project no name", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name"}, + new: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: ""}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := tt.args.es.UpdateProject(tt.args.ctx, tt.args.existing, tt.args.new) + + if !tt.res.wantErr && result.ID == "" { + t.Errorf("result has no id") + } + if !tt.res.wantErr && result.Name != tt.res.project.Name { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.project.Name, result.Name) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestDeactivateProject(t *testing.T) { + ctrl := gomock.NewController(t) + type args struct { + es *ProjectEventstore + ctx context.Context + existing *model.Project + new *model.Project + } + type res struct { + project *model.Project + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "deactivate project, ok", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name", State: model.Active}, + }, + res: res{ + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "NameNew", State: model.Inactive}, + }, + }, + { + name: "deactivate project with inactive state", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name", State: model.Inactive}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := tt.args.es.DeactivateProject(tt.args.ctx, tt.args.existing) + + if !tt.res.wantErr && result.ID == "" { + t.Errorf("result has no id") + } + if !tt.res.wantErr && result.State != tt.res.project.State { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.project.State, result.State) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestReactivateProject(t *testing.T) { + ctrl := gomock.NewController(t) + type args struct { + es *ProjectEventstore + ctx context.Context + existing *model.Project + new *model.Project + } + type res struct { + project *model.Project + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "deactivate project, ok", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name", State: model.Inactive}, + }, + res: res{ + project: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "NameNew", State: model.Active}, + }, + }, + { + name: "deactivate project with inactive state", + args: args{ + es: GetMockManipulateProject(ctrl), + ctx: auth.NewMockContext("orgID", "userID"), + existing: &model.Project{ObjectRoot: es_models.ObjectRoot{ID: "ID", Sequence: 1}, Name: "Name", State: model.Active}, + }, + res: res{ + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := tt.args.es.ReactivateProject(tt.args.ctx, tt.args.existing) + + if !tt.res.wantErr && result.ID == "" { + t.Errorf("result has no id") + } + if !tt.res.wantErr && result.State != tt.res.project.State { + t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.project.State, result.State) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} diff --git a/internal/project/repository/eventsourcing/project.go b/internal/project/repository/eventsourcing/project.go new file mode 100644 index 0000000000..a4325b9340 --- /dev/null +++ b/internal/project/repository/eventsourcing/project.go @@ -0,0 +1,131 @@ +package eventsourcing + +import ( + "context" + "strconv" + + "github.com/caos/zitadel/internal/errors" + es_models "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" + "github.com/sony/sonyflake" +) + +var idGenerator = sonyflake.NewSonyflake(sonyflake.Settings{}) + +const ( + projectVersion = "v1" +) + +type Project struct { + es_models.ObjectRoot + Name string `json:"name,omitempty"` + State int32 `json:"-"` +} + +func (p *Project) Changes(changed *Project) map[string]interface{} { + changes := make(map[string]interface{}, 1) + if changed.Name != "" && p.Name != changed.Name { + changes["name"] = changed.Name + } + return changes +} + +func ProjectFromModel(project *model.Project) *Project { + return &Project{ + ObjectRoot: es_models.ObjectRoot{ + ID: project.ObjectRoot.ID, + Sequence: project.Sequence, + ChangeDate: project.ChangeDate, + CreationDate: project.CreationDate, + }, + Name: project.Name, + State: model.ProjectStateToInt(project.State), + } +} + +func ProjectToModel(project *Project) *model.Project { + return &model.Project{ + ObjectRoot: es_models.ObjectRoot{ + ID: project.ID, + ChangeDate: project.ChangeDate, + CreationDate: project.CreationDate, + Sequence: project.Sequence, + }, + Name: project.Name, + State: model.ProjectStateFromInt(project.State), + } +} + +func ProjectByIDQuery(id string, latestSequence uint64) (*es_models.SearchQuery, error) { + if id == "" { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dke74", "id should be filled") + } + return ProjectQuery(latestSequence). + AggregateIDFilter(id), nil +} + +func ProjectQuery(latestSequence uint64) *es_models.SearchQuery { + return es_models.NewSearchQuery(). + AggregateTypeFilter(model.ProjectAggregate). + LatestSequenceFilter(latestSequence) +} + +func ProjectAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, id string, sequence uint64) (*es_models.Aggregate, error) { + return aggCreator.NewAggregate(ctx, id, model.ProjectAggregate, projectVersion, sequence) +} + +func ProjectCreateAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, project *Project) (*es_models.Aggregate, error) { + if project == nil { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-kdie6", "project should not be nil") + } + var err error + id, err := idGenerator.NextID() + if err != nil { + return nil, err + } + project.ID = strconv.FormatUint(id, 10) + + agg, err := ProjectAggregate(ctx, aggCreator, project.ID, project.Sequence) + if err != nil { + return nil, err + } + + return agg.AppendEvent(model.ProjectAdded, project) +} + +func ProjectUpdateAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, existing *Project, new *Project) (*es_models.Aggregate, error) { + if existing == nil { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dk93d", "existing project should not be nil") + } + if new == nil { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dhr74", "new project should not be nil") + } + agg, err := ProjectAggregate(ctx, aggCreator, existing.ID, existing.Sequence) + if err != nil { + return nil, err + } + changes := existing.Changes(new) + return agg.AppendEvent(model.ProjectChanged, changes) +} + +func ProjectDeactivateAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, existing *Project) (*es_models.Aggregate, error) { + if existing == nil { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-ueh45", "existing project should not be nil") + } + agg, err := ProjectAggregate(ctx, aggCreator, existing.ID, existing.Sequence) + if err != nil { + return nil, err + } + return agg.AppendEvent(model.ProjectDeactivated, nil) +} + +func ProjectReactivateAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, existing *Project) (*es_models.Aggregate, error) { + if existing == nil { + return nil, errors.ThrowPreconditionFailed(nil, "EVENT-37dur", "existing project should not be nil") + } + agg, err := ProjectAggregate(ctx, aggCreator, existing.ID, existing.Sequence) + if err != nil { + return nil, err + } + return agg.AppendEvent(model.ProjectReactivated, nil) +} diff --git a/internal/project/repository/eventsourcing/project_test.go b/internal/project/repository/eventsourcing/project_test.go new file mode 100644 index 0000000000..f63ad67217 --- /dev/null +++ b/internal/project/repository/eventsourcing/project_test.go @@ -0,0 +1,453 @@ +package eventsourcing + +import ( + "context" + "github.com/caos/zitadel/internal/api/auth" + caos_errs "github.com/caos/zitadel/internal/errors" + "github.com/caos/zitadel/internal/eventstore/models" + "github.com/caos/zitadel/internal/project/model" + "testing" +) + +func TestChanges(t *testing.T) { + type args struct { + existing *Project + new *Project + } + type res struct { + changesLen int + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project name changes", + args: args{ + existing: &Project{Name: "Name"}, + new: &Project{Name: "NameChanged"}, + }, + res: res{ + changesLen: 1, + }, + }, + { + name: "no changes", + args: args{ + existing: &Project{Name: "Name"}, + new: &Project{Name: "Name"}, + }, + res: res{ + changesLen: 0, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + changes := tt.args.existing.Changes(tt.args.new) + if len(changes) != tt.res.changesLen { + t.Errorf("got wrong changes len: expected: %v, actual: %v ", tt.res.changesLen, len(changes)) + } + }) + } +} + +func TestProjectByIDQuery(t *testing.T) { + type args struct { + id string + sequence uint64 + } + type res struct { + filterLen int + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project by id query ok", + args: args{ + id: "ID", + sequence: 1, + }, + res: res{ + filterLen: 3, + }, + }, + { + name: "project by id query, no id", + args: args{ + sequence: 1, + }, + res: res{ + filterLen: 3, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + query, err := ProjectByIDQuery(tt.args.id, tt.args.sequence) + if !tt.res.wantErr && query == nil { + t.Errorf("query should not be nil") + } + if !tt.res.wantErr && len(query.Filters) != tt.res.filterLen { + t.Errorf("got wrong filter len: expected: %v, actual: %v ", tt.res.filterLen, len(query.Filters)) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestProjectQuery(t *testing.T) { + type args struct { + sequence uint64 + } + type res struct { + filterLen int + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project query ok", + args: args{ + sequence: 1, + }, + res: res{ + filterLen: 2, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + query := ProjectQuery(tt.args.sequence) + if query == nil { + t.Errorf("query should not be nil") + } + if len(query.Filters) != tt.res.filterLen { + t.Errorf("got wrong filter len: expected: %v, actual: %v ", tt.res.filterLen, len(query.Filters)) + } + }) + } +} + +func TestProjectAggregate(t *testing.T) { + type args struct { + ctx context.Context + aggCreator *models.AggregateCreator + id string + sequence uint64 + } + type res struct { + eventLen int + aggType models.AggregateType + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project update aggregate ok", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + aggCreator: models.NewAggregateCreator("Test"), + id: "ID", + sequence: 1, + }, + res: res{ + eventLen: 0, + aggType: model.ProjectAggregate, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + agg, _ := ProjectAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.id, tt.args.sequence) + + if agg == nil { + t.Errorf("agg should not be nil") + } + if len(agg.Events) != tt.res.eventLen { + t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(agg.Events)) + } + }) + } +} + +func TestProjectCreateAggregate(t *testing.T) { + type args struct { + ctx context.Context + new *Project + aggCreator *models.AggregateCreator + } + type res struct { + eventLen int + eventType models.EventType + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project update aggregate ok", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + new: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName", State: int32(model.Active)}, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectAdded, + }, + }, + { + name: "new project nil", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + new: nil, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectAdded, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + agg, err := ProjectCreateAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.new) + + if !tt.res.wantErr && len(agg.Events) != tt.res.eventLen { + t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(agg.Events)) + } + if !tt.res.wantErr && agg.Events[0].Type != tt.res.eventType { + t.Errorf("got wrong event type: expected: %v, actual: %v ", tt.res.eventType, agg.Events[0].Type.String()) + } + if !tt.res.wantErr && agg.Events[0].Data == nil { + t.Errorf("should have data in event") + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestProjectUpdateAggregate(t *testing.T) { + type args struct { + ctx context.Context + existing *Project + new *Project + aggCreator *models.AggregateCreator + } + type res struct { + eventLen int + eventType models.EventType + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project update aggregate ok", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName", State: int32(model.Active)}, + new: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName_Changed", State: int32(model.Active)}, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectChanged, + }, + }, + { + name: "existing project nil", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: nil, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectChanged, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + { + name: "new project nil", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName", State: int32(model.Active)}, + new: nil, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectChanged, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + agg, err := ProjectUpdateAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.existing, tt.args.new) + + if !tt.res.wantErr && len(agg.Events) != tt.res.eventLen { + t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(agg.Events)) + } + if !tt.res.wantErr && agg.Events[0].Type != tt.res.eventType { + t.Errorf("got wrong event type: expected: %v, actual: %v ", tt.res.eventType, agg.Events[0].Type.String()) + } + if !tt.res.wantErr && agg.Events[0].Data == nil { + t.Errorf("should have data in event") + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestProjectDeactivateAggregate(t *testing.T) { + type args struct { + ctx context.Context + existing *Project + aggCreator *models.AggregateCreator + } + type res struct { + eventLen int + eventType models.EventType + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project deactivate aggregate ok", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName", State: int32(model.Active)}, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectDeactivated, + }, + }, + { + name: "existing project nil", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: nil, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectDeactivated, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + agg, err := ProjectDeactivateAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.existing) + + if !tt.res.wantErr && len(agg.Events) != tt.res.eventLen { + t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(agg.Events)) + } + if !tt.res.wantErr && agg.Events[0].Type != tt.res.eventType { + t.Errorf("got wrong event type: expected: %v, actual: %v ", tt.res.eventType, agg.Events[0].Type.String()) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} + +func TestProjectReactivateAggregate(t *testing.T) { + type args struct { + ctx context.Context + existing *Project + aggCreator *models.AggregateCreator + } + type res struct { + eventLen int + eventType models.EventType + wantErr bool + errFunc func(err error) bool + } + tests := []struct { + name string + args args + res res + }{ + { + name: "project reactivate aggregate ok", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: &Project{ObjectRoot: models.ObjectRoot{ID: "ID"}, Name: "ProjectName", State: int32(model.Inactive)}, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectReactivated, + }, + }, + { + name: "existing project nil", + args: args{ + ctx: auth.NewMockContext("orgID", "userID"), + existing: nil, + aggCreator: models.NewAggregateCreator("Test"), + }, + res: res{ + eventLen: 1, + eventType: model.ProjectReactivated, + wantErr: true, + errFunc: caos_errs.IsPreconditionFailed, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + agg, err := ProjectReactivateAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.existing) + + if !tt.res.wantErr && len(agg.Events) != tt.res.eventLen { + t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(agg.Events)) + } + if !tt.res.wantErr && agg.Events[0].Type != tt.res.eventType { + t.Errorf("got wrong event type: expected: %v, actual: %v ", tt.res.eventType, agg.Events[0].Type.String()) + } + if tt.res.wantErr && !tt.res.errFunc(err) { + t.Errorf("got wrong err: %v ", err) + } + }) + } +} diff --git a/internal/protoc/protoc-gen-authoption/templates.go b/internal/protoc/protoc-gen-authoption/templates.go index 6b2bb1b415..3aa6428c32 100644 --- a/internal/protoc/protoc-gen-authoption/templates.go +++ b/internal/protoc/protoc-gen-authoption/templates.go @@ -83,7 +83,7 @@ func templatesAuth_method_mappingGoTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "templates/auth_method_mapping.go.tmpl", size: 1013, mode: os.FileMode(420), modTime: time.Unix(1585129064, 0)} + info := bindataFileInfo{name: "templates/auth_method_mapping.go.tmpl", size: 1013, mode: os.FileMode(420), modTime: time.Unix(1586159062, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -182,7 +182,6 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } - var _bintree = &bintree{nil, map[string]*bintree{ "templates": &bintree{nil, map[string]*bintree{ "auth_method_mapping.go.tmpl": &bintree{templatesAuth_method_mappingGoTmpl, map[string]*bintree{}}, @@ -235,3 +234,4 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } + diff --git a/migrations/cockroach/V1.0__eventstore.sql b/migrations/cockroach/V1.0__eventstore.sql new file mode 100644 index 0000000000..b9f4a14c26 --- /dev/null +++ b/migrations/cockroach/V1.0__eventstore.sql @@ -0,0 +1,49 @@ +BEGIN; + +CREATE DATABASE eventstore; + +COMMIT; + + +BEGIN; + +CREATE USER eventstore; + +GRANT SELECT, INSERT, UPDATE ON DATABASE eventstore TO eventstore; + +COMMIT; + +BEGIN; + +CREATE SEQUENCE eventstore.event_seq; + +COMMIT; + +BEGIN; + +CREATE TABLE eventstore.events ( + id UUID DEFAULT gen_random_uuid(), + + event_type TEXT, + aggregate_type TEXT NOT NULL, + aggregate_id TEXT NOT NULL, + aggregate_version TEXT NOT NULL, + event_sequence BIGINT NOT NULL DEFAULT nextval('eventstore.event_seq'), + previous_sequence BIGINT UNIQUE, + creation_date TIMESTAMPTZ NOT NULL DEFAULT now(), + event_data JSONB, + editor_user TEXT NOT NULL, + editor_service TEXT NOT NULL, + resource_owner TEXT NOT NULL, + + PRIMARY KEY (id) +); + +CREATE TABLE eventstore.locks ( + aggregate_type TEXT NOT NULL, + aggregate_id TEXT NOT NULL, + until TIMESTAMPTZ, + UNIQUE (aggregate_type, aggregate_id) +); + +COMMIT; diff --git a/migrations/cockroach/V1.1__management.sql b/migrations/cockroach/V1.1__management.sql new file mode 100644 index 0000000000..1746d1b2d7 --- /dev/null +++ b/migrations/cockroach/V1.1__management.sql @@ -0,0 +1,16 @@ +BEGIN; + +CREATE DATABASE management; + + +COMMIT; + +BEGIN; + +CREATE USER management; + +GRANT SELECT, INSERT, UPDATE, DELETE ON DATABASE management TO management; +GRANT SELECT, INSERT, UPDATE ON DATABASE eventstore TO management; +GRANT SELECT, INSERT, UPDATE ON TABLE eventstore.* TO management; + +COMMIT; diff --git a/migrations/cockroach/clean_cluster.go b/migrations/cockroach/clean_cluster.go new file mode 100644 index 0000000000..93d41db061 --- /dev/null +++ b/migrations/cockroach/clean_cluster.go @@ -0,0 +1,5 @@ +//+build ignore + +package migrations + +//go:generate flyway -url=jdbc:postgresql://cockroachdb-public:26257/defaultdb -user=root -password= -locations=filesystem:./ clean diff --git a/migrations/cockroach/clean_local.go b/migrations/cockroach/clean_local.go new file mode 100644 index 0000000000..7878f63ca5 --- /dev/null +++ b/migrations/cockroach/clean_local.go @@ -0,0 +1,5 @@ +//+build ignore + +package migrations + +//go:generate flyway -url=jdbc:postgresql://localhost:26257/defaultdb -user=root -password= -locations=filesystem:./ clean diff --git a/migrations/cockroach/migrate_cluster.go b/migrations/cockroach/migrate_cluster.go new file mode 100644 index 0000000000..589409653f --- /dev/null +++ b/migrations/cockroach/migrate_cluster.go @@ -0,0 +1,5 @@ +//+build ignore + +package migrations + +//go:generate flyway -url=jdbc:postgresql://cockroachdb-public:26257/defaultdb -user=root -password= -locations=filesystem:./ migrate diff --git a/migrations/cockroach/migrate_local.go b/migrations/cockroach/migrate_local.go new file mode 100644 index 0000000000..97554514b7 --- /dev/null +++ b/migrations/cockroach/migrate_local.go @@ -0,0 +1,5 @@ +//+build ignore + +package migrations + +//go:generate flyway -url=jdbc:postgresql://localhost:26257/defaultdb -user=root -password= -locations=filesystem:./ migrate diff --git a/pkg/admin/api/grpc/admin.pb.go b/pkg/admin/api/grpc/admin.pb.go index 2b22bc25b2..1da962f99d 100644 --- a/pkg/admin/api/grpc/admin.pb.go +++ b/pkg/admin/api/grpc/admin.pb.go @@ -1150,11 +1150,11 @@ var fileDescriptor_73a7fc70dcc2027c = []byte{ // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConnInterface +var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 +const _ = grpc.SupportPackageIsVersion4 // AdminServiceClient is the client API for AdminService service. // @@ -1173,10 +1173,10 @@ type AdminServiceClient interface { } type adminServiceClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewAdminServiceClient(cc grpc.ClientConnInterface) AdminServiceClient { +func NewAdminServiceClient(cc *grpc.ClientConn) AdminServiceClient { return &adminServiceClient{cc} } diff --git a/pkg/admin/api/grpc/admin.pb.gw.go b/pkg/admin/api/grpc/admin.pb.gw.go index d5c56470e2..7b4dd36525 100644 --- a/pkg/admin/api/grpc/admin.pb.gw.go +++ b/pkg/admin/api/grpc/admin.pb.gw.go @@ -13,6 +13,7 @@ import ( "io" "net/http" + "github.com/golang/protobuf/descriptor" "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes/empty" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -23,11 +24,13 @@ import ( "google.golang.org/grpc/status" ) +// Suppress "imported and not used" errors var _ codes.Code var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage func request_AdminService_Healthz_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty @@ -38,6 +41,15 @@ func request_AdminService_Healthz_0(ctx context.Context, marshaler runtime.Marsh } +func local_request_AdminService_Healthz_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Healthz(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_Ready_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -47,6 +59,15 @@ func request_AdminService_Ready_0(ctx context.Context, marshaler runtime.Marshal } +func local_request_AdminService_Ready_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Ready(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -56,6 +77,15 @@ func request_AdminService_Validate_0(ctx context.Context, marshaler runtime.Mars } +func local_request_AdminService_Validate_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Validate(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_AdminService_IsOrgUnique_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -64,7 +94,10 @@ func request_AdminService_IsOrgUnique_0(ctx context.Context, marshaler runtime.M var protoReq UniqueOrgRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_AdminService_IsOrgUnique_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_IsOrgUnique_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -73,6 +106,19 @@ func request_AdminService_IsOrgUnique_0(ctx context.Context, marshaler runtime.M } +func local_request_AdminService_IsOrgUnique_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UniqueOrgRequest + var metadata runtime.ServerMetadata + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_AdminService_IsOrgUnique_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.IsOrgUnique(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_GetOrgByID_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq OrgID var metadata runtime.ServerMetadata @@ -100,6 +146,33 @@ func request_AdminService_GetOrgByID_0(ctx context.Context, marshaler runtime.Ma } +func local_request_AdminService_GetOrgByID_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq OrgID + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.GetOrgByID(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_SearchOrgs_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq OrgSearchRequest var metadata runtime.ServerMetadata @@ -117,6 +190,23 @@ func request_AdminService_SearchOrgs_0(ctx context.Context, marshaler runtime.Ma } +func local_request_AdminService_SearchOrgs_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq OrgSearchRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SearchOrgs(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_SetUpOrg_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq OrgSetUpRequest var metadata runtime.ServerMetadata @@ -134,6 +224,171 @@ func request_AdminService_SetUpOrg_0(ctx context.Context, marshaler runtime.Mars } +func local_request_AdminService_SetUpOrg_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq OrgSetUpRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SetUpOrg(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterAdminServiceHandlerServer registers the http handlers for service AdminService to "mux". +// UnaryRPC :call AdminServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AdminServiceServer) error { + + mux.Handle("GET", pattern_AdminService_Healthz_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_Healthz_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_Healthz_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_Ready_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_Ready_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_Ready_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_Validate_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_IsOrgUnique_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_IsOrgUnique_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_IsOrgUnique_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_GetOrgByID_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_GetOrgByID_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_GetOrgByID_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AdminService_SearchOrgs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_SearchOrgs_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_SearchOrgs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AdminService_SetUpOrg_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_SetUpOrg_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_SetUpOrg_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + // RegisterAdminServiceHandlerFromEndpoint is same as RegisterAdminServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAdminServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -316,19 +571,19 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu } var ( - pattern_AdminService_Healthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"healthz"}, "")) + pattern_AdminService_Healthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"healthz"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_Ready_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ready"}, "")) + pattern_AdminService_Ready_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ready"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"validate"}, "")) + pattern_AdminService_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"validate"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_IsOrgUnique_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_isunique"}, "")) + pattern_AdminService_IsOrgUnique_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_isunique"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_GetOrgByID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"orgs", "id"}, "")) + pattern_AdminService_GetOrgByID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"orgs", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_SearchOrgs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_search"}, "")) + pattern_AdminService_SearchOrgs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_search"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AdminService_SetUpOrg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_setup"}, "")) + pattern_AdminService_SetUpOrg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"orgs", "_setup"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/pkg/admin/api/grpc/admin.swagger.json b/pkg/admin/api/grpc/admin.swagger.json index c312a23b6f..e89392e559 100644 --- a/pkg/admin/api/grpc/admin.swagger.json +++ b/pkg/admin/api/grpc/admin.swagger.json @@ -167,7 +167,7 @@ "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/protobufStruct" + "type": "object" } } }, @@ -178,19 +178,6 @@ } }, "definitions": { - "protobufListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Repeated field of dynamically typed values." - } - }, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." - }, "protobufNullValue": { "type": "string", "enum": [ @@ -199,51 +186,6 @@ "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." }, - "protobufStruct": { - "type": "object", - "properties": { - "fields": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Unordered map of dynamically typed values." - } - }, - "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." - }, - "protobufValue": { - "type": "object", - "properties": { - "null_value": { - "$ref": "#/definitions/protobufNullValue", - "description": "Represents a null value." - }, - "number_value": { - "type": "number", - "format": "double", - "description": "Represents a double value." - }, - "string_value": { - "type": "string", - "description": "Represents a string value." - }, - "bool_value": { - "type": "boolean", - "format": "boolean", - "description": "Represents a boolean value." - }, - "struct_value": { - "$ref": "#/definitions/protobufStruct", - "description": "Represents a structured value." - }, - "list_value": { - "$ref": "#/definitions/protobufListValue", - "description": "Represents a repeated `Value`." - } - }, - "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." - }, "v1CreateOrgRequest": { "type": "object", "properties": { diff --git a/pkg/admin/api/grpc/mock/admin.proto.mock.go b/pkg/admin/api/grpc/mock/admin.proto.mock.go index 253d6aee69..8c8d85d986 100644 --- a/pkg/admin/api/grpc/mock/admin.proto.mock.go +++ b/pkg/admin/api/grpc/mock/admin.proto.mock.go @@ -8,9 +8,9 @@ import ( context "context" grpc "github.com/caos/zitadel/pkg/admin/api/grpc" gomock "github.com/golang/mock/gomock" - empty "github.com/golang/protobuf/ptypes/empty" - struct0 "github.com/golang/protobuf/ptypes/struct" grpc0 "google.golang.org/grpc" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" reflect "reflect" ) @@ -58,14 +58,14 @@ func (mr *MockAdminServiceClientMockRecorder) GetOrgByID(arg0, arg1 interface{}, } // Healthz mocks base method -func (m *MockAdminServiceClient) Healthz(arg0 context.Context, arg1 *empty.Empty, arg2 ...grpc0.CallOption) (*empty.Empty, error) { +func (m *MockAdminServiceClient) Healthz(arg0 context.Context, arg1 *emptypb.Empty, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Healthz", varargs...) - ret0, _ := ret[0].(*empty.Empty) + ret0, _ := ret[0].(*emptypb.Empty) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -98,14 +98,14 @@ func (mr *MockAdminServiceClientMockRecorder) IsOrgUnique(arg0, arg1 interface{} } // Ready mocks base method -func (m *MockAdminServiceClient) Ready(arg0 context.Context, arg1 *empty.Empty, arg2 ...grpc0.CallOption) (*empty.Empty, error) { +func (m *MockAdminServiceClient) Ready(arg0 context.Context, arg1 *emptypb.Empty, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Ready", varargs...) - ret0, _ := ret[0].(*empty.Empty) + ret0, _ := ret[0].(*emptypb.Empty) ret1, _ := ret[1].(error) return ret0, ret1 } @@ -158,14 +158,14 @@ func (mr *MockAdminServiceClientMockRecorder) SetUpOrg(arg0, arg1 interface{}, a } // Validate mocks base method -func (m *MockAdminServiceClient) Validate(arg0 context.Context, arg1 *empty.Empty, arg2 ...grpc0.CallOption) (*struct0.Struct, error) { +func (m *MockAdminServiceClient) Validate(arg0 context.Context, arg1 *emptypb.Empty, arg2 ...grpc0.CallOption) (*structpb.Struct, error) { m.ctrl.T.Helper() varargs := []interface{}{arg0, arg1} for _, a := range arg2 { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "Validate", varargs...) - ret0, _ := ret[0].(*struct0.Struct) + ret0, _ := ret[0].(*structpb.Struct) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/pkg/auth/api/grpc/auth.pb.go b/pkg/auth/api/grpc/auth.pb.go index 9742ac4500..3f3c97b847 100644 --- a/pkg/auth/api/grpc/auth.pb.go +++ b/pkg/auth/api/grpc/auth.pb.go @@ -1,13 +1,11 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.20.1 -// protoc v3.11.3 // source: auth.proto package grpc import ( context "context" + fmt "fmt" _ "github.com/caos/zitadel/internal/protoc/protoc-gen-authoption/authoption" _ "github.com/envoyproxy/protoc-gen-validate/validate" proto "github.com/golang/protobuf/proto" @@ -19,22 +17,19 @@ import ( grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" + math "math" ) -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type UserSessionState int32 @@ -44,45 +39,24 @@ const ( UserSessionState_USERSESSIONSTATE_TERMINATED UserSessionState = 2 ) -// Enum value maps for UserSessionState. -var ( - UserSessionState_name = map[int32]string{ - 0: "USERSESSIONSTATE_UNSPECIFIED", - 1: "USERSESSIONSTATE_ACTIVE", - 2: "USERSESSIONSTATE_TERMINATED", - } - UserSessionState_value = map[string]int32{ - "USERSESSIONSTATE_UNSPECIFIED": 0, - "USERSESSIONSTATE_ACTIVE": 1, - "USERSESSIONSTATE_TERMINATED": 2, - } -) +var UserSessionState_name = map[int32]string{ + 0: "USERSESSIONSTATE_UNSPECIFIED", + 1: "USERSESSIONSTATE_ACTIVE", + 2: "USERSESSIONSTATE_TERMINATED", +} -func (x UserSessionState) Enum() *UserSessionState { - p := new(UserSessionState) - *p = x - return p +var UserSessionState_value = map[string]int32{ + "USERSESSIONSTATE_UNSPECIFIED": 0, + "USERSESSIONSTATE_ACTIVE": 1, + "USERSESSIONSTATE_TERMINATED": 2, } func (x UserSessionState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(UserSessionState_name, int32(x)) } -func (UserSessionState) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[0].Descriptor() -} - -func (UserSessionState) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[0] -} - -func (x UserSessionState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use UserSessionState.Descriptor instead. func (UserSessionState) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{0} + return fileDescriptor_8bbd6f3875b0e874, []int{0} } type OIDCResponseType int32 @@ -93,45 +67,24 @@ const ( OIDCResponseType_OIDCRESPONSETYPE_ID_TOKEN_TOKEN OIDCResponseType = 2 ) -// Enum value maps for OIDCResponseType. -var ( - OIDCResponseType_name = map[int32]string{ - 0: "OIDCRESPONSETYPE_CODE", - 1: "OIDCRESPONSETYPE_ID_TOKEN", - 2: "OIDCRESPONSETYPE_ID_TOKEN_TOKEN", - } - OIDCResponseType_value = map[string]int32{ - "OIDCRESPONSETYPE_CODE": 0, - "OIDCRESPONSETYPE_ID_TOKEN": 1, - "OIDCRESPONSETYPE_ID_TOKEN_TOKEN": 2, - } -) +var OIDCResponseType_name = map[int32]string{ + 0: "OIDCRESPONSETYPE_CODE", + 1: "OIDCRESPONSETYPE_ID_TOKEN", + 2: "OIDCRESPONSETYPE_ID_TOKEN_TOKEN", +} -func (x OIDCResponseType) Enum() *OIDCResponseType { - p := new(OIDCResponseType) - *p = x - return p +var OIDCResponseType_value = map[string]int32{ + "OIDCRESPONSETYPE_CODE": 0, + "OIDCRESPONSETYPE_ID_TOKEN": 1, + "OIDCRESPONSETYPE_ID_TOKEN_TOKEN": 2, } func (x OIDCResponseType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(OIDCResponseType_name, int32(x)) } -func (OIDCResponseType) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[1].Descriptor() -} - -func (OIDCResponseType) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[1] -} - -func (x OIDCResponseType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OIDCResponseType.Descriptor instead. func (OIDCResponseType) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{1} + return fileDescriptor_8bbd6f3875b0e874, []int{1} } type UserState int32 @@ -146,53 +99,32 @@ const ( UserState_USERSTATE_INITIAL UserState = 6 ) -// Enum value maps for UserState. -var ( - UserState_name = map[int32]string{ - 0: "USERSTATE_UNSPECIEFIED", - 1: "USERSTATE_ACTIVE", - 2: "USERSTATE_INACTIVE", - 3: "USERSTATE_DELETED", - 4: "USERSTATE_LOCKED", - 5: "USERSTATE_SUSPEND", - 6: "USERSTATE_INITIAL", - } - UserState_value = map[string]int32{ - "USERSTATE_UNSPECIEFIED": 0, - "USERSTATE_ACTIVE": 1, - "USERSTATE_INACTIVE": 2, - "USERSTATE_DELETED": 3, - "USERSTATE_LOCKED": 4, - "USERSTATE_SUSPEND": 5, - "USERSTATE_INITIAL": 6, - } -) +var UserState_name = map[int32]string{ + 0: "USERSTATE_UNSPECIEFIED", + 1: "USERSTATE_ACTIVE", + 2: "USERSTATE_INACTIVE", + 3: "USERSTATE_DELETED", + 4: "USERSTATE_LOCKED", + 5: "USERSTATE_SUSPEND", + 6: "USERSTATE_INITIAL", +} -func (x UserState) Enum() *UserState { - p := new(UserState) - *p = x - return p +var UserState_value = map[string]int32{ + "USERSTATE_UNSPECIEFIED": 0, + "USERSTATE_ACTIVE": 1, + "USERSTATE_INACTIVE": 2, + "USERSTATE_DELETED": 3, + "USERSTATE_LOCKED": 4, + "USERSTATE_SUSPEND": 5, + "USERSTATE_INITIAL": 6, } func (x UserState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(UserState_name, int32(x)) } -func (UserState) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[2].Descriptor() -} - -func (UserState) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[2] -} - -func (x UserState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use UserState.Descriptor instead. func (UserState) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{2} + return fileDescriptor_8bbd6f3875b0e874, []int{2} } type Gender int32 @@ -204,47 +136,26 @@ const ( Gender_GENDER_DIVERSE Gender = 3 ) -// Enum value maps for Gender. -var ( - Gender_name = map[int32]string{ - 0: "GENDER_UNSPECIFIED", - 1: "GENDER_FEMALE", - 2: "GENDER_MALE", - 3: "GENDER_DIVERSE", - } - Gender_value = map[string]int32{ - "GENDER_UNSPECIFIED": 0, - "GENDER_FEMALE": 1, - "GENDER_MALE": 2, - "GENDER_DIVERSE": 3, - } -) +var Gender_name = map[int32]string{ + 0: "GENDER_UNSPECIFIED", + 1: "GENDER_FEMALE", + 2: "GENDER_MALE", + 3: "GENDER_DIVERSE", +} -func (x Gender) Enum() *Gender { - p := new(Gender) - *p = x - return p +var Gender_value = map[string]int32{ + "GENDER_UNSPECIFIED": 0, + "GENDER_FEMALE": 1, + "GENDER_MALE": 2, + "GENDER_DIVERSE": 3, } func (x Gender) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(Gender_name, int32(x)) } -func (Gender) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[3].Descriptor() -} - -func (Gender) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[3] -} - -func (x Gender) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Gender.Descriptor instead. func (Gender) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{3} + return fileDescriptor_8bbd6f3875b0e874, []int{3} } type MfaType int32 @@ -255,45 +166,24 @@ const ( MfaType_MFATYPE_OTP MfaType = 2 ) -// Enum value maps for MfaType. -var ( - MfaType_name = map[int32]string{ - 0: "MFATYPE_UNSPECIFIED", - 1: "MFATYPE_SMS", - 2: "MFATYPE_OTP", - } - MfaType_value = map[string]int32{ - "MFATYPE_UNSPECIFIED": 0, - "MFATYPE_SMS": 1, - "MFATYPE_OTP": 2, - } -) +var MfaType_name = map[int32]string{ + 0: "MFATYPE_UNSPECIFIED", + 1: "MFATYPE_SMS", + 2: "MFATYPE_OTP", +} -func (x MfaType) Enum() *MfaType { - p := new(MfaType) - *p = x - return p +var MfaType_value = map[string]int32{ + "MFATYPE_UNSPECIFIED": 0, + "MFATYPE_SMS": 1, + "MFATYPE_OTP": 2, } func (x MfaType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(MfaType_name, int32(x)) } -func (MfaType) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[4].Descriptor() -} - -func (MfaType) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[4] -} - -func (x MfaType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use MfaType.Descriptor instead. func (MfaType) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{4} + return fileDescriptor_8bbd6f3875b0e874, []int{4} } type MFAState int32 @@ -305,47 +195,26 @@ const ( MFAState_MFASTATE_REMOVED MFAState = 3 ) -// Enum value maps for MFAState. -var ( - MFAState_name = map[int32]string{ - 0: "MFASTATE_UNSPECIFIED", - 1: "MFASTATE_NOT_READY", - 2: "MFASTATE_READY", - 3: "MFASTATE_REMOVED", - } - MFAState_value = map[string]int32{ - "MFASTATE_UNSPECIFIED": 0, - "MFASTATE_NOT_READY": 1, - "MFASTATE_READY": 2, - "MFASTATE_REMOVED": 3, - } -) +var MFAState_name = map[int32]string{ + 0: "MFASTATE_UNSPECIFIED", + 1: "MFASTATE_NOT_READY", + 2: "MFASTATE_READY", + 3: "MFASTATE_REMOVED", +} -func (x MFAState) Enum() *MFAState { - p := new(MFAState) - *p = x - return p +var MFAState_value = map[string]int32{ + "MFASTATE_UNSPECIFIED": 0, + "MFASTATE_NOT_READY": 1, + "MFASTATE_READY": 2, + "MFASTATE_REMOVED": 3, } func (x MFAState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(MFAState_name, int32(x)) } -func (MFAState) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[5].Descriptor() -} - -func (MFAState) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[5] -} - -func (x MFAState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use MFAState.Descriptor instead. func (MFAState) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{5} + return fileDescriptor_8bbd6f3875b0e874, []int{5} } type MyProjectOrgSearchKey int32 @@ -355,43 +224,22 @@ const ( MyProjectOrgSearchKey_MYPROJECTORGSEARCHKEY_ORG_NAME MyProjectOrgSearchKey = 1 ) -// Enum value maps for MyProjectOrgSearchKey. -var ( - MyProjectOrgSearchKey_name = map[int32]string{ - 0: "MYPROJECTORGSEARCHKEY_UNSPECIFIED", - 1: "MYPROJECTORGSEARCHKEY_ORG_NAME", - } - MyProjectOrgSearchKey_value = map[string]int32{ - "MYPROJECTORGSEARCHKEY_UNSPECIFIED": 0, - "MYPROJECTORGSEARCHKEY_ORG_NAME": 1, - } -) +var MyProjectOrgSearchKey_name = map[int32]string{ + 0: "MYPROJECTORGSEARCHKEY_UNSPECIFIED", + 1: "MYPROJECTORGSEARCHKEY_ORG_NAME", +} -func (x MyProjectOrgSearchKey) Enum() *MyProjectOrgSearchKey { - p := new(MyProjectOrgSearchKey) - *p = x - return p +var MyProjectOrgSearchKey_value = map[string]int32{ + "MYPROJECTORGSEARCHKEY_UNSPECIFIED": 0, + "MYPROJECTORGSEARCHKEY_ORG_NAME": 1, } func (x MyProjectOrgSearchKey) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(MyProjectOrgSearchKey_name, int32(x)) } -func (MyProjectOrgSearchKey) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[6].Descriptor() -} - -func (MyProjectOrgSearchKey) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[6] -} - -func (x MyProjectOrgSearchKey) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use MyProjectOrgSearchKey.Descriptor instead. func (MyProjectOrgSearchKey) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{6} + return fileDescriptor_8bbd6f3875b0e874, []int{6} } type SearchMethod int32 @@ -402,225 +250,145 @@ const ( SearchMethod_SEARCHMETHOD_CONTAINS SearchMethod = 2 ) -// Enum value maps for SearchMethod. -var ( - SearchMethod_name = map[int32]string{ - 0: "SEARCHMETHOD_EQUALS", - 1: "SEARCHMETHOD_STARTS_WITH", - 2: "SEARCHMETHOD_CONTAINS", - } - SearchMethod_value = map[string]int32{ - "SEARCHMETHOD_EQUALS": 0, - "SEARCHMETHOD_STARTS_WITH": 1, - "SEARCHMETHOD_CONTAINS": 2, - } -) +var SearchMethod_name = map[int32]string{ + 0: "SEARCHMETHOD_EQUALS", + 1: "SEARCHMETHOD_STARTS_WITH", + 2: "SEARCHMETHOD_CONTAINS", +} -func (x SearchMethod) Enum() *SearchMethod { - p := new(SearchMethod) - *p = x - return p +var SearchMethod_value = map[string]int32{ + "SEARCHMETHOD_EQUALS": 0, + "SEARCHMETHOD_STARTS_WITH": 1, + "SEARCHMETHOD_CONTAINS": 2, } func (x SearchMethod) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(SearchMethod_name, int32(x)) } -func (SearchMethod) Descriptor() protoreflect.EnumDescriptor { - return file_auth_proto_enumTypes[7].Descriptor() -} - -func (SearchMethod) Type() protoreflect.EnumType { - return &file_auth_proto_enumTypes[7] -} - -func (x SearchMethod) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SearchMethod.Descriptor instead. func (SearchMethod) EnumDescriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{7} + return fileDescriptor_8bbd6f3875b0e874, []int{7} } type UserSessionViews struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserSessions []*UserSessionView `protobuf:"bytes,1,rep,name=user_sessions,json=userSessions,proto3" json:"user_sessions,omitempty"` + UserSessions []*UserSessionView `protobuf:"bytes,1,rep,name=user_sessions,json=userSessions,proto3" json:"user_sessions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserSessionViews) Reset() { - *x = UserSessionViews{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserSessionViews) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserSessionViews) ProtoMessage() {} - -func (x *UserSessionViews) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserSessionViews.ProtoReflect.Descriptor instead. +func (m *UserSessionViews) Reset() { *m = UserSessionViews{} } +func (m *UserSessionViews) String() string { return proto.CompactTextString(m) } +func (*UserSessionViews) ProtoMessage() {} func (*UserSessionViews) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{0} + return fileDescriptor_8bbd6f3875b0e874, []int{0} } -func (x *UserSessionViews) GetUserSessions() []*UserSessionView { - if x != nil { - return x.UserSessions +func (m *UserSessionViews) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserSessionViews.Unmarshal(m, b) +} +func (m *UserSessionViews) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserSessionViews.Marshal(b, m, deterministic) +} +func (m *UserSessionViews) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserSessionViews.Merge(m, src) +} +func (m *UserSessionViews) XXX_Size() int { + return xxx_messageInfo_UserSessionViews.Size(m) +} +func (m *UserSessionViews) XXX_DiscardUnknown() { + xxx_messageInfo_UserSessionViews.DiscardUnknown(m) +} + +var xxx_messageInfo_UserSessionViews proto.InternalMessageInfo + +func (m *UserSessionViews) GetUserSessions() []*UserSessionView { + if m != nil { + return m.UserSessions } return nil } type UserSessionView struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - AgentId string `protobuf:"bytes,2,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` - AuthState UserSessionState `protobuf:"varint,3,opt,name=auth_state,json=authState,proto3,enum=zitadel.auth.api.v1.UserSessionState" json:"auth_state,omitempty"` - UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - UserName string `protobuf:"bytes,5,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + AgentId string `protobuf:"bytes,2,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + AuthState UserSessionState `protobuf:"varint,3,opt,name=auth_state,json=authState,proto3,enum=zitadel.auth.api.v1.UserSessionState" json:"auth_state,omitempty"` + UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + UserName string `protobuf:"bytes,5,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + Sequence uint64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserSessionView) Reset() { - *x = UserSessionView{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserSessionView) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserSessionView) ProtoMessage() {} - -func (x *UserSessionView) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserSessionView.ProtoReflect.Descriptor instead. +func (m *UserSessionView) Reset() { *m = UserSessionView{} } +func (m *UserSessionView) String() string { return proto.CompactTextString(m) } +func (*UserSessionView) ProtoMessage() {} func (*UserSessionView) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{1} + return fileDescriptor_8bbd6f3875b0e874, []int{1} } -func (x *UserSessionView) GetId() string { - if x != nil { - return x.Id +func (m *UserSessionView) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserSessionView.Unmarshal(m, b) +} +func (m *UserSessionView) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserSessionView.Marshal(b, m, deterministic) +} +func (m *UserSessionView) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserSessionView.Merge(m, src) +} +func (m *UserSessionView) XXX_Size() int { + return xxx_messageInfo_UserSessionView.Size(m) +} +func (m *UserSessionView) XXX_DiscardUnknown() { + xxx_messageInfo_UserSessionView.DiscardUnknown(m) +} + +var xxx_messageInfo_UserSessionView proto.InternalMessageInfo + +func (m *UserSessionView) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *UserSessionView) GetAgentId() string { - if x != nil { - return x.AgentId +func (m *UserSessionView) GetAgentId() string { + if m != nil { + return m.AgentId } return "" } -func (x *UserSessionView) GetAuthState() UserSessionState { - if x != nil { - return x.AuthState +func (m *UserSessionView) GetAuthState() UserSessionState { + if m != nil { + return m.AuthState } return UserSessionState_USERSESSIONSTATE_UNSPECIFIED } -func (x *UserSessionView) GetUserId() string { - if x != nil { - return x.UserId +func (m *UserSessionView) GetUserId() string { + if m != nil { + return m.UserId } return "" } -func (x *UserSessionView) GetUserName() string { - if x != nil { - return x.UserName +func (m *UserSessionView) GetUserName() string { + if m != nil { + return m.UserName } return "" } -type UserID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` -} - -func (x *UserID) Reset() { - *x = UserID{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *UserSessionView) GetSequence() uint64 { + if m != nil { + return m.Sequence } -} - -func (x *UserID) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserID) ProtoMessage() {} - -func (x *UserID) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserID.ProtoReflect.Descriptor instead. -func (*UserID) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{2} -} - -func (x *UserID) GetId() string { - if x != nil { - return x.Id - } - return "" + return 0 } type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` State UserState `protobuf:"varint,2,opt,name=state,proto3,enum=zitadel.auth.api.v1.UserState" json:"state,omitempty"` CreationDate *timestamp.Timestamp `protobuf:"bytes,3,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` @@ -645,2775 +413,1772 @@ type User struct { Region string `protobuf:"bytes,22,opt,name=region,proto3" json:"region,omitempty"` StreetAddress string `protobuf:"bytes,23,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` PasswordChangeRequired bool `protobuf:"varint,24,opt,name=password_change_required,json=passwordChangeRequired,proto3" json:"password_change_required,omitempty"` + Sequence uint64 `protobuf:"varint,25,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *User) Reset() { - *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *User) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*User) ProtoMessage() {} - -func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (m *User) Reset() { *m = User{} } +func (m *User) String() string { return proto.CompactTextString(m) } +func (*User) ProtoMessage() {} func (*User) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{3} + return fileDescriptor_8bbd6f3875b0e874, []int{2} } -func (x *User) GetId() string { - if x != nil { - return x.Id +func (m *User) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_User.Unmarshal(m, b) +} +func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_User.Marshal(b, m, deterministic) +} +func (m *User) XXX_Merge(src proto.Message) { + xxx_messageInfo_User.Merge(m, src) +} +func (m *User) XXX_Size() int { + return xxx_messageInfo_User.Size(m) +} +func (m *User) XXX_DiscardUnknown() { + xxx_messageInfo_User.DiscardUnknown(m) +} + +var xxx_messageInfo_User proto.InternalMessageInfo + +func (m *User) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *User) GetState() UserState { - if x != nil { - return x.State +func (m *User) GetState() UserState { + if m != nil { + return m.State } return UserState_USERSTATE_UNSPECIEFIED } -func (x *User) GetCreationDate() *timestamp.Timestamp { - if x != nil { - return x.CreationDate +func (m *User) GetCreationDate() *timestamp.Timestamp { + if m != nil { + return m.CreationDate } return nil } -func (x *User) GetActivationDate() *timestamp.Timestamp { - if x != nil { - return x.ActivationDate +func (m *User) GetActivationDate() *timestamp.Timestamp { + if m != nil { + return m.ActivationDate } return nil } -func (x *User) GetChangeDate() *timestamp.Timestamp { - if x != nil { - return x.ChangeDate +func (m *User) GetChangeDate() *timestamp.Timestamp { + if m != nil { + return m.ChangeDate } return nil } -func (x *User) GetLastLogin() *timestamp.Timestamp { - if x != nil { - return x.LastLogin +func (m *User) GetLastLogin() *timestamp.Timestamp { + if m != nil { + return m.LastLogin } return nil } -func (x *User) GetPasswordChanged() *timestamp.Timestamp { - if x != nil { - return x.PasswordChanged +func (m *User) GetPasswordChanged() *timestamp.Timestamp { + if m != nil { + return m.PasswordChanged } return nil } -func (x *User) GetUserName() string { - if x != nil { - return x.UserName +func (m *User) GetUserName() string { + if m != nil { + return m.UserName } return "" } -func (x *User) GetFirstName() string { - if x != nil { - return x.FirstName +func (m *User) GetFirstName() string { + if m != nil { + return m.FirstName } return "" } -func (x *User) GetLastName() string { - if x != nil { - return x.LastName +func (m *User) GetLastName() string { + if m != nil { + return m.LastName } return "" } -func (x *User) GetNickName() string { - if x != nil { - return x.NickName +func (m *User) GetNickName() string { + if m != nil { + return m.NickName } return "" } -func (x *User) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (m *User) GetDisplayName() string { + if m != nil { + return m.DisplayName } return "" } -func (x *User) GetPreferredLanguage() string { - if x != nil { - return x.PreferredLanguage +func (m *User) GetPreferredLanguage() string { + if m != nil { + return m.PreferredLanguage } return "" } -func (x *User) GetGender() Gender { - if x != nil { - return x.Gender +func (m *User) GetGender() Gender { + if m != nil { + return m.Gender } return Gender_GENDER_UNSPECIFIED } -func (x *User) GetEmail() string { - if x != nil { - return x.Email +func (m *User) GetEmail() string { + if m != nil { + return m.Email } return "" } -func (x *User) GetIsEmailVerified() bool { - if x != nil { - return x.IsEmailVerified +func (m *User) GetIsEmailVerified() bool { + if m != nil { + return m.IsEmailVerified } return false } -func (x *User) GetPhone() string { - if x != nil { - return x.Phone +func (m *User) GetPhone() string { + if m != nil { + return m.Phone } return "" } -func (x *User) GetIsPhoneVerified() bool { - if x != nil { - return x.IsPhoneVerified +func (m *User) GetIsPhoneVerified() bool { + if m != nil { + return m.IsPhoneVerified } return false } -func (x *User) GetCountry() string { - if x != nil { - return x.Country +func (m *User) GetCountry() string { + if m != nil { + return m.Country } return "" } -func (x *User) GetLocality() string { - if x != nil { - return x.Locality +func (m *User) GetLocality() string { + if m != nil { + return m.Locality } return "" } -func (x *User) GetPostalCode() string { - if x != nil { - return x.PostalCode +func (m *User) GetPostalCode() string { + if m != nil { + return m.PostalCode } return "" } -func (x *User) GetRegion() string { - if x != nil { - return x.Region +func (m *User) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *User) GetStreetAddress() string { - if x != nil { - return x.StreetAddress +func (m *User) GetStreetAddress() string { + if m != nil { + return m.StreetAddress } return "" } -func (x *User) GetPasswordChangeRequired() bool { - if x != nil { - return x.PasswordChangeRequired +func (m *User) GetPasswordChangeRequired() bool { + if m != nil { + return m.PasswordChangeRequired } return false } +func (m *User) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UserProfile struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` - FirstName string `protobuf:"bytes,3,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"` - LastName string `protobuf:"bytes,4,opt,name=last_name,json=lastName,proto3" json:"last_name,omitempty"` - NickName string `protobuf:"bytes,5,opt,name=nick_name,json=nickName,proto3" json:"nick_name,omitempty"` - DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - PreferredLanguage string `protobuf:"bytes,7,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` - Gender Gender `protobuf:"varint,8,opt,name=gender,proto3,enum=zitadel.auth.api.v1.Gender" json:"gender,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + FirstName string `protobuf:"bytes,3,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"` + LastName string `protobuf:"bytes,4,opt,name=last_name,json=lastName,proto3" json:"last_name,omitempty"` + NickName string `protobuf:"bytes,5,opt,name=nick_name,json=nickName,proto3" json:"nick_name,omitempty"` + DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + PreferredLanguage string `protobuf:"bytes,7,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` + Gender Gender `protobuf:"varint,8,opt,name=gender,proto3,enum=zitadel.auth.api.v1.Gender" json:"gender,omitempty"` + Sequence uint64 `protobuf:"varint,26,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserProfile) Reset() { - *x = UserProfile{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserProfile) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserProfile) ProtoMessage() {} - -func (x *UserProfile) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserProfile.ProtoReflect.Descriptor instead. +func (m *UserProfile) Reset() { *m = UserProfile{} } +func (m *UserProfile) String() string { return proto.CompactTextString(m) } +func (*UserProfile) ProtoMessage() {} func (*UserProfile) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{4} + return fileDescriptor_8bbd6f3875b0e874, []int{3} } -func (x *UserProfile) GetId() string { - if x != nil { - return x.Id +func (m *UserProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserProfile.Unmarshal(m, b) +} +func (m *UserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserProfile.Marshal(b, m, deterministic) +} +func (m *UserProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserProfile.Merge(m, src) +} +func (m *UserProfile) XXX_Size() int { + return xxx_messageInfo_UserProfile.Size(m) +} +func (m *UserProfile) XXX_DiscardUnknown() { + xxx_messageInfo_UserProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_UserProfile proto.InternalMessageInfo + +func (m *UserProfile) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *UserProfile) GetUserName() string { - if x != nil { - return x.UserName +func (m *UserProfile) GetUserName() string { + if m != nil { + return m.UserName } return "" } -func (x *UserProfile) GetFirstName() string { - if x != nil { - return x.FirstName +func (m *UserProfile) GetFirstName() string { + if m != nil { + return m.FirstName } return "" } -func (x *UserProfile) GetLastName() string { - if x != nil { - return x.LastName +func (m *UserProfile) GetLastName() string { + if m != nil { + return m.LastName } return "" } -func (x *UserProfile) GetNickName() string { - if x != nil { - return x.NickName +func (m *UserProfile) GetNickName() string { + if m != nil { + return m.NickName } return "" } -func (x *UserProfile) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (m *UserProfile) GetDisplayName() string { + if m != nil { + return m.DisplayName } return "" } -func (x *UserProfile) GetPreferredLanguage() string { - if x != nil { - return x.PreferredLanguage +func (m *UserProfile) GetPreferredLanguage() string { + if m != nil { + return m.PreferredLanguage } return "" } -func (x *UserProfile) GetGender() Gender { - if x != nil { - return x.Gender +func (m *UserProfile) GetGender() Gender { + if m != nil { + return m.Gender } return Gender_GENDER_UNSPECIFIED } +func (m *UserProfile) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserProfileRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FirstName string `protobuf:"bytes,1,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"` - LastName string `protobuf:"bytes,2,opt,name=last_name,json=lastName,proto3" json:"last_name,omitempty"` - NickName string `protobuf:"bytes,3,opt,name=nick_name,json=nickName,proto3" json:"nick_name,omitempty"` - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - PreferredLanguage string `protobuf:"bytes,5,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` - Gender Gender `protobuf:"varint,6,opt,name=gender,proto3,enum=zitadel.auth.api.v1.Gender" json:"gender,omitempty"` + FirstName string `protobuf:"bytes,1,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"` + LastName string `protobuf:"bytes,2,opt,name=last_name,json=lastName,proto3" json:"last_name,omitempty"` + NickName string `protobuf:"bytes,3,opt,name=nick_name,json=nickName,proto3" json:"nick_name,omitempty"` + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + PreferredLanguage string `protobuf:"bytes,5,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` + Gender Gender `protobuf:"varint,6,opt,name=gender,proto3,enum=zitadel.auth.api.v1.Gender" json:"gender,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UpdateUserProfileRequest) Reset() { - *x = UpdateUserProfileRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateUserProfileRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUserProfileRequest) ProtoMessage() {} - -func (x *UpdateUserProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUserProfileRequest.ProtoReflect.Descriptor instead. +func (m *UpdateUserProfileRequest) Reset() { *m = UpdateUserProfileRequest{} } +func (m *UpdateUserProfileRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateUserProfileRequest) ProtoMessage() {} func (*UpdateUserProfileRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{5} + return fileDescriptor_8bbd6f3875b0e874, []int{4} } -func (x *UpdateUserProfileRequest) GetFirstName() string { - if x != nil { - return x.FirstName +func (m *UpdateUserProfileRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserProfileRequest.Unmarshal(m, b) +} +func (m *UpdateUserProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserProfileRequest.Marshal(b, m, deterministic) +} +func (m *UpdateUserProfileRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserProfileRequest.Merge(m, src) +} +func (m *UpdateUserProfileRequest) XXX_Size() int { + return xxx_messageInfo_UpdateUserProfileRequest.Size(m) +} +func (m *UpdateUserProfileRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserProfileRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserProfileRequest proto.InternalMessageInfo + +func (m *UpdateUserProfileRequest) GetFirstName() string { + if m != nil { + return m.FirstName } return "" } -func (x *UpdateUserProfileRequest) GetLastName() string { - if x != nil { - return x.LastName +func (m *UpdateUserProfileRequest) GetLastName() string { + if m != nil { + return m.LastName } return "" } -func (x *UpdateUserProfileRequest) GetNickName() string { - if x != nil { - return x.NickName +func (m *UpdateUserProfileRequest) GetNickName() string { + if m != nil { + return m.NickName } return "" } -func (x *UpdateUserProfileRequest) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (m *UpdateUserProfileRequest) GetDisplayName() string { + if m != nil { + return m.DisplayName } return "" } -func (x *UpdateUserProfileRequest) GetPreferredLanguage() string { - if x != nil { - return x.PreferredLanguage +func (m *UpdateUserProfileRequest) GetPreferredLanguage() string { + if m != nil { + return m.PreferredLanguage } return "" } -func (x *UpdateUserProfileRequest) GetGender() Gender { - if x != nil { - return x.Gender +func (m *UpdateUserProfileRequest) GetGender() Gender { + if m != nil { + return m.Gender } return Gender_GENDER_UNSPECIFIED } type UserEmail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - IsEmailVerified bool `protobuf:"varint,3,opt,name=isEmailVerified,proto3" json:"isEmailVerified,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + IsEmailVerified bool `protobuf:"varint,3,opt,name=isEmailVerified,proto3" json:"isEmailVerified,omitempty"` + Sequence uint64 `protobuf:"varint,4,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserEmail) Reset() { - *x = UserEmail{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserEmail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserEmail) ProtoMessage() {} - -func (x *UserEmail) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserEmail.ProtoReflect.Descriptor instead. +func (m *UserEmail) Reset() { *m = UserEmail{} } +func (m *UserEmail) String() string { return proto.CompactTextString(m) } +func (*UserEmail) ProtoMessage() {} func (*UserEmail) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{6} + return fileDescriptor_8bbd6f3875b0e874, []int{5} } -func (x *UserEmail) GetId() string { - if x != nil { - return x.Id +func (m *UserEmail) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserEmail.Unmarshal(m, b) +} +func (m *UserEmail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserEmail.Marshal(b, m, deterministic) +} +func (m *UserEmail) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserEmail.Merge(m, src) +} +func (m *UserEmail) XXX_Size() int { + return xxx_messageInfo_UserEmail.Size(m) +} +func (m *UserEmail) XXX_DiscardUnknown() { + xxx_messageInfo_UserEmail.DiscardUnknown(m) +} + +var xxx_messageInfo_UserEmail proto.InternalMessageInfo + +func (m *UserEmail) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *UserEmail) GetEmail() string { - if x != nil { - return x.Email +func (m *UserEmail) GetEmail() string { + if m != nil { + return m.Email } return "" } -func (x *UserEmail) GetIsEmailVerified() bool { - if x != nil { - return x.IsEmailVerified +func (m *UserEmail) GetIsEmailVerified() bool { + if m != nil { + return m.IsEmailVerified } return false } +func (m *UserEmail) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type VerifyMyUserEmailRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VerifyMyUserEmailRequest) Reset() { - *x = VerifyMyUserEmailRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VerifyMyUserEmailRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyMyUserEmailRequest) ProtoMessage() {} - -func (x *VerifyMyUserEmailRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyMyUserEmailRequest.ProtoReflect.Descriptor instead. +func (m *VerifyMyUserEmailRequest) Reset() { *m = VerifyMyUserEmailRequest{} } +func (m *VerifyMyUserEmailRequest) String() string { return proto.CompactTextString(m) } +func (*VerifyMyUserEmailRequest) ProtoMessage() {} func (*VerifyMyUserEmailRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{7} + return fileDescriptor_8bbd6f3875b0e874, []int{6} } -func (x *VerifyMyUserEmailRequest) GetCode() string { - if x != nil { - return x.Code +func (m *VerifyMyUserEmailRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VerifyMyUserEmailRequest.Unmarshal(m, b) +} +func (m *VerifyMyUserEmailRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VerifyMyUserEmailRequest.Marshal(b, m, deterministic) +} +func (m *VerifyMyUserEmailRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VerifyMyUserEmailRequest.Merge(m, src) +} +func (m *VerifyMyUserEmailRequest) XXX_Size() int { + return xxx_messageInfo_VerifyMyUserEmailRequest.Size(m) +} +func (m *VerifyMyUserEmailRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VerifyMyUserEmailRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_VerifyMyUserEmailRequest proto.InternalMessageInfo + +func (m *VerifyMyUserEmailRequest) GetCode() string { + if m != nil { + return m.Code } return "" } type VerifyUserEmailRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VerifyUserEmailRequest) Reset() { - *x = VerifyUserEmailRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VerifyUserEmailRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyUserEmailRequest) ProtoMessage() {} - -func (x *VerifyUserEmailRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyUserEmailRequest.ProtoReflect.Descriptor instead. +func (m *VerifyUserEmailRequest) Reset() { *m = VerifyUserEmailRequest{} } +func (m *VerifyUserEmailRequest) String() string { return proto.CompactTextString(m) } +func (*VerifyUserEmailRequest) ProtoMessage() {} func (*VerifyUserEmailRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{8} + return fileDescriptor_8bbd6f3875b0e874, []int{7} } -func (x *VerifyUserEmailRequest) GetId() string { - if x != nil { - return x.Id +func (m *VerifyUserEmailRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VerifyUserEmailRequest.Unmarshal(m, b) +} +func (m *VerifyUserEmailRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VerifyUserEmailRequest.Marshal(b, m, deterministic) +} +func (m *VerifyUserEmailRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VerifyUserEmailRequest.Merge(m, src) +} +func (m *VerifyUserEmailRequest) XXX_Size() int { + return xxx_messageInfo_VerifyUserEmailRequest.Size(m) +} +func (m *VerifyUserEmailRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VerifyUserEmailRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_VerifyUserEmailRequest proto.InternalMessageInfo + +func (m *VerifyUserEmailRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *VerifyUserEmailRequest) GetCode() string { - if x != nil { - return x.Code +func (m *VerifyUserEmailRequest) GetCode() string { + if m != nil { + return m.Code } return "" } type UpdateUserEmailRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UpdateUserEmailRequest) Reset() { - *x = UpdateUserEmailRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateUserEmailRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUserEmailRequest) ProtoMessage() {} - -func (x *UpdateUserEmailRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUserEmailRequest.ProtoReflect.Descriptor instead. +func (m *UpdateUserEmailRequest) Reset() { *m = UpdateUserEmailRequest{} } +func (m *UpdateUserEmailRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateUserEmailRequest) ProtoMessage() {} func (*UpdateUserEmailRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{9} + return fileDescriptor_8bbd6f3875b0e874, []int{8} } -func (x *UpdateUserEmailRequest) GetEmail() string { - if x != nil { - return x.Email +func (m *UpdateUserEmailRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserEmailRequest.Unmarshal(m, b) +} +func (m *UpdateUserEmailRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserEmailRequest.Marshal(b, m, deterministic) +} +func (m *UpdateUserEmailRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserEmailRequest.Merge(m, src) +} +func (m *UpdateUserEmailRequest) XXX_Size() int { + return xxx_messageInfo_UpdateUserEmailRequest.Size(m) +} +func (m *UpdateUserEmailRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserEmailRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserEmailRequest proto.InternalMessageInfo + +func (m *UpdateUserEmailRequest) GetEmail() string { + if m != nil { + return m.Email } return "" } type UserPhone struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Phone string `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"` - IsPhoneVerified bool `protobuf:"varint,3,opt,name=is_phone_verified,json=isPhoneVerified,proto3" json:"is_phone_verified,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Phone string `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"` + IsPhoneVerified bool `protobuf:"varint,3,opt,name=is_phone_verified,json=isPhoneVerified,proto3" json:"is_phone_verified,omitempty"` + Sequence uint64 `protobuf:"varint,4,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserPhone) Reset() { - *x = UserPhone{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserPhone) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserPhone) ProtoMessage() {} - -func (x *UserPhone) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserPhone.ProtoReflect.Descriptor instead. +func (m *UserPhone) Reset() { *m = UserPhone{} } +func (m *UserPhone) String() string { return proto.CompactTextString(m) } +func (*UserPhone) ProtoMessage() {} func (*UserPhone) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{10} + return fileDescriptor_8bbd6f3875b0e874, []int{9} } -func (x *UserPhone) GetId() string { - if x != nil { - return x.Id +func (m *UserPhone) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserPhone.Unmarshal(m, b) +} +func (m *UserPhone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserPhone.Marshal(b, m, deterministic) +} +func (m *UserPhone) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserPhone.Merge(m, src) +} +func (m *UserPhone) XXX_Size() int { + return xxx_messageInfo_UserPhone.Size(m) +} +func (m *UserPhone) XXX_DiscardUnknown() { + xxx_messageInfo_UserPhone.DiscardUnknown(m) +} + +var xxx_messageInfo_UserPhone proto.InternalMessageInfo + +func (m *UserPhone) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *UserPhone) GetPhone() string { - if x != nil { - return x.Phone +func (m *UserPhone) GetPhone() string { + if m != nil { + return m.Phone } return "" } -func (x *UserPhone) GetIsPhoneVerified() bool { - if x != nil { - return x.IsPhoneVerified +func (m *UserPhone) GetIsPhoneVerified() bool { + if m != nil { + return m.IsPhoneVerified } return false } +func (m *UserPhone) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserPhoneRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Phone string `protobuf:"bytes,1,opt,name=phone,proto3" json:"phone,omitempty"` + Phone string `protobuf:"bytes,1,opt,name=phone,proto3" json:"phone,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UpdateUserPhoneRequest) Reset() { - *x = UpdateUserPhoneRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateUserPhoneRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUserPhoneRequest) ProtoMessage() {} - -func (x *UpdateUserPhoneRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUserPhoneRequest.ProtoReflect.Descriptor instead. +func (m *UpdateUserPhoneRequest) Reset() { *m = UpdateUserPhoneRequest{} } +func (m *UpdateUserPhoneRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateUserPhoneRequest) ProtoMessage() {} func (*UpdateUserPhoneRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{11} + return fileDescriptor_8bbd6f3875b0e874, []int{10} } -func (x *UpdateUserPhoneRequest) GetPhone() string { - if x != nil { - return x.Phone +func (m *UpdateUserPhoneRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserPhoneRequest.Unmarshal(m, b) +} +func (m *UpdateUserPhoneRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserPhoneRequest.Marshal(b, m, deterministic) +} +func (m *UpdateUserPhoneRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserPhoneRequest.Merge(m, src) +} +func (m *UpdateUserPhoneRequest) XXX_Size() int { + return xxx_messageInfo_UpdateUserPhoneRequest.Size(m) +} +func (m *UpdateUserPhoneRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserPhoneRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserPhoneRequest proto.InternalMessageInfo + +func (m *UpdateUserPhoneRequest) GetPhone() string { + if m != nil { + return m.Phone } return "" } type VerifyUserPhoneRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VerifyUserPhoneRequest) Reset() { - *x = VerifyUserPhoneRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VerifyUserPhoneRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyUserPhoneRequest) ProtoMessage() {} - -func (x *VerifyUserPhoneRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyUserPhoneRequest.ProtoReflect.Descriptor instead. +func (m *VerifyUserPhoneRequest) Reset() { *m = VerifyUserPhoneRequest{} } +func (m *VerifyUserPhoneRequest) String() string { return proto.CompactTextString(m) } +func (*VerifyUserPhoneRequest) ProtoMessage() {} func (*VerifyUserPhoneRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{12} + return fileDescriptor_8bbd6f3875b0e874, []int{11} } -func (x *VerifyUserPhoneRequest) GetCode() string { - if x != nil { - return x.Code +func (m *VerifyUserPhoneRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VerifyUserPhoneRequest.Unmarshal(m, b) +} +func (m *VerifyUserPhoneRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VerifyUserPhoneRequest.Marshal(b, m, deterministic) +} +func (m *VerifyUserPhoneRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VerifyUserPhoneRequest.Merge(m, src) +} +func (m *VerifyUserPhoneRequest) XXX_Size() int { + return xxx_messageInfo_VerifyUserPhoneRequest.Size(m) +} +func (m *VerifyUserPhoneRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VerifyUserPhoneRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_VerifyUserPhoneRequest proto.InternalMessageInfo + +func (m *VerifyUserPhoneRequest) GetCode() string { + if m != nil { + return m.Code } return "" } type UserAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Country string `protobuf:"bytes,2,opt,name=country,proto3" json:"country,omitempty"` - Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` - PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` - StreetAddress string `protobuf:"bytes,6,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Country string `protobuf:"bytes,2,opt,name=country,proto3" json:"country,omitempty"` + Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` + PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` + StreetAddress string `protobuf:"bytes,6,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Sequence uint64 `protobuf:"varint,7,opt,name=sequence,proto3" json:"sequence,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UserAddress) Reset() { - *x = UserAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UserAddress) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UserAddress) ProtoMessage() {} - -func (x *UserAddress) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UserAddress.ProtoReflect.Descriptor instead. +func (m *UserAddress) Reset() { *m = UserAddress{} } +func (m *UserAddress) String() string { return proto.CompactTextString(m) } +func (*UserAddress) ProtoMessage() {} func (*UserAddress) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{13} + return fileDescriptor_8bbd6f3875b0e874, []int{12} } -func (x *UserAddress) GetId() string { - if x != nil { - return x.Id +func (m *UserAddress) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserAddress.Unmarshal(m, b) +} +func (m *UserAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserAddress.Marshal(b, m, deterministic) +} +func (m *UserAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserAddress.Merge(m, src) +} +func (m *UserAddress) XXX_Size() int { + return xxx_messageInfo_UserAddress.Size(m) +} +func (m *UserAddress) XXX_DiscardUnknown() { + xxx_messageInfo_UserAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_UserAddress proto.InternalMessageInfo + +func (m *UserAddress) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *UserAddress) GetCountry() string { - if x != nil { - return x.Country +func (m *UserAddress) GetCountry() string { + if m != nil { + return m.Country } return "" } -func (x *UserAddress) GetLocality() string { - if x != nil { - return x.Locality +func (m *UserAddress) GetLocality() string { + if m != nil { + return m.Locality } return "" } -func (x *UserAddress) GetPostalCode() string { - if x != nil { - return x.PostalCode +func (m *UserAddress) GetPostalCode() string { + if m != nil { + return m.PostalCode } return "" } -func (x *UserAddress) GetRegion() string { - if x != nil { - return x.Region +func (m *UserAddress) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *UserAddress) GetStreetAddress() string { - if x != nil { - return x.StreetAddress +func (m *UserAddress) GetStreetAddress() string { + if m != nil { + return m.StreetAddress } return "" } +func (m *UserAddress) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserAddressRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"` - Locality string `protobuf:"bytes,2,opt,name=locality,proto3" json:"locality,omitempty"` - PostalCode string `protobuf:"bytes,3,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"` + Locality string `protobuf:"bytes,2,opt,name=locality,proto3" json:"locality,omitempty"` + PostalCode string `protobuf:"bytes,3,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *UpdateUserAddressRequest) Reset() { - *x = UpdateUserAddressRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateUserAddressRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUserAddressRequest) ProtoMessage() {} - -func (x *UpdateUserAddressRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUserAddressRequest.ProtoReflect.Descriptor instead. +func (m *UpdateUserAddressRequest) Reset() { *m = UpdateUserAddressRequest{} } +func (m *UpdateUserAddressRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateUserAddressRequest) ProtoMessage() {} func (*UpdateUserAddressRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{14} + return fileDescriptor_8bbd6f3875b0e874, []int{13} } -func (x *UpdateUserAddressRequest) GetCountry() string { - if x != nil { - return x.Country +func (m *UpdateUserAddressRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserAddressRequest.Unmarshal(m, b) +} +func (m *UpdateUserAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserAddressRequest.Marshal(b, m, deterministic) +} +func (m *UpdateUserAddressRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserAddressRequest.Merge(m, src) +} +func (m *UpdateUserAddressRequest) XXX_Size() int { + return xxx_messageInfo_UpdateUserAddressRequest.Size(m) +} +func (m *UpdateUserAddressRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserAddressRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserAddressRequest proto.InternalMessageInfo + +func (m *UpdateUserAddressRequest) GetCountry() string { + if m != nil { + return m.Country } return "" } -func (x *UpdateUserAddressRequest) GetLocality() string { - if x != nil { - return x.Locality +func (m *UpdateUserAddressRequest) GetLocality() string { + if m != nil { + return m.Locality } return "" } -func (x *UpdateUserAddressRequest) GetPostalCode() string { - if x != nil { - return x.PostalCode +func (m *UpdateUserAddressRequest) GetPostalCode() string { + if m != nil { + return m.PostalCode } return "" } -func (x *UpdateUserAddressRequest) GetRegion() string { - if x != nil { - return x.Region +func (m *UpdateUserAddressRequest) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *UpdateUserAddressRequest) GetStreetAddress() string { - if x != nil { - return x.StreetAddress +func (m *UpdateUserAddressRequest) GetStreetAddress() string { + if m != nil { + return m.StreetAddress } return "" } type PasswordID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PasswordID) Reset() { - *x = PasswordID{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PasswordID) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PasswordID) ProtoMessage() {} - -func (x *PasswordID) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PasswordID.ProtoReflect.Descriptor instead. +func (m *PasswordID) Reset() { *m = PasswordID{} } +func (m *PasswordID) String() string { return proto.CompactTextString(m) } +func (*PasswordID) ProtoMessage() {} func (*PasswordID) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{15} + return fileDescriptor_8bbd6f3875b0e874, []int{14} } -func (x *PasswordID) GetId() string { - if x != nil { - return x.Id +func (m *PasswordID) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PasswordID.Unmarshal(m, b) +} +func (m *PasswordID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PasswordID.Marshal(b, m, deterministic) +} +func (m *PasswordID) XXX_Merge(src proto.Message) { + xxx_messageInfo_PasswordID.Merge(m, src) +} +func (m *PasswordID) XXX_Size() int { + return xxx_messageInfo_PasswordID.Size(m) +} +func (m *PasswordID) XXX_DiscardUnknown() { + xxx_messageInfo_PasswordID.DiscardUnknown(m) +} + +var xxx_messageInfo_PasswordID proto.InternalMessageInfo + +func (m *PasswordID) GetId() string { + if m != nil { + return m.Id } return "" } type PasswordRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PasswordRequest) Reset() { - *x = PasswordRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PasswordRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PasswordRequest) ProtoMessage() {} - -func (x *PasswordRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PasswordRequest.ProtoReflect.Descriptor instead. +func (m *PasswordRequest) Reset() { *m = PasswordRequest{} } +func (m *PasswordRequest) String() string { return proto.CompactTextString(m) } +func (*PasswordRequest) ProtoMessage() {} func (*PasswordRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{16} + return fileDescriptor_8bbd6f3875b0e874, []int{15} } -func (x *PasswordRequest) GetPassword() string { - if x != nil { - return x.Password +func (m *PasswordRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PasswordRequest.Unmarshal(m, b) +} +func (m *PasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PasswordRequest.Marshal(b, m, deterministic) +} +func (m *PasswordRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PasswordRequest.Merge(m, src) +} +func (m *PasswordRequest) XXX_Size() int { + return xxx_messageInfo_PasswordRequest.Size(m) +} +func (m *PasswordRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PasswordRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PasswordRequest proto.InternalMessageInfo + +func (m *PasswordRequest) GetPassword() string { + if m != nil { + return m.Password } return "" } type PasswordChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OldPassword string `protobuf:"bytes,1,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` - NewPassword string `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` + OldPassword string `protobuf:"bytes,1,opt,name=old_password,json=oldPassword,proto3" json:"old_password,omitempty"` + NewPassword string `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PasswordChange) Reset() { - *x = PasswordChange{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PasswordChange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PasswordChange) ProtoMessage() {} - -func (x *PasswordChange) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PasswordChange.ProtoReflect.Descriptor instead. +func (m *PasswordChange) Reset() { *m = PasswordChange{} } +func (m *PasswordChange) String() string { return proto.CompactTextString(m) } +func (*PasswordChange) ProtoMessage() {} func (*PasswordChange) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{17} + return fileDescriptor_8bbd6f3875b0e874, []int{16} } -func (x *PasswordChange) GetOldPassword() string { - if x != nil { - return x.OldPassword +func (m *PasswordChange) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PasswordChange.Unmarshal(m, b) +} +func (m *PasswordChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PasswordChange.Marshal(b, m, deterministic) +} +func (m *PasswordChange) XXX_Merge(src proto.Message) { + xxx_messageInfo_PasswordChange.Merge(m, src) +} +func (m *PasswordChange) XXX_Size() int { + return xxx_messageInfo_PasswordChange.Size(m) +} +func (m *PasswordChange) XXX_DiscardUnknown() { + xxx_messageInfo_PasswordChange.DiscardUnknown(m) +} + +var xxx_messageInfo_PasswordChange proto.InternalMessageInfo + +func (m *PasswordChange) GetOldPassword() string { + if m != nil { + return m.OldPassword } return "" } -func (x *PasswordChange) GetNewPassword() string { - if x != nil { - return x.NewPassword +func (m *PasswordChange) GetNewPassword() string { + if m != nil { + return m.NewPassword } return "" } type VerifyMfaOtp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VerifyMfaOtp) Reset() { - *x = VerifyMfaOtp{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VerifyMfaOtp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyMfaOtp) ProtoMessage() {} - -func (x *VerifyMfaOtp) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyMfaOtp.ProtoReflect.Descriptor instead. +func (m *VerifyMfaOtp) Reset() { *m = VerifyMfaOtp{} } +func (m *VerifyMfaOtp) String() string { return proto.CompactTextString(m) } +func (*VerifyMfaOtp) ProtoMessage() {} func (*VerifyMfaOtp) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{18} + return fileDescriptor_8bbd6f3875b0e874, []int{17} } -func (x *VerifyMfaOtp) GetCode() string { - if x != nil { - return x.Code +func (m *VerifyMfaOtp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VerifyMfaOtp.Unmarshal(m, b) +} +func (m *VerifyMfaOtp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VerifyMfaOtp.Marshal(b, m, deterministic) +} +func (m *VerifyMfaOtp) XXX_Merge(src proto.Message) { + xxx_messageInfo_VerifyMfaOtp.Merge(m, src) +} +func (m *VerifyMfaOtp) XXX_Size() int { + return xxx_messageInfo_VerifyMfaOtp.Size(m) +} +func (m *VerifyMfaOtp) XXX_DiscardUnknown() { + xxx_messageInfo_VerifyMfaOtp.DiscardUnknown(m) +} + +var xxx_messageInfo_VerifyMfaOtp proto.InternalMessageInfo + +func (m *VerifyMfaOtp) GetCode() string { + if m != nil { + return m.Code } return "" } type MultiFactors struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Mfas []*MultiFactor `protobuf:"bytes,1,rep,name=mfas,proto3" json:"mfas,omitempty"` + Mfas []*MultiFactor `protobuf:"bytes,1,rep,name=mfas,proto3" json:"mfas,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MultiFactors) Reset() { - *x = MultiFactors{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiFactors) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiFactors) ProtoMessage() {} - -func (x *MultiFactors) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiFactors.ProtoReflect.Descriptor instead. +func (m *MultiFactors) Reset() { *m = MultiFactors{} } +func (m *MultiFactors) String() string { return proto.CompactTextString(m) } +func (*MultiFactors) ProtoMessage() {} func (*MultiFactors) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{19} + return fileDescriptor_8bbd6f3875b0e874, []int{18} } -func (x *MultiFactors) GetMfas() []*MultiFactor { - if x != nil { - return x.Mfas +func (m *MultiFactors) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MultiFactors.Unmarshal(m, b) +} +func (m *MultiFactors) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MultiFactors.Marshal(b, m, deterministic) +} +func (m *MultiFactors) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiFactors.Merge(m, src) +} +func (m *MultiFactors) XXX_Size() int { + return xxx_messageInfo_MultiFactors.Size(m) +} +func (m *MultiFactors) XXX_DiscardUnknown() { + xxx_messageInfo_MultiFactors.DiscardUnknown(m) +} + +var xxx_messageInfo_MultiFactors proto.InternalMessageInfo + +func (m *MultiFactors) GetMfas() []*MultiFactor { + if m != nil { + return m.Mfas } return nil } type MultiFactor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type MfaType `protobuf:"varint,1,opt,name=type,proto3,enum=zitadel.auth.api.v1.MfaType" json:"type,omitempty"` - State MFAState `protobuf:"varint,2,opt,name=state,proto3,enum=zitadel.auth.api.v1.MFAState" json:"state,omitempty"` + Type MfaType `protobuf:"varint,1,opt,name=type,proto3,enum=zitadel.auth.api.v1.MfaType" json:"type,omitempty"` + State MFAState `protobuf:"varint,2,opt,name=state,proto3,enum=zitadel.auth.api.v1.MFAState" json:"state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MultiFactor) Reset() { - *x = MultiFactor{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiFactor) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiFactor) ProtoMessage() {} - -func (x *MultiFactor) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MultiFactor.ProtoReflect.Descriptor instead. +func (m *MultiFactor) Reset() { *m = MultiFactor{} } +func (m *MultiFactor) String() string { return proto.CompactTextString(m) } +func (*MultiFactor) ProtoMessage() {} func (*MultiFactor) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{20} + return fileDescriptor_8bbd6f3875b0e874, []int{19} } -func (x *MultiFactor) GetType() MfaType { - if x != nil { - return x.Type +func (m *MultiFactor) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MultiFactor.Unmarshal(m, b) +} +func (m *MultiFactor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MultiFactor.Marshal(b, m, deterministic) +} +func (m *MultiFactor) XXX_Merge(src proto.Message) { + xxx_messageInfo_MultiFactor.Merge(m, src) +} +func (m *MultiFactor) XXX_Size() int { + return xxx_messageInfo_MultiFactor.Size(m) +} +func (m *MultiFactor) XXX_DiscardUnknown() { + xxx_messageInfo_MultiFactor.DiscardUnknown(m) +} + +var xxx_messageInfo_MultiFactor proto.InternalMessageInfo + +func (m *MultiFactor) GetType() MfaType { + if m != nil { + return m.Type } return MfaType_MFATYPE_UNSPECIFIED } -func (x *MultiFactor) GetState() MFAState { - if x != nil { - return x.State +func (m *MultiFactor) GetState() MFAState { + if m != nil { + return m.State } return MFAState_MFASTATE_UNSPECIFIED } type MfaOtpResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Secret string `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"` - State MFAState `protobuf:"varint,4,opt,name=state,proto3,enum=zitadel.auth.api.v1.MFAState" json:"state,omitempty"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Secret string `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"` + State MFAState `protobuf:"varint,4,opt,name=state,proto3,enum=zitadel.auth.api.v1.MFAState" json:"state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MfaOtpResponse) Reset() { - *x = MfaOtpResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MfaOtpResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MfaOtpResponse) ProtoMessage() {} - -func (x *MfaOtpResponse) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MfaOtpResponse.ProtoReflect.Descriptor instead. +func (m *MfaOtpResponse) Reset() { *m = MfaOtpResponse{} } +func (m *MfaOtpResponse) String() string { return proto.CompactTextString(m) } +func (*MfaOtpResponse) ProtoMessage() {} func (*MfaOtpResponse) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{21} + return fileDescriptor_8bbd6f3875b0e874, []int{20} } -func (x *MfaOtpResponse) GetUserId() string { - if x != nil { - return x.UserId +func (m *MfaOtpResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MfaOtpResponse.Unmarshal(m, b) +} +func (m *MfaOtpResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MfaOtpResponse.Marshal(b, m, deterministic) +} +func (m *MfaOtpResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MfaOtpResponse.Merge(m, src) +} +func (m *MfaOtpResponse) XXX_Size() int { + return xxx_messageInfo_MfaOtpResponse.Size(m) +} +func (m *MfaOtpResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MfaOtpResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MfaOtpResponse proto.InternalMessageInfo + +func (m *MfaOtpResponse) GetUserId() string { + if m != nil { + return m.UserId } return "" } -func (x *MfaOtpResponse) GetUrl() string { - if x != nil { - return x.Url +func (m *MfaOtpResponse) GetUrl() string { + if m != nil { + return m.Url } return "" } -func (x *MfaOtpResponse) GetSecret() string { - if x != nil { - return x.Secret +func (m *MfaOtpResponse) GetSecret() string { + if m != nil { + return m.Secret } return "" } -func (x *MfaOtpResponse) GetState() MFAState { - if x != nil { - return x.State +func (m *MfaOtpResponse) GetState() MFAState { + if m != nil { + return m.State } return MFAState_MFASTATE_UNSPECIFIED } type OIDCClientAuth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + ClientSecret string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *OIDCClientAuth) Reset() { - *x = OIDCClientAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OIDCClientAuth) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OIDCClientAuth) ProtoMessage() {} - -func (x *OIDCClientAuth) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OIDCClientAuth.ProtoReflect.Descriptor instead. +func (m *OIDCClientAuth) Reset() { *m = OIDCClientAuth{} } +func (m *OIDCClientAuth) String() string { return proto.CompactTextString(m) } +func (*OIDCClientAuth) ProtoMessage() {} func (*OIDCClientAuth) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{22} + return fileDescriptor_8bbd6f3875b0e874, []int{21} } -func (x *OIDCClientAuth) GetClientId() string { - if x != nil { - return x.ClientId +func (m *OIDCClientAuth) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OIDCClientAuth.Unmarshal(m, b) +} +func (m *OIDCClientAuth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OIDCClientAuth.Marshal(b, m, deterministic) +} +func (m *OIDCClientAuth) XXX_Merge(src proto.Message) { + xxx_messageInfo_OIDCClientAuth.Merge(m, src) +} +func (m *OIDCClientAuth) XXX_Size() int { + return xxx_messageInfo_OIDCClientAuth.Size(m) +} +func (m *OIDCClientAuth) XXX_DiscardUnknown() { + xxx_messageInfo_OIDCClientAuth.DiscardUnknown(m) +} + +var xxx_messageInfo_OIDCClientAuth proto.InternalMessageInfo + +func (m *OIDCClientAuth) GetClientId() string { + if m != nil { + return m.ClientId } return "" } -func (x *OIDCClientAuth) GetClientSecret() string { - if x != nil { - return x.ClientSecret +func (m *OIDCClientAuth) GetClientSecret() string { + if m != nil { + return m.ClientSecret } return "" } type MyProjectOrgSearchRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` - Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - Asc bool `protobuf:"varint,4,opt,name=asc,proto3" json:"asc,omitempty"` - Queries []*MyProjectOrgSearchQuery `protobuf:"bytes,5,rep,name=queries,proto3" json:"queries,omitempty"` + Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Asc bool `protobuf:"varint,4,opt,name=asc,proto3" json:"asc,omitempty"` + Queries []*MyProjectOrgSearchQuery `protobuf:"bytes,5,rep,name=queries,proto3" json:"queries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MyProjectOrgSearchRequest) Reset() { - *x = MyProjectOrgSearchRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MyProjectOrgSearchRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MyProjectOrgSearchRequest) ProtoMessage() {} - -func (x *MyProjectOrgSearchRequest) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MyProjectOrgSearchRequest.ProtoReflect.Descriptor instead. +func (m *MyProjectOrgSearchRequest) Reset() { *m = MyProjectOrgSearchRequest{} } +func (m *MyProjectOrgSearchRequest) String() string { return proto.CompactTextString(m) } +func (*MyProjectOrgSearchRequest) ProtoMessage() {} func (*MyProjectOrgSearchRequest) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{23} + return fileDescriptor_8bbd6f3875b0e874, []int{22} } -func (x *MyProjectOrgSearchRequest) GetOffset() uint64 { - if x != nil { - return x.Offset +func (m *MyProjectOrgSearchRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MyProjectOrgSearchRequest.Unmarshal(m, b) +} +func (m *MyProjectOrgSearchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MyProjectOrgSearchRequest.Marshal(b, m, deterministic) +} +func (m *MyProjectOrgSearchRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MyProjectOrgSearchRequest.Merge(m, src) +} +func (m *MyProjectOrgSearchRequest) XXX_Size() int { + return xxx_messageInfo_MyProjectOrgSearchRequest.Size(m) +} +func (m *MyProjectOrgSearchRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MyProjectOrgSearchRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MyProjectOrgSearchRequest proto.InternalMessageInfo + +func (m *MyProjectOrgSearchRequest) GetOffset() uint64 { + if m != nil { + return m.Offset } return 0 } -func (x *MyProjectOrgSearchRequest) GetLimit() uint64 { - if x != nil { - return x.Limit +func (m *MyProjectOrgSearchRequest) GetLimit() uint64 { + if m != nil { + return m.Limit } return 0 } -func (x *MyProjectOrgSearchRequest) GetAsc() bool { - if x != nil { - return x.Asc +func (m *MyProjectOrgSearchRequest) GetAsc() bool { + if m != nil { + return m.Asc } return false } -func (x *MyProjectOrgSearchRequest) GetQueries() []*MyProjectOrgSearchQuery { - if x != nil { - return x.Queries +func (m *MyProjectOrgSearchRequest) GetQueries() []*MyProjectOrgSearchQuery { + if m != nil { + return m.Queries } return nil } type MyProjectOrgSearchQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key MyProjectOrgSearchKey `protobuf:"varint,1,opt,name=key,proto3,enum=zitadel.auth.api.v1.MyProjectOrgSearchKey" json:"key,omitempty"` - Method SearchMethod `protobuf:"varint,2,opt,name=method,proto3,enum=zitadel.auth.api.v1.SearchMethod" json:"method,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Key MyProjectOrgSearchKey `protobuf:"varint,1,opt,name=key,proto3,enum=zitadel.auth.api.v1.MyProjectOrgSearchKey" json:"key,omitempty"` + Method SearchMethod `protobuf:"varint,2,opt,name=method,proto3,enum=zitadel.auth.api.v1.SearchMethod" json:"method,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MyProjectOrgSearchQuery) Reset() { - *x = MyProjectOrgSearchQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MyProjectOrgSearchQuery) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MyProjectOrgSearchQuery) ProtoMessage() {} - -func (x *MyProjectOrgSearchQuery) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MyProjectOrgSearchQuery.ProtoReflect.Descriptor instead. +func (m *MyProjectOrgSearchQuery) Reset() { *m = MyProjectOrgSearchQuery{} } +func (m *MyProjectOrgSearchQuery) String() string { return proto.CompactTextString(m) } +func (*MyProjectOrgSearchQuery) ProtoMessage() {} func (*MyProjectOrgSearchQuery) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{24} + return fileDescriptor_8bbd6f3875b0e874, []int{23} } -func (x *MyProjectOrgSearchQuery) GetKey() MyProjectOrgSearchKey { - if x != nil { - return x.Key +func (m *MyProjectOrgSearchQuery) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MyProjectOrgSearchQuery.Unmarshal(m, b) +} +func (m *MyProjectOrgSearchQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MyProjectOrgSearchQuery.Marshal(b, m, deterministic) +} +func (m *MyProjectOrgSearchQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_MyProjectOrgSearchQuery.Merge(m, src) +} +func (m *MyProjectOrgSearchQuery) XXX_Size() int { + return xxx_messageInfo_MyProjectOrgSearchQuery.Size(m) +} +func (m *MyProjectOrgSearchQuery) XXX_DiscardUnknown() { + xxx_messageInfo_MyProjectOrgSearchQuery.DiscardUnknown(m) +} + +var xxx_messageInfo_MyProjectOrgSearchQuery proto.InternalMessageInfo + +func (m *MyProjectOrgSearchQuery) GetKey() MyProjectOrgSearchKey { + if m != nil { + return m.Key } return MyProjectOrgSearchKey_MYPROJECTORGSEARCHKEY_UNSPECIFIED } -func (x *MyProjectOrgSearchQuery) GetMethod() SearchMethod { - if x != nil { - return x.Method +func (m *MyProjectOrgSearchQuery) GetMethod() SearchMethod { + if m != nil { + return m.Method } return SearchMethod_SEARCHMETHOD_EQUALS } -func (x *MyProjectOrgSearchQuery) GetValue() string { - if x != nil { - return x.Value +func (m *MyProjectOrgSearchQuery) GetValue() string { + if m != nil { + return m.Value } return "" } type MyProjectOrgSearchResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` - Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - TotalResult uint64 `protobuf:"varint,3,opt,name=total_result,json=totalResult,proto3" json:"total_result,omitempty"` - Result []*Org `protobuf:"bytes,4,rep,name=result,proto3" json:"result,omitempty"` + Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + TotalResult uint64 `protobuf:"varint,3,opt,name=total_result,json=totalResult,proto3" json:"total_result,omitempty"` + Result []*Org `protobuf:"bytes,4,rep,name=result,proto3" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MyProjectOrgSearchResponse) Reset() { - *x = MyProjectOrgSearchResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MyProjectOrgSearchResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MyProjectOrgSearchResponse) ProtoMessage() {} - -func (x *MyProjectOrgSearchResponse) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MyProjectOrgSearchResponse.ProtoReflect.Descriptor instead. +func (m *MyProjectOrgSearchResponse) Reset() { *m = MyProjectOrgSearchResponse{} } +func (m *MyProjectOrgSearchResponse) String() string { return proto.CompactTextString(m) } +func (*MyProjectOrgSearchResponse) ProtoMessage() {} func (*MyProjectOrgSearchResponse) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{25} + return fileDescriptor_8bbd6f3875b0e874, []int{24} } -func (x *MyProjectOrgSearchResponse) GetOffset() uint64 { - if x != nil { - return x.Offset +func (m *MyProjectOrgSearchResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MyProjectOrgSearchResponse.Unmarshal(m, b) +} +func (m *MyProjectOrgSearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MyProjectOrgSearchResponse.Marshal(b, m, deterministic) +} +func (m *MyProjectOrgSearchResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MyProjectOrgSearchResponse.Merge(m, src) +} +func (m *MyProjectOrgSearchResponse) XXX_Size() int { + return xxx_messageInfo_MyProjectOrgSearchResponse.Size(m) +} +func (m *MyProjectOrgSearchResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MyProjectOrgSearchResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MyProjectOrgSearchResponse proto.InternalMessageInfo + +func (m *MyProjectOrgSearchResponse) GetOffset() uint64 { + if m != nil { + return m.Offset } return 0 } -func (x *MyProjectOrgSearchResponse) GetLimit() uint64 { - if x != nil { - return x.Limit +func (m *MyProjectOrgSearchResponse) GetLimit() uint64 { + if m != nil { + return m.Limit } return 0 } -func (x *MyProjectOrgSearchResponse) GetTotalResult() uint64 { - if x != nil { - return x.TotalResult +func (m *MyProjectOrgSearchResponse) GetTotalResult() uint64 { + if m != nil { + return m.TotalResult } return 0 } -func (x *MyProjectOrgSearchResponse) GetResult() []*Org { - if x != nil { - return x.Result +func (m *MyProjectOrgSearchResponse) GetResult() []*Org { + if m != nil { + return m.Result } return nil } type IsAdminResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IsAdmin bool `protobuf:"varint,1,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"` + IsAdmin bool `protobuf:"varint,1,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *IsAdminResponse) Reset() { - *x = IsAdminResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *IsAdminResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IsAdminResponse) ProtoMessage() {} - -func (x *IsAdminResponse) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use IsAdminResponse.ProtoReflect.Descriptor instead. +func (m *IsAdminResponse) Reset() { *m = IsAdminResponse{} } +func (m *IsAdminResponse) String() string { return proto.CompactTextString(m) } +func (*IsAdminResponse) ProtoMessage() {} func (*IsAdminResponse) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{26} + return fileDescriptor_8bbd6f3875b0e874, []int{25} } -func (x *IsAdminResponse) GetIsAdmin() bool { - if x != nil { - return x.IsAdmin +func (m *IsAdminResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_IsAdminResponse.Unmarshal(m, b) +} +func (m *IsAdminResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_IsAdminResponse.Marshal(b, m, deterministic) +} +func (m *IsAdminResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_IsAdminResponse.Merge(m, src) +} +func (m *IsAdminResponse) XXX_Size() int { + return xxx_messageInfo_IsAdminResponse.Size(m) +} +func (m *IsAdminResponse) XXX_DiscardUnknown() { + xxx_messageInfo_IsAdminResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_IsAdminResponse proto.InternalMessageInfo + +func (m *IsAdminResponse) GetIsAdmin() bool { + if m != nil { + return m.IsAdmin } return false } type Org struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Org) Reset() { - *x = Org{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Org) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Org) ProtoMessage() {} - -func (x *Org) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Org.ProtoReflect.Descriptor instead. +func (m *Org) Reset() { *m = Org{} } +func (m *Org) String() string { return proto.CompactTextString(m) } +func (*Org) ProtoMessage() {} func (*Org) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{27} + return fileDescriptor_8bbd6f3875b0e874, []int{26} } -func (x *Org) GetId() string { - if x != nil { - return x.Id +func (m *Org) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Org.Unmarshal(m, b) +} +func (m *Org) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Org.Marshal(b, m, deterministic) +} +func (m *Org) XXX_Merge(src proto.Message) { + xxx_messageInfo_Org.Merge(m, src) +} +func (m *Org) XXX_Size() int { + return xxx_messageInfo_Org.Size(m) +} +func (m *Org) XXX_DiscardUnknown() { + xxx_messageInfo_Org.DiscardUnknown(m) +} + +var xxx_messageInfo_Org proto.InternalMessageInfo + +func (m *Org) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *Org) GetName() string { - if x != nil { - return x.Name +func (m *Org) GetName() string { + if m != nil { + return m.Name } return "" } type MyPermissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Permissions []string `protobuf:"bytes,1,rep,name=permissions,proto3" json:"permissions,omitempty"` + Permissions []string `protobuf:"bytes,1,rep,name=permissions,proto3" json:"permissions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MyPermissions) Reset() { - *x = MyPermissions{} - if protoimpl.UnsafeEnabled { - mi := &file_auth_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MyPermissions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MyPermissions) ProtoMessage() {} - -func (x *MyPermissions) ProtoReflect() protoreflect.Message { - mi := &file_auth_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MyPermissions.ProtoReflect.Descriptor instead. +func (m *MyPermissions) Reset() { *m = MyPermissions{} } +func (m *MyPermissions) String() string { return proto.CompactTextString(m) } +func (*MyPermissions) ProtoMessage() {} func (*MyPermissions) Descriptor() ([]byte, []int) { - return file_auth_proto_rawDescGZIP(), []int{28} + return fileDescriptor_8bbd6f3875b0e874, []int{27} } -func (x *MyPermissions) GetPermissions() []string { - if x != nil { - return x.Permissions +func (m *MyPermissions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MyPermissions.Unmarshal(m, b) +} +func (m *MyPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MyPermissions.Marshal(b, m, deterministic) +} +func (m *MyPermissions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MyPermissions.Merge(m, src) +} +func (m *MyPermissions) XXX_Size() int { + return xxx_messageInfo_MyPermissions.Size(m) +} +func (m *MyPermissions) XXX_DiscardUnknown() { + xxx_messageInfo_MyPermissions.DiscardUnknown(m) +} + +var xxx_messageInfo_MyPermissions proto.InternalMessageInfo + +func (m *MyPermissions) GetPermissions() []string { + if m != nil { + return m.Permissions } return nil } -var File_auth_proto protoreflect.FileDescriptor - -var file_auth_proto_rawDesc = []byte{ - 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x7a, 0x69, - 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, - 0x2d, 0x73, 0x77, 0x61, 0x67, 0x67, 0x65, 0x72, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5d, 0x0a, 0x10, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x73, - 0x12, 0x49, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, - 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x0c, 0x75, - 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0f, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, - 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0xe2, 0x07, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x43, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x45, 0x0a, - 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x6e, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, - 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x06, - 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x7a, - 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, - 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, - 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x9a, 0x02, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x6e, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, - 0x0a, 0x12, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, - 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x22, 0xb6, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x29, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, - 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x09, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x09, 0x6e, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0xc8, 0x01, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x12, 0x70, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xc8, 0x01, 0x52, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x4c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, - 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x09, 0x55, - 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, - 0x0a, 0x0f, 0x69, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x3a, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x22, 0x48, 0x0a, 0x16, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, - 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3a, - 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, - 0x18, 0xc8, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x5d, 0x0a, 0x09, 0x55, 0x73, - 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, - 0x11, 0x69, 0x73, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x39, 0x0a, 0x16, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x14, 0x52, 0x05, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x38, 0x0a, 0x16, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, - 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xc8, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xb3, - 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x61, - 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, - 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x22, 0xe2, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x07, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, - 0x01, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x0b, 0x70, - 0x6f, 0x73, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, - 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, - 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, - 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, - 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x1c, 0x0a, 0x0a, 0x50, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, - 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x48, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x22, 0x6c, 0x0a, 0x0e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x48, 0x52, 0x0b, 0x6f, 0x6c, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x2c, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, - 0x18, 0x48, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, - 0x22, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x66, 0x61, 0x4f, 0x74, 0x70, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x22, 0x44, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x66, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x04, 0x6d, 0x66, 0x61, 0x73, 0x22, 0x74, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, - 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x66, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x7a, 0x69, 0x74, 0x61, - 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x46, 0x41, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x88, 0x01, 0x0a, 0x0e, 0x4d, 0x66, 0x61, 0x4f, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x46, 0x41, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x52, 0x0a, 0x0e, 0x4f, 0x49, - 0x44, 0x43, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xa3, - 0x01, 0x0a, 0x19, 0x4d, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x73, 0x63, 0x12, 0x46, 0x0a, 0x07, - 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x17, 0x4d, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x46, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x20, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x1a, 0x4d, 0x79, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x7a, 0x69, 0x74, 0x61, - 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x72, 0x67, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2c, 0x0a, 0x0f, 0x49, - 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x29, 0x0a, 0x03, 0x4f, 0x72, 0x67, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x0d, 0x4d, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x72, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x55, - 0x53, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, - 0x17, 0x55, 0x53, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x53, - 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, - 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x10, 0x4f, - 0x49, 0x44, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x19, 0x0a, 0x15, 0x4f, 0x49, 0x44, 0x43, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x49, - 0x44, 0x43, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, - 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x49, 0x44, - 0x43, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x44, - 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x2a, 0xb0, - 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, - 0x55, 0x53, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x45, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x53, 0x45, 0x52, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x16, - 0x0a, 0x12, 0x55, 0x53, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x53, 0x45, 0x52, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, - 0x10, 0x55, 0x53, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, - 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x53, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x53, - 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x10, - 0x06, 0x2a, 0x58, 0x0a, 0x06, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x12, 0x47, - 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x46, 0x45, - 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x45, 0x4e, 0x44, 0x45, 0x52, - 0x5f, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x45, 0x4e, 0x44, 0x45, - 0x52, 0x5f, 0x44, 0x49, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x03, 0x2a, 0x44, 0x0a, 0x07, 0x4d, - 0x66, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x46, 0x41, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0f, 0x0a, 0x0b, 0x4d, 0x46, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4d, 0x53, 0x10, 0x01, - 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x46, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x50, 0x10, - 0x02, 0x2a, 0x66, 0x0a, 0x08, 0x4d, 0x46, 0x41, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x14, 0x4d, 0x46, 0x41, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x46, 0x41, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01, 0x12, - 0x12, 0x0a, 0x0e, 0x4d, 0x46, 0x41, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, - 0x59, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x46, 0x41, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x62, 0x0a, 0x15, 0x4d, 0x79, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, - 0x65, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x59, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x4f, - 0x52, 0x47, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x59, 0x50, - 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x47, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x4b, - 0x45, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x01, 0x2a, 0x60, 0x0a, - 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x17, 0x0a, - 0x13, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x53, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x53, 0x5f, 0x57, 0x49, - 0x54, 0x48, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x4d, 0x45, - 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x02, 0x32, - 0xba, 0x19, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x4b, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x12, 0x47, 0x0a, 0x05, - 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x4e, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x7f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x25, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, - 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x73, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x12, 0x12, 0x10, 0x2f, 0x6d, 0x65, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x7a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, - 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x82, - 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x97, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x7a, 0x69, 0x74, - 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x7a, 0x69, 0x74, 0x61, - 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x16, 0x1a, 0x11, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x74, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, - 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x82, - 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x79, 0x55, - 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2b, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, - 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x1a, 0x0f, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x3a, 0x01, - 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x91, 0x01, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, - 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x7a, 0x69, 0x74, - 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x2f, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x92, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x73, - 0x65, 0x6e, 0x64, 0x4d, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x28, 0x22, 0x23, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x2f, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x74, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, - 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, - 0x0f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x68, 0x6f, 0x6e, 0x65, - 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x2e, 0x7a, 0x69, 0x74, 0x61, - 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, - 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x1a, 0x0f, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x3a, - 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x2e, 0x7a, 0x69, - 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x2f, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x92, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x73, 0x65, - 0x6e, 0x64, 0x4d, 0x79, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x28, 0x22, 0x23, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x2f, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x7a, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x13, 0x12, 0x11, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x97, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4d, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x2d, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x1a, 0x11, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x82, - 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x71, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, 0x66, 0x61, 0x73, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x21, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, - 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x6d, 0x66, - 0x61, 0x73, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, - 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x1a, 0x13, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x8a, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4d, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, - 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x1a, 0x1b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x2f, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, - 0x01, 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x79, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x66, 0x61, 0x4f, - 0x54, 0x50, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x23, 0x2e, 0x7a, 0x69, 0x74, - 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x66, 0x61, 0x4f, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x6d, 0x65, 0x2f, 0x6d, 0x66, 0x61, 0x2f, 0x6f, 0x74, 0x70, 0x3a, 0x01, 0x2a, 0x82, 0xb5, 0x18, - 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x66, 0x61, 0x4f, 0x54, - 0x50, 0x12, 0x21, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x66, - 0x61, 0x4f, 0x74, 0x70, 0x1a, 0x23, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x66, 0x61, 0x4f, 0x74, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x1a, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x6d, 0x66, 0x61, - 0x2f, 0x6f, 0x74, 0x70, 0x2f, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x3a, 0x01, 0x2a, 0x82, - 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x6c, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x66, 0x61, 0x4f, - 0x54, 0x50, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x6d, 0x66, 0x61, 0x2f, 0x6f, 0x74, 0x70, 0x82, 0xb5, 0x18, - 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x79, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x73, 0x12, 0x2e, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, - 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x72, 0x67, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x22, 0x1b, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x67, 0x73, 0x2f, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, - 0x2a, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x7a, 0x0a, 0x0a, 0x49, 0x73, 0x49, 0x61, 0x6d, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x24, 0x2e, 0x7a, 0x69, 0x74, - 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x2f, 0x5f, 0x69, 0x73, 0x69, 0x61, 0x6d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x82, 0xb5, 0x18, - 0x0f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x89, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x5a, 0x69, 0x74, 0x61, 0x64, 0x65, - 0x6c, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2e, 0x61, - 0x75, 0x74, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x79, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7a, - 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2f, 0x6d, 0x65, 0x82, 0xb5, 0x18, 0x0f, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x42, 0xb7, 0x01, 0x5a, - 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x6f, 0x73, - 0x2f, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x92, 0x41, 0x88, 0x01, 0x12, 0x3b, - 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x20, 0x41, 0x50, 0x49, 0x22, 0x2a, 0x12, 0x28, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x61, 0x6f, 0x73, 0x2f, 0x7a, 0x69, 0x74, 0x61, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x2a, 0x01, 0x02, 0x32, 0x10, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, - 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, - 0x70, 0x63, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, - 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +func init() { + proto.RegisterEnum("zitadel.auth.api.v1.UserSessionState", UserSessionState_name, UserSessionState_value) + proto.RegisterEnum("zitadel.auth.api.v1.OIDCResponseType", OIDCResponseType_name, OIDCResponseType_value) + proto.RegisterEnum("zitadel.auth.api.v1.UserState", UserState_name, UserState_value) + proto.RegisterEnum("zitadel.auth.api.v1.Gender", Gender_name, Gender_value) + proto.RegisterEnum("zitadel.auth.api.v1.MfaType", MfaType_name, MfaType_value) + proto.RegisterEnum("zitadel.auth.api.v1.MFAState", MFAState_name, MFAState_value) + proto.RegisterEnum("zitadel.auth.api.v1.MyProjectOrgSearchKey", MyProjectOrgSearchKey_name, MyProjectOrgSearchKey_value) + proto.RegisterEnum("zitadel.auth.api.v1.SearchMethod", SearchMethod_name, SearchMethod_value) + proto.RegisterType((*UserSessionViews)(nil), "zitadel.auth.api.v1.UserSessionViews") + proto.RegisterType((*UserSessionView)(nil), "zitadel.auth.api.v1.UserSessionView") + proto.RegisterType((*User)(nil), "zitadel.auth.api.v1.User") + proto.RegisterType((*UserProfile)(nil), "zitadel.auth.api.v1.UserProfile") + proto.RegisterType((*UpdateUserProfileRequest)(nil), "zitadel.auth.api.v1.UpdateUserProfileRequest") + proto.RegisterType((*UserEmail)(nil), "zitadel.auth.api.v1.UserEmail") + proto.RegisterType((*VerifyMyUserEmailRequest)(nil), "zitadel.auth.api.v1.VerifyMyUserEmailRequest") + proto.RegisterType((*VerifyUserEmailRequest)(nil), "zitadel.auth.api.v1.VerifyUserEmailRequest") + proto.RegisterType((*UpdateUserEmailRequest)(nil), "zitadel.auth.api.v1.UpdateUserEmailRequest") + proto.RegisterType((*UserPhone)(nil), "zitadel.auth.api.v1.UserPhone") + proto.RegisterType((*UpdateUserPhoneRequest)(nil), "zitadel.auth.api.v1.UpdateUserPhoneRequest") + proto.RegisterType((*VerifyUserPhoneRequest)(nil), "zitadel.auth.api.v1.VerifyUserPhoneRequest") + proto.RegisterType((*UserAddress)(nil), "zitadel.auth.api.v1.UserAddress") + proto.RegisterType((*UpdateUserAddressRequest)(nil), "zitadel.auth.api.v1.UpdateUserAddressRequest") + proto.RegisterType((*PasswordID)(nil), "zitadel.auth.api.v1.PasswordID") + proto.RegisterType((*PasswordRequest)(nil), "zitadel.auth.api.v1.PasswordRequest") + proto.RegisterType((*PasswordChange)(nil), "zitadel.auth.api.v1.PasswordChange") + proto.RegisterType((*VerifyMfaOtp)(nil), "zitadel.auth.api.v1.VerifyMfaOtp") + proto.RegisterType((*MultiFactors)(nil), "zitadel.auth.api.v1.MultiFactors") + proto.RegisterType((*MultiFactor)(nil), "zitadel.auth.api.v1.MultiFactor") + proto.RegisterType((*MfaOtpResponse)(nil), "zitadel.auth.api.v1.MfaOtpResponse") + proto.RegisterType((*OIDCClientAuth)(nil), "zitadel.auth.api.v1.OIDCClientAuth") + proto.RegisterType((*MyProjectOrgSearchRequest)(nil), "zitadel.auth.api.v1.MyProjectOrgSearchRequest") + proto.RegisterType((*MyProjectOrgSearchQuery)(nil), "zitadel.auth.api.v1.MyProjectOrgSearchQuery") + proto.RegisterType((*MyProjectOrgSearchResponse)(nil), "zitadel.auth.api.v1.MyProjectOrgSearchResponse") + proto.RegisterType((*IsAdminResponse)(nil), "zitadel.auth.api.v1.IsAdminResponse") + proto.RegisterType((*Org)(nil), "zitadel.auth.api.v1.Org") + proto.RegisterType((*MyPermissions)(nil), "zitadel.auth.api.v1.MyPermissions") } -var ( - file_auth_proto_rawDescOnce sync.Once - file_auth_proto_rawDescData = file_auth_proto_rawDesc -) +func init() { proto.RegisterFile("auth.proto", fileDescriptor_8bbd6f3875b0e874) } -func file_auth_proto_rawDescGZIP() []byte { - file_auth_proto_rawDescOnce.Do(func() { - file_auth_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_proto_rawDescData) - }) - return file_auth_proto_rawDescData -} - -var file_auth_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 29) -var file_auth_proto_goTypes = []interface{}{ - (UserSessionState)(0), // 0: zitadel.auth.api.v1.UserSessionState - (OIDCResponseType)(0), // 1: zitadel.auth.api.v1.OIDCResponseType - (UserState)(0), // 2: zitadel.auth.api.v1.UserState - (Gender)(0), // 3: zitadel.auth.api.v1.Gender - (MfaType)(0), // 4: zitadel.auth.api.v1.MfaType - (MFAState)(0), // 5: zitadel.auth.api.v1.MFAState - (MyProjectOrgSearchKey)(0), // 6: zitadel.auth.api.v1.MyProjectOrgSearchKey - (SearchMethod)(0), // 7: zitadel.auth.api.v1.SearchMethod - (*UserSessionViews)(nil), // 8: zitadel.auth.api.v1.UserSessionViews - (*UserSessionView)(nil), // 9: zitadel.auth.api.v1.UserSessionView - (*UserID)(nil), // 10: zitadel.auth.api.v1.UserID - (*User)(nil), // 11: zitadel.auth.api.v1.User - (*UserProfile)(nil), // 12: zitadel.auth.api.v1.UserProfile - (*UpdateUserProfileRequest)(nil), // 13: zitadel.auth.api.v1.UpdateUserProfileRequest - (*UserEmail)(nil), // 14: zitadel.auth.api.v1.UserEmail - (*VerifyMyUserEmailRequest)(nil), // 15: zitadel.auth.api.v1.VerifyMyUserEmailRequest - (*VerifyUserEmailRequest)(nil), // 16: zitadel.auth.api.v1.VerifyUserEmailRequest - (*UpdateUserEmailRequest)(nil), // 17: zitadel.auth.api.v1.UpdateUserEmailRequest - (*UserPhone)(nil), // 18: zitadel.auth.api.v1.UserPhone - (*UpdateUserPhoneRequest)(nil), // 19: zitadel.auth.api.v1.UpdateUserPhoneRequest - (*VerifyUserPhoneRequest)(nil), // 20: zitadel.auth.api.v1.VerifyUserPhoneRequest - (*UserAddress)(nil), // 21: zitadel.auth.api.v1.UserAddress - (*UpdateUserAddressRequest)(nil), // 22: zitadel.auth.api.v1.UpdateUserAddressRequest - (*PasswordID)(nil), // 23: zitadel.auth.api.v1.PasswordID - (*PasswordRequest)(nil), // 24: zitadel.auth.api.v1.PasswordRequest - (*PasswordChange)(nil), // 25: zitadel.auth.api.v1.PasswordChange - (*VerifyMfaOtp)(nil), // 26: zitadel.auth.api.v1.VerifyMfaOtp - (*MultiFactors)(nil), // 27: zitadel.auth.api.v1.MultiFactors - (*MultiFactor)(nil), // 28: zitadel.auth.api.v1.MultiFactor - (*MfaOtpResponse)(nil), // 29: zitadel.auth.api.v1.MfaOtpResponse - (*OIDCClientAuth)(nil), // 30: zitadel.auth.api.v1.OIDCClientAuth - (*MyProjectOrgSearchRequest)(nil), // 31: zitadel.auth.api.v1.MyProjectOrgSearchRequest - (*MyProjectOrgSearchQuery)(nil), // 32: zitadel.auth.api.v1.MyProjectOrgSearchQuery - (*MyProjectOrgSearchResponse)(nil), // 33: zitadel.auth.api.v1.MyProjectOrgSearchResponse - (*IsAdminResponse)(nil), // 34: zitadel.auth.api.v1.IsAdminResponse - (*Org)(nil), // 35: zitadel.auth.api.v1.Org - (*MyPermissions)(nil), // 36: zitadel.auth.api.v1.MyPermissions - (*timestamp.Timestamp)(nil), // 37: google.protobuf.Timestamp - (*empty.Empty)(nil), // 38: google.protobuf.Empty - (*_struct.Struct)(nil), // 39: google.protobuf.Struct -} -var file_auth_proto_depIdxs = []int32{ - 9, // 0: zitadel.auth.api.v1.UserSessionViews.user_sessions:type_name -> zitadel.auth.api.v1.UserSessionView - 0, // 1: zitadel.auth.api.v1.UserSessionView.auth_state:type_name -> zitadel.auth.api.v1.UserSessionState - 2, // 2: zitadel.auth.api.v1.User.state:type_name -> zitadel.auth.api.v1.UserState - 37, // 3: zitadel.auth.api.v1.User.creation_date:type_name -> google.protobuf.Timestamp - 37, // 4: zitadel.auth.api.v1.User.activation_date:type_name -> google.protobuf.Timestamp - 37, // 5: zitadel.auth.api.v1.User.change_date:type_name -> google.protobuf.Timestamp - 37, // 6: zitadel.auth.api.v1.User.last_login:type_name -> google.protobuf.Timestamp - 37, // 7: zitadel.auth.api.v1.User.password_changed:type_name -> google.protobuf.Timestamp - 3, // 8: zitadel.auth.api.v1.User.gender:type_name -> zitadel.auth.api.v1.Gender - 3, // 9: zitadel.auth.api.v1.UserProfile.gender:type_name -> zitadel.auth.api.v1.Gender - 3, // 10: zitadel.auth.api.v1.UpdateUserProfileRequest.gender:type_name -> zitadel.auth.api.v1.Gender - 28, // 11: zitadel.auth.api.v1.MultiFactors.mfas:type_name -> zitadel.auth.api.v1.MultiFactor - 4, // 12: zitadel.auth.api.v1.MultiFactor.type:type_name -> zitadel.auth.api.v1.MfaType - 5, // 13: zitadel.auth.api.v1.MultiFactor.state:type_name -> zitadel.auth.api.v1.MFAState - 5, // 14: zitadel.auth.api.v1.MfaOtpResponse.state:type_name -> zitadel.auth.api.v1.MFAState - 32, // 15: zitadel.auth.api.v1.MyProjectOrgSearchRequest.queries:type_name -> zitadel.auth.api.v1.MyProjectOrgSearchQuery - 6, // 16: zitadel.auth.api.v1.MyProjectOrgSearchQuery.key:type_name -> zitadel.auth.api.v1.MyProjectOrgSearchKey - 7, // 17: zitadel.auth.api.v1.MyProjectOrgSearchQuery.method:type_name -> zitadel.auth.api.v1.SearchMethod - 35, // 18: zitadel.auth.api.v1.MyProjectOrgSearchResponse.result:type_name -> zitadel.auth.api.v1.Org - 38, // 19: zitadel.auth.api.v1.AuthService.Healthz:input_type -> google.protobuf.Empty - 38, // 20: zitadel.auth.api.v1.AuthService.Ready:input_type -> google.protobuf.Empty - 38, // 21: zitadel.auth.api.v1.AuthService.Validate:input_type -> google.protobuf.Empty - 38, // 22: zitadel.auth.api.v1.AuthService.GetMyUserSessions:input_type -> google.protobuf.Empty - 38, // 23: zitadel.auth.api.v1.AuthService.GetMyUserProfile:input_type -> google.protobuf.Empty - 13, // 24: zitadel.auth.api.v1.AuthService.UpdateMyUserProfile:input_type -> zitadel.auth.api.v1.UpdateUserProfileRequest - 38, // 25: zitadel.auth.api.v1.AuthService.GetMyUserEmail:input_type -> google.protobuf.Empty - 17, // 26: zitadel.auth.api.v1.AuthService.ChangeMyUserEmail:input_type -> zitadel.auth.api.v1.UpdateUserEmailRequest - 15, // 27: zitadel.auth.api.v1.AuthService.VerifyMyUserEmail:input_type -> zitadel.auth.api.v1.VerifyMyUserEmailRequest - 38, // 28: zitadel.auth.api.v1.AuthService.ResendMyEmailVerificationMail:input_type -> google.protobuf.Empty - 38, // 29: zitadel.auth.api.v1.AuthService.GetMyUserPhone:input_type -> google.protobuf.Empty - 19, // 30: zitadel.auth.api.v1.AuthService.ChangeMyUserPhone:input_type -> zitadel.auth.api.v1.UpdateUserPhoneRequest - 20, // 31: zitadel.auth.api.v1.AuthService.VerifyMyUserPhone:input_type -> zitadel.auth.api.v1.VerifyUserPhoneRequest - 38, // 32: zitadel.auth.api.v1.AuthService.ResendMyPhoneVerificationCode:input_type -> google.protobuf.Empty - 38, // 33: zitadel.auth.api.v1.AuthService.GetMyUserAddress:input_type -> google.protobuf.Empty - 22, // 34: zitadel.auth.api.v1.AuthService.UpdateMyUserAddress:input_type -> zitadel.auth.api.v1.UpdateUserAddressRequest - 38, // 35: zitadel.auth.api.v1.AuthService.GetMyMfas:input_type -> google.protobuf.Empty - 24, // 36: zitadel.auth.api.v1.AuthService.SetMyPassword:input_type -> zitadel.auth.api.v1.PasswordRequest - 25, // 37: zitadel.auth.api.v1.AuthService.ChangeMyPassword:input_type -> zitadel.auth.api.v1.PasswordChange - 38, // 38: zitadel.auth.api.v1.AuthService.AddMfaOTP:input_type -> google.protobuf.Empty - 26, // 39: zitadel.auth.api.v1.AuthService.VerifyMfaOTP:input_type -> zitadel.auth.api.v1.VerifyMfaOtp - 38, // 40: zitadel.auth.api.v1.AuthService.RemoveMfaOTP:input_type -> google.protobuf.Empty - 31, // 41: zitadel.auth.api.v1.AuthService.SearchMyProjectOrgs:input_type -> zitadel.auth.api.v1.MyProjectOrgSearchRequest - 38, // 42: zitadel.auth.api.v1.AuthService.IsIamAdmin:input_type -> google.protobuf.Empty - 38, // 43: zitadel.auth.api.v1.AuthService.GetMyZitadelPermissions:input_type -> google.protobuf.Empty - 38, // 44: zitadel.auth.api.v1.AuthService.Healthz:output_type -> google.protobuf.Empty - 38, // 45: zitadel.auth.api.v1.AuthService.Ready:output_type -> google.protobuf.Empty - 39, // 46: zitadel.auth.api.v1.AuthService.Validate:output_type -> google.protobuf.Struct - 8, // 47: zitadel.auth.api.v1.AuthService.GetMyUserSessions:output_type -> zitadel.auth.api.v1.UserSessionViews - 12, // 48: zitadel.auth.api.v1.AuthService.GetMyUserProfile:output_type -> zitadel.auth.api.v1.UserProfile - 12, // 49: zitadel.auth.api.v1.AuthService.UpdateMyUserProfile:output_type -> zitadel.auth.api.v1.UserProfile - 14, // 50: zitadel.auth.api.v1.AuthService.GetMyUserEmail:output_type -> zitadel.auth.api.v1.UserEmail - 14, // 51: zitadel.auth.api.v1.AuthService.ChangeMyUserEmail:output_type -> zitadel.auth.api.v1.UserEmail - 38, // 52: zitadel.auth.api.v1.AuthService.VerifyMyUserEmail:output_type -> google.protobuf.Empty - 38, // 53: zitadel.auth.api.v1.AuthService.ResendMyEmailVerificationMail:output_type -> google.protobuf.Empty - 18, // 54: zitadel.auth.api.v1.AuthService.GetMyUserPhone:output_type -> zitadel.auth.api.v1.UserPhone - 18, // 55: zitadel.auth.api.v1.AuthService.ChangeMyUserPhone:output_type -> zitadel.auth.api.v1.UserPhone - 38, // 56: zitadel.auth.api.v1.AuthService.VerifyMyUserPhone:output_type -> google.protobuf.Empty - 38, // 57: zitadel.auth.api.v1.AuthService.ResendMyPhoneVerificationCode:output_type -> google.protobuf.Empty - 21, // 58: zitadel.auth.api.v1.AuthService.GetMyUserAddress:output_type -> zitadel.auth.api.v1.UserAddress - 21, // 59: zitadel.auth.api.v1.AuthService.UpdateMyUserAddress:output_type -> zitadel.auth.api.v1.UserAddress - 27, // 60: zitadel.auth.api.v1.AuthService.GetMyMfas:output_type -> zitadel.auth.api.v1.MultiFactors - 38, // 61: zitadel.auth.api.v1.AuthService.SetMyPassword:output_type -> google.protobuf.Empty - 38, // 62: zitadel.auth.api.v1.AuthService.ChangeMyPassword:output_type -> google.protobuf.Empty - 29, // 63: zitadel.auth.api.v1.AuthService.AddMfaOTP:output_type -> zitadel.auth.api.v1.MfaOtpResponse - 29, // 64: zitadel.auth.api.v1.AuthService.VerifyMfaOTP:output_type -> zitadel.auth.api.v1.MfaOtpResponse - 38, // 65: zitadel.auth.api.v1.AuthService.RemoveMfaOTP:output_type -> google.protobuf.Empty - 33, // 66: zitadel.auth.api.v1.AuthService.SearchMyProjectOrgs:output_type -> zitadel.auth.api.v1.MyProjectOrgSearchResponse - 34, // 67: zitadel.auth.api.v1.AuthService.IsIamAdmin:output_type -> zitadel.auth.api.v1.IsAdminResponse - 36, // 68: zitadel.auth.api.v1.AuthService.GetMyZitadelPermissions:output_type -> zitadel.auth.api.v1.MyPermissions - 44, // [44:69] is the sub-list for method output_type - 19, // [19:44] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name -} - -func init() { file_auth_proto_init() } -func file_auth_proto_init() { - if File_auth_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_auth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSessionViews); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserSessionView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserID); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserProfile); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserProfileRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserEmail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyMyUserEmailRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyUserEmailRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserEmailRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserPhone); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserPhoneRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyUserPhoneRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserAddressRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PasswordID); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PasswordRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PasswordChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyMfaOtp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiFactors); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiFactor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MfaOtpResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OIDCClientAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MyProjectOrgSearchRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MyProjectOrgSearchQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MyProjectOrgSearchResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsAdminResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Org); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_auth_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MyPermissions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_auth_proto_rawDesc, - NumEnums: 8, - NumMessages: 29, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_auth_proto_goTypes, - DependencyIndexes: file_auth_proto_depIdxs, - EnumInfos: file_auth_proto_enumTypes, - MessageInfos: file_auth_proto_msgTypes, - }.Build() - File_auth_proto = out.File - file_auth_proto_rawDesc = nil - file_auth_proto_goTypes = nil - file_auth_proto_depIdxs = nil +var fileDescriptor_8bbd6f3875b0e874 = []byte{ + // 2761 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x4d, 0x6f, 0xdb, 0xc8, + 0x19, 0x0e, 0x25, 0x59, 0x96, 0x5f, 0xf9, 0x83, 0x1e, 0x27, 0x36, 0x2d, 0x3b, 0x89, 0xc2, 0x6c, + 0xb0, 0x8e, 0x36, 0xb1, 0x36, 0xde, 0x2d, 0xba, 0xc9, 0x1e, 0x0a, 0xc5, 0xa2, 0x13, 0x35, 0xd6, + 0xc7, 0x52, 0x4a, 0xda, 0x2c, 0x50, 0xa8, 0x8c, 0x38, 0x92, 0xb9, 0x2b, 0x89, 0x0c, 0x49, 0x39, + 0xd0, 0x5e, 0x5a, 0xec, 0x69, 0xdb, 0xcb, 0xa2, 0xdb, 0x43, 0x8f, 0x3d, 0xf4, 0x0f, 0xb4, 0x05, + 0xda, 0x02, 0xfd, 0x05, 0xbd, 0xf5, 0xd0, 0xfe, 0x82, 0xa2, 0xbf, 0x22, 0x87, 0xa2, 0x98, 0x0f, + 0x4a, 0xfc, 0x10, 0x25, 0x05, 0x45, 0x4f, 0xe1, 0xbc, 0x5f, 0xf3, 0xbc, 0xcf, 0xbc, 0xf3, 0x6a, + 0x66, 0x1c, 0x00, 0x6d, 0xe4, 0x5e, 0x1c, 0x5b, 0xb6, 0xe9, 0x9a, 0x68, 0xe7, 0x2b, 0xc3, 0xd5, + 0x74, 0xdc, 0x3f, 0xa6, 0x32, 0xcd, 0x32, 0x8e, 0x2f, 0x1f, 0xe4, 0x0e, 0x7b, 0xa6, 0xd9, 0xeb, + 0xe3, 0xa2, 0x66, 0x19, 0x45, 0x6d, 0x38, 0x34, 0x5d, 0xcd, 0x35, 0xcc, 0xa1, 0xc3, 0x5c, 0x72, + 0x07, 0x5c, 0x4b, 0x47, 0xaf, 0x46, 0xdd, 0x22, 0x1e, 0x58, 0xee, 0x98, 0x2b, 0x0f, 0xc3, 0x4a, + 0xc7, 0xb5, 0x47, 0x1d, 0x97, 0x6b, 0x6f, 0x86, 0xb5, 0xae, 0x31, 0xc0, 0x8e, 0xab, 0x0d, 0x2c, + 0x6e, 0xb0, 0x77, 0xa9, 0xf5, 0x0d, 0x5d, 0x73, 0x71, 0xd1, 0xfb, 0xe0, 0x8a, 0x7b, 0xf4, 0x9f, + 0xce, 0xfd, 0x1e, 0x1e, 0xde, 0x77, 0xde, 0x68, 0xbd, 0x1e, 0xb6, 0x8b, 0xa6, 0x45, 0x61, 0xcd, + 0x80, 0x28, 0x91, 0x6c, 0x98, 0xda, 0xb3, 0x62, 0x1a, 0xf9, 0x27, 0x20, 0x3e, 0x77, 0xb0, 0xdd, + 0xc4, 0x8e, 0x63, 0x98, 0xc3, 0x17, 0x06, 0x7e, 0xe3, 0xa0, 0x0a, 0x6c, 0x8c, 0x1c, 0x6c, 0xb7, + 0x1d, 0x26, 0x74, 0x24, 0x21, 0x9f, 0x3c, 0xca, 0x9e, 0xbc, 0x77, 0x3c, 0x83, 0x9b, 0xe3, 0x90, + 0xb7, 0xba, 0x3e, 0x9a, 0x0a, 0x1c, 0xf9, 0x9f, 0x02, 0x6c, 0x85, 0x2c, 0xd0, 0x26, 0x24, 0x0c, + 0x5d, 0x12, 0xf2, 0xc2, 0xd1, 0x9a, 0x9a, 0x30, 0x74, 0xb4, 0x0f, 0x19, 0xad, 0x87, 0x87, 0x6e, + 0xdb, 0xd0, 0xa5, 0x04, 0x95, 0xae, 0xd2, 0x71, 0x45, 0x47, 0x65, 0xb6, 0x36, 0x6d, 0xc7, 0xd5, + 0x5c, 0x2c, 0x25, 0xf3, 0xc2, 0xd1, 0xe6, 0xc9, 0x9d, 0x45, 0x30, 0x9a, 0xc4, 0x58, 0x5d, 0x23, + 0x5a, 0xfa, 0x89, 0xf6, 0x60, 0x95, 0xe6, 0x63, 0xe8, 0x52, 0x8a, 0xc6, 0x4f, 0x93, 0x61, 0x45, + 0x47, 0x07, 0xb0, 0x46, 0x15, 0x43, 0x6d, 0x80, 0xa5, 0x15, 0xaa, 0xca, 0x10, 0x41, 0x4d, 0x1b, + 0x60, 0x94, 0x83, 0x8c, 0x83, 0x5f, 0x8f, 0xf0, 0xb0, 0x83, 0xa5, 0x74, 0x5e, 0x38, 0x4a, 0xa9, + 0x93, 0xb1, 0xfc, 0x9f, 0x55, 0x48, 0x91, 0x19, 0x23, 0xb9, 0x7c, 0x0c, 0x2b, 0x0c, 0x6b, 0x82, + 0x62, 0xbd, 0x11, 0x8f, 0x95, 0x82, 0x64, 0xc6, 0xe8, 0x07, 0xb0, 0xd1, 0xb1, 0x31, 0x5d, 0xb1, + 0xb6, 0xee, 0x65, 0x9a, 0x3d, 0xc9, 0x1d, 0xb3, 0xf2, 0x38, 0xf6, 0xca, 0xe3, 0xb8, 0xe5, 0x95, + 0x87, 0xba, 0xee, 0x39, 0x94, 0x49, 0x80, 0x53, 0xd8, 0xd2, 0x3a, 0xae, 0x71, 0xe9, 0x0b, 0x91, + 0x5a, 0x18, 0x62, 0x73, 0xea, 0x42, 0x83, 0x7c, 0x0a, 0xd9, 0xce, 0x85, 0x36, 0xec, 0x61, 0x16, + 0x60, 0x65, 0x61, 0x00, 0x60, 0xe6, 0xd4, 0xf9, 0x21, 0x40, 0x5f, 0x73, 0xdc, 0x76, 0xdf, 0xec, + 0x19, 0x43, 0xca, 0xd7, 0x7c, 0xdf, 0x35, 0x62, 0x7d, 0x4e, 0x8c, 0x91, 0x02, 0xa2, 0xa5, 0x39, + 0xce, 0x1b, 0xd3, 0xd6, 0xdb, 0x2c, 0xa2, 0x2e, 0xad, 0x2e, 0x0c, 0xb0, 0xe5, 0xf9, 0x9c, 0x32, + 0x97, 0xe0, 0x62, 0x66, 0x42, 0x8b, 0x79, 0x1d, 0xa0, 0x6b, 0xd8, 0x8e, 0xcb, 0xb4, 0x6b, 0x54, + 0xbb, 0x46, 0x25, 0x54, 0x7d, 0x00, 0x14, 0x0f, 0xd3, 0x02, 0xf3, 0x25, 0x02, 0x4f, 0x39, 0x34, + 0x3a, 0x5f, 0x32, 0x65, 0x96, 0x29, 0x89, 0x80, 0x2a, 0x6f, 0xc1, 0xba, 0x6e, 0x38, 0x56, 0x5f, + 0x1b, 0x33, 0xfd, 0x3a, 0xd5, 0x67, 0xb9, 0x8c, 0x9a, 0xdc, 0x07, 0x64, 0xd9, 0xb8, 0x8b, 0x6d, + 0x1b, 0xeb, 0xed, 0xbe, 0x36, 0xec, 0x8d, 0xb4, 0x1e, 0x96, 0x36, 0xa8, 0xe1, 0xf6, 0x44, 0x73, + 0xce, 0x15, 0xe8, 0x23, 0x48, 0xf7, 0xf0, 0x50, 0xc7, 0xb6, 0xb4, 0x49, 0x6b, 0xe8, 0x60, 0x66, + 0x0d, 0x3d, 0xa1, 0x26, 0x2a, 0x37, 0x45, 0x57, 0x61, 0x05, 0x0f, 0x34, 0xa3, 0x2f, 0x6d, 0xd1, + 0xb0, 0x6c, 0x80, 0x0a, 0xb0, 0x6d, 0x38, 0x6d, 0xfa, 0xdd, 0xbe, 0xc4, 0xb6, 0xd1, 0x35, 0xb0, + 0x2e, 0x89, 0x79, 0xe1, 0x28, 0xa3, 0x6e, 0x19, 0x8e, 0x42, 0xe4, 0x2f, 0xb8, 0x98, 0x44, 0xb0, + 0x2e, 0xcc, 0x21, 0x96, 0xb6, 0x59, 0x04, 0x3a, 0xe0, 0x11, 0xe8, 0xf7, 0x34, 0x02, 0xf2, 0x22, + 0x34, 0x88, 0x7c, 0x12, 0x41, 0x82, 0xd5, 0x8e, 0x39, 0x1a, 0xba, 0xf6, 0x58, 0xda, 0x61, 0xdb, + 0x98, 0x0f, 0xc9, 0x56, 0xea, 0x9b, 0x1d, 0xad, 0x6f, 0xb8, 0x63, 0xe9, 0x2a, 0x67, 0x97, 0x8f, + 0xd1, 0x4d, 0xc8, 0x5a, 0xa6, 0xe3, 0x6a, 0xfd, 0x76, 0xc7, 0xd4, 0xb1, 0x74, 0x8d, 0xaa, 0x81, + 0x89, 0x4e, 0x4d, 0x1d, 0xa3, 0x5d, 0x48, 0xdb, 0xb8, 0x67, 0x98, 0x43, 0x69, 0x97, 0x6d, 0x5e, + 0x36, 0x42, 0x77, 0x60, 0xd3, 0x71, 0x6d, 0x8c, 0xdd, 0xb6, 0xa6, 0xeb, 0x36, 0x76, 0x1c, 0x69, + 0x8f, 0xea, 0x37, 0x98, 0xb4, 0xc4, 0x84, 0xe8, 0x13, 0x90, 0x42, 0xd5, 0xd5, 0xb6, 0xf1, 0xeb, + 0x91, 0x61, 0x63, 0x5d, 0x92, 0x68, 0x22, 0xbb, 0xc1, 0x4a, 0x52, 0xb9, 0x36, 0xd0, 0x00, 0xf6, + 0x43, 0x0d, 0xe0, 0xcf, 0x09, 0xc8, 0x92, 0x6d, 0xdc, 0xb0, 0xcd, 0xae, 0xd1, 0xc7, 0x91, 0x3e, + 0x10, 0x28, 0xc6, 0xc4, 0xdc, 0x62, 0x4c, 0xce, 0x2d, 0xc6, 0xd4, 0xbc, 0x62, 0x5c, 0x59, 0x50, + 0x8c, 0xe9, 0x65, 0x8b, 0x71, 0x75, 0x71, 0x31, 0x66, 0x96, 0x2f, 0x46, 0x3f, 0x71, 0xb9, 0x28, + 0x71, 0xd2, 0x73, 0x8b, 0x34, 0x18, 0x1f, 0x7d, 0x84, 0x72, 0xec, 0xb8, 0xe8, 0x6e, 0x80, 0x18, + 0xca, 0xe6, 0x63, 0x78, 0xfb, 0x78, 0xd5, 0x5e, 0x11, 0x05, 0xe9, 0x6f, 0x82, 0x9f, 0xa4, 0xf7, + 0xfd, 0x24, 0x25, 0x22, 0x96, 0x53, 0xc2, 0xde, 0xf7, 0x13, 0x96, 0x8c, 0x1a, 0x4e, 0xc8, 0xbb, + 0x1f, 0x22, 0x2f, 0x15, 0xb1, 0x0d, 0x10, 0xf9, 0x70, 0x26, 0x91, 0x2b, 0x11, 0xa7, 0xb9, 0xa4, + 0xa6, 0x97, 0x26, 0x55, 0x7e, 0x03, 0x6b, 0x84, 0x31, 0xba, 0x69, 0x23, 0xe5, 0x36, 0xd9, 0xfe, + 0x09, 0xff, 0xf6, 0x3f, 0x82, 0xf0, 0x2e, 0xa7, 0x04, 0xcc, 0xd8, 0xfc, 0xfe, 0x15, 0x4b, 0x85, + 0x56, 0xec, 0x11, 0x48, 0xd4, 0x6e, 0x5c, 0x1d, 0x4f, 0x00, 0x78, 0x0b, 0x76, 0x03, 0x52, 0x74, + 0xd7, 0x46, 0x97, 0x8a, 0xca, 0xe5, 0xa7, 0xb0, 0xcb, 0x7c, 0x23, 0x9e, 0xe1, 0x0c, 0xbc, 0x48, + 0x89, 0x98, 0x48, 0x8f, 0x60, 0x77, 0x5a, 0x36, 0x81, 0x48, 0x79, 0x2f, 0xf7, 0x28, 0x08, 0xa6, + 0x90, 0xc7, 0x8c, 0x3a, 0xda, 0xad, 0x66, 0x51, 0xc7, 0xfa, 0x5e, 0x62, 0x61, 0xdf, 0x4b, 0xce, + 0xee, 0x7b, 0xf3, 0xc8, 0x7b, 0xe8, 0x87, 0x4d, 0xdd, 0x3c, 0xd8, 0x37, 0xbd, 0x79, 0x19, 0xec, + 0xb5, 0xb7, 0x8f, 0xd3, 0x76, 0x4a, 0x14, 0xa4, 0xab, 0x1c, 0x82, 0xfc, 0x89, 0x9f, 0xbb, 0x80, + 0xeb, 0x22, 0xd6, 0xff, 0x2e, 0xb0, 0xe6, 0xe4, 0xb5, 0xc0, 0x70, 0xca, 0xbe, 0x46, 0x9d, 0x88, + 0x6f, 0xd4, 0xc9, 0xf9, 0x8d, 0x3a, 0x35, 0xa7, 0x51, 0xaf, 0x2c, 0x68, 0xd4, 0xe9, 0x59, 0x8d, + 0xda, 0x4f, 0xe3, 0x6a, 0x88, 0xc6, 0x7f, 0x09, 0xfe, 0xae, 0xc1, 0x3d, 0x3c, 0x3a, 0xe4, 0x69, + 0x3a, 0x8c, 0x91, 0xcc, 0xdb, 0xc7, 0x2b, 0x76, 0x92, 0xf0, 0x31, 0x49, 0xec, 0x3d, 0x5f, 0x62, + 0x89, 0x90, 0xd1, 0x34, 0xc5, 0xbb, 0xc1, 0x14, 0x93, 0x21, 0x43, 0x7f, 0xb2, 0xf9, 0x49, 0xb2, + 0xa9, 0x90, 0x95, 0x97, 0x76, 0x31, 0x92, 0xf6, 0x4a, 0xc8, 0x32, 0x48, 0x80, 0x7c, 0x08, 0xd0, + 0xe0, 0xbf, 0x44, 0x95, 0x72, 0x78, 0xd1, 0xe4, 0x4f, 0x60, 0xcb, 0xd3, 0x7a, 0x89, 0xdf, 0x81, + 0x8c, 0xf7, 0xd3, 0x15, 0xae, 0xa2, 0xa7, 0xea, 0x44, 0x25, 0xf7, 0x61, 0xb3, 0x11, 0xf8, 0x85, + 0x43, 0xf7, 0x60, 0xdd, 0xec, 0xeb, 0xed, 0x78, 0xe7, 0xac, 0xd9, 0xd7, 0x3d, 0x1f, 0x62, 0x3d, + 0xc4, 0x6f, 0xa6, 0xd6, 0x89, 0x88, 0xf5, 0x10, 0xbf, 0xf1, 0xac, 0x65, 0x19, 0xd6, 0x79, 0xbb, + 0xe8, 0x6a, 0x75, 0xd7, 0x42, 0xc8, 0x5f, 0xac, 0xbc, 0x40, 0xcb, 0xb0, 0x5e, 0x1d, 0xf5, 0x5d, + 0xe3, 0x4c, 0xeb, 0xb8, 0xa6, 0xed, 0xa0, 0x8f, 0x21, 0x35, 0xe8, 0x6a, 0xde, 0x3d, 0x23, 0x3f, + 0xb3, 0x1d, 0xfa, 0x1c, 0x54, 0x6a, 0x2d, 0xbb, 0x90, 0xf5, 0x09, 0xd1, 0x87, 0x90, 0x72, 0xc7, + 0x16, 0x9b, 0x68, 0xf3, 0xe4, 0x70, 0x76, 0x90, 0xae, 0xd6, 0x1a, 0x5b, 0x58, 0xa5, 0x96, 0xe8, + 0xa3, 0xe0, 0x61, 0xfd, 0xfa, 0x6c, 0x97, 0xb3, 0x92, 0xff, 0xac, 0x2e, 0x7f, 0x23, 0xc0, 0x26, + 0x4b, 0x4d, 0xc5, 0x8e, 0x65, 0x0e, 0x9d, 0xc0, 0xfd, 0x42, 0x08, 0xdc, 0x2f, 0x44, 0x48, 0x8e, + 0x6c, 0xaf, 0x29, 0x93, 0x4f, 0xb2, 0x47, 0x1c, 0xdc, 0xb1, 0xb1, 0xcb, 0xb7, 0x17, 0x1f, 0x4d, + 0xa1, 0xa4, 0xde, 0x01, 0x8a, 0x0a, 0x9b, 0xf5, 0x4a, 0xf9, 0xf4, 0xb4, 0x6f, 0xe0, 0xa1, 0x5b, + 0x1a, 0xb9, 0x17, 0xe4, 0x74, 0xd0, 0xa1, 0xa3, 0x29, 0x96, 0x0c, 0x13, 0x54, 0x74, 0x74, 0x1b, + 0x36, 0xb8, 0x92, 0x43, 0x60, 0xb8, 0xd6, 0x99, 0xb0, 0x49, 0x65, 0xf2, 0xef, 0x04, 0xd8, 0xaf, + 0x8e, 0x1b, 0xb6, 0xf9, 0x05, 0xee, 0xb8, 0x75, 0xbb, 0xd7, 0xc4, 0x9a, 0xdd, 0xb9, 0xf0, 0x2a, + 0x6e, 0x17, 0xd2, 0x66, 0xb7, 0xeb, 0x60, 0x97, 0x06, 0x4f, 0xa9, 0x7c, 0x44, 0x9a, 0x68, 0xdf, + 0x18, 0x18, 0x2c, 0x64, 0x4a, 0x65, 0x03, 0x92, 0xbe, 0xe6, 0x74, 0x68, 0x4a, 0x19, 0x95, 0x7c, + 0xa2, 0x33, 0x58, 0x7d, 0x3d, 0xc2, 0xb6, 0x81, 0xc9, 0x66, 0x20, 0x6b, 0x7d, 0x6f, 0x76, 0xa2, + 0x11, 0x00, 0x9f, 0x8d, 0xb0, 0x3d, 0x56, 0x3d, 0x67, 0xf9, 0x8f, 0x02, 0xec, 0xc5, 0x18, 0xa1, + 0x33, 0x48, 0x7e, 0x89, 0xc7, 0xbc, 0x0c, 0x0a, 0x4b, 0xc6, 0x7f, 0x86, 0xc7, 0x74, 0x63, 0x7e, + 0x2d, 0x24, 0xf2, 0x57, 0x54, 0x12, 0x00, 0x3d, 0x84, 0xf4, 0x00, 0xbb, 0x17, 0xa6, 0xce, 0xcb, + 0xe3, 0xd6, 0xcc, 0x50, 0xcc, 0xbd, 0x4a, 0x0d, 0x55, 0xee, 0x40, 0xe8, 0xb8, 0xd4, 0xfa, 0x23, + 0xef, 0x6c, 0xc7, 0x06, 0xf2, 0x6f, 0x05, 0xc8, 0xcd, 0xa2, 0x96, 0x57, 0xd1, 0xbb, 0x71, 0x7b, + 0x0b, 0xd6, 0x5d, 0x93, 0x74, 0x2a, 0x1b, 0x3b, 0xa3, 0x3e, 0x2b, 0xa7, 0x94, 0x9a, 0xa5, 0x32, + 0x95, 0x8a, 0xd0, 0x87, 0xa4, 0x45, 0x51, 0x65, 0x8a, 0x72, 0x2d, 0xcd, 0x4c, 0xa0, 0x6e, 0xf7, + 0x54, 0x6e, 0x27, 0xdf, 0x83, 0xad, 0x8a, 0x53, 0xd2, 0x07, 0xc6, 0x70, 0x82, 0x6a, 0x1f, 0x32, + 0x86, 0xd3, 0xd6, 0x88, 0x8c, 0xe2, 0xca, 0xa8, 0xab, 0x06, 0x33, 0x91, 0xef, 0x42, 0xb2, 0x6e, + 0xf7, 0x22, 0xbf, 0x2e, 0x08, 0x52, 0xbe, 0x53, 0x2f, 0xfd, 0x96, 0x1f, 0xc0, 0x46, 0x75, 0xdc, + 0xc0, 0xf6, 0xc0, 0x60, 0xef, 0x02, 0x28, 0x0f, 0x59, 0x6b, 0x3a, 0xa4, 0x1b, 0x7f, 0x4d, 0xf5, + 0x8b, 0x0a, 0x76, 0xe0, 0x61, 0x82, 0x5d, 0xe4, 0xf3, 0x70, 0xf8, 0xbc, 0xa9, 0xa8, 0x4d, 0xa5, + 0xd9, 0xac, 0xd4, 0x6b, 0xcd, 0x56, 0xa9, 0xa5, 0xb4, 0x9f, 0xd7, 0x9a, 0x0d, 0xe5, 0xb4, 0x72, + 0x56, 0x51, 0xca, 0xe2, 0x15, 0x74, 0x00, 0x7b, 0x11, 0x8b, 0xd2, 0x69, 0xab, 0xf2, 0x42, 0x11, + 0x05, 0x74, 0x13, 0x0e, 0x22, 0xca, 0x96, 0xa2, 0x56, 0x2b, 0xb5, 0x52, 0x4b, 0x29, 0x8b, 0x89, + 0xc2, 0x6b, 0x10, 0xc9, 0x86, 0xf2, 0x92, 0x27, 0xad, 0x02, 0xed, 0xc3, 0x35, 0x2a, 0x53, 0x9a, + 0x8d, 0x7a, 0xad, 0xa9, 0xb4, 0x5e, 0x36, 0x94, 0xf6, 0x69, 0xbd, 0xac, 0x88, 0x57, 0xd0, 0x75, + 0xd8, 0x8f, 0xa8, 0x2a, 0xe5, 0x76, 0xab, 0xfe, 0x4c, 0xa9, 0x89, 0x02, 0xba, 0x0d, 0x37, 0x63, + 0xd5, 0xdc, 0x28, 0x51, 0xf8, 0xbd, 0xc0, 0x0e, 0x27, 0x2c, 0xc1, 0x1c, 0xec, 0x52, 0x84, 0xfe, + 0xcc, 0x14, 0x9e, 0xda, 0x55, 0x10, 0xa7, 0xba, 0x49, 0x4e, 0xbb, 0x80, 0xa6, 0xd2, 0x4a, 0x8d, + 0xcb, 0x13, 0xe8, 0x1a, 0x6c, 0x4f, 0xe5, 0x65, 0xe5, 0x5c, 0x21, 0x19, 0x26, 0x83, 0x41, 0xce, + 0xeb, 0xa7, 0xcf, 0x94, 0xb2, 0x98, 0x0a, 0x1a, 0x37, 0x9f, 0x37, 0x1b, 0x4a, 0xad, 0x2c, 0xae, + 0x04, 0xc5, 0x95, 0x5a, 0xa5, 0x55, 0x29, 0x9d, 0x8b, 0xe9, 0xc2, 0x8f, 0x21, 0xcd, 0xce, 0xa6, + 0x64, 0xf2, 0x27, 0x4a, 0xad, 0xac, 0xa8, 0xa1, 0x55, 0xd8, 0x86, 0x0d, 0x2e, 0x3f, 0x53, 0xaa, + 0xa5, 0x73, 0x82, 0x73, 0x0b, 0xb2, 0x5c, 0x44, 0x05, 0x09, 0x84, 0x60, 0x93, 0x0b, 0xca, 0x95, + 0x17, 0x64, 0x51, 0xc4, 0x64, 0xa1, 0x0c, 0xab, 0xbc, 0x43, 0xa3, 0x3d, 0xd8, 0xa9, 0x9e, 0x95, + 0x28, 0x67, 0xc1, 0xd8, 0x5b, 0x90, 0xf5, 0x14, 0xcd, 0x6a, 0x93, 0x45, 0xf6, 0x04, 0xf5, 0x56, + 0x43, 0x4c, 0x14, 0xba, 0x90, 0xf1, 0x3a, 0x25, 0x92, 0xe0, 0x2a, 0xf9, 0x9e, 0x51, 0x29, 0xbb, + 0x80, 0x26, 0x9a, 0x5a, 0xbd, 0xd5, 0x56, 0x95, 0x52, 0xf9, 0xa5, 0x28, 0x10, 0x5c, 0x13, 0x39, + 0x93, 0x25, 0x08, 0x6b, 0x3e, 0x59, 0xb5, 0xfe, 0x82, 0x70, 0x59, 0x78, 0x05, 0xd7, 0x66, 0x36, + 0x12, 0x74, 0x07, 0x6e, 0x55, 0x5f, 0x36, 0xd4, 0xfa, 0x0f, 0x95, 0xd3, 0x56, 0x5d, 0x7d, 0xd2, + 0x54, 0x4a, 0xea, 0xe9, 0xd3, 0x67, 0xca, 0xcb, 0x10, 0x02, 0x19, 0x6e, 0xcc, 0x36, 0xab, 0xab, + 0x4f, 0xda, 0xb5, 0x52, 0x55, 0x11, 0x85, 0xc2, 0x4f, 0x61, 0xdd, 0xdf, 0x61, 0x08, 0x2d, 0xcc, + 0xae, 0xaa, 0xb4, 0x9e, 0xd6, 0xcb, 0x6d, 0xe5, 0xb3, 0xe7, 0xa5, 0xf3, 0xa6, 0x78, 0x05, 0x1d, + 0x82, 0x14, 0x50, 0x34, 0x5b, 0x25, 0xb5, 0xd5, 0x6c, 0xff, 0xa8, 0xd2, 0x7a, 0x2a, 0x0a, 0xa4, + 0x88, 0x03, 0xda, 0xd3, 0x7a, 0xad, 0x55, 0xaa, 0xd4, 0x9a, 0x62, 0xe2, 0xe4, 0xaf, 0xfb, 0x90, + 0x25, 0xbf, 0x1d, 0x4d, 0x6c, 0x5f, 0x1a, 0x1d, 0x8c, 0x9e, 0xc1, 0xea, 0x53, 0xac, 0xf5, 0xdd, + 0x8b, 0xaf, 0xd0, 0x6e, 0xe4, 0xf9, 0x45, 0x19, 0x58, 0xee, 0x38, 0x17, 0x23, 0x97, 0xc5, 0xaf, + 0xff, 0xf1, 0xef, 0x5f, 0x27, 0x00, 0x65, 0x8a, 0x17, 0x3c, 0xc2, 0x13, 0x58, 0x51, 0xb1, 0xa6, + 0x8f, 0xdf, 0x39, 0xd4, 0x26, 0x0d, 0x95, 0x41, 0xe9, 0xa2, 0x4d, 0xfd, 0x6b, 0x90, 0x79, 0xc1, + 0x1f, 0x40, 0x63, 0x63, 0xed, 0x45, 0xe4, 0x4d, 0xfa, 0xd6, 0x2a, 0x6f, 0xd3, 0x60, 0x59, 0xb4, + 0x36, 0x79, 0x44, 0x45, 0x3f, 0x83, 0xed, 0x27, 0xd8, 0x65, 0x37, 0x1a, 0xef, 0xb1, 0x32, 0x36, + 0xf0, 0x9d, 0x65, 0x1e, 0x3e, 0x1d, 0xf9, 0x83, 0xaf, 0xff, 0x24, 0x6d, 0xc1, 0x06, 0xb1, 0xc1, + 0x43, 0xd7, 0xe8, 0x68, 0x2e, 0xd6, 0xe9, 0xcc, 0x08, 0x89, 0xc5, 0x01, 0x2e, 0x92, 0x43, 0x81, + 0xf7, 0xa4, 0x8a, 0xbe, 0x02, 0x71, 0x02, 0xc0, 0x7b, 0x44, 0x88, 0x9b, 0x3f, 0x1f, 0x3b, 0x3f, + 0xf7, 0x94, 0xef, 0xc5, 0x4d, 0xbd, 0x83, 0xb6, 0xd9, 0xbc, 0x04, 0x80, 0xc5, 0xe7, 0xf9, 0x8d, + 0x00, 0x3b, 0xec, 0x34, 0x1d, 0x9c, 0xff, 0xfe, 0xec, 0x79, 0x62, 0x6e, 0xeb, 0x4b, 0xc0, 0x2a, + 0xc6, 0xc1, 0xda, 0xcd, 0x45, 0x61, 0x3d, 0x12, 0x0a, 0xc8, 0x85, 0xcd, 0x09, 0x2b, 0xec, 0xa6, + 0x1b, 0xc7, 0x49, 0xfc, 0xcb, 0x2a, 0xf5, 0x93, 0x0b, 0x71, 0x53, 0x6f, 0xa3, 0xad, 0xe9, 0xd4, + 0xec, 0x9e, 0xfc, 0xad, 0x00, 0xdb, 0xec, 0x64, 0xec, 0x9f, 0xf9, 0x83, 0x05, 0x6c, 0xf8, 0x2f, + 0xa1, 0x0b, 0xe1, 0xdc, 0x8f, 0x83, 0x73, 0x35, 0x17, 0x86, 0x43, 0x78, 0xf8, 0x95, 0x00, 0xdb, + 0x91, 0x4b, 0x77, 0xcc, 0xfa, 0xc4, 0x5d, 0xce, 0x63, 0xf7, 0xd6, 0xf7, 0xe2, 0xb0, 0x1c, 0xca, + 0x7b, 0x21, 0x2c, 0x45, 0x76, 0xf9, 0x1d, 0x13, 0x4c, 0xdf, 0x09, 0x70, 0x5d, 0xc5, 0x0e, 0x1e, + 0xea, 0xd5, 0xb1, 0xef, 0xf5, 0xa0, 0x43, 0x1f, 0x90, 0xab, 0xf3, 0xd6, 0x2a, 0x0e, 0x48, 0x29, + 0x0e, 0xc8, 0x91, 0x7c, 0x3b, 0x02, 0xc4, 0xa6, 0x53, 0x5f, 0xfa, 0xe6, 0x0c, 0x17, 0x0c, 0xbb, + 0xdf, 0xbf, 0x7b, 0xc1, 0x50, 0xbf, 0x25, 0x0b, 0x86, 0xbd, 0x0e, 0x84, 0x0b, 0x86, 0xcd, 0xbc, + 0xa8, 0x60, 0xfc, 0x77, 0xf8, 0x85, 0x70, 0x96, 0x2b, 0x18, 0x0a, 0x87, 0xf0, 0xf0, 0x6d, 0xa8, + 0x60, 0xe6, 0x21, 0x9a, 0xfd, 0xaa, 0xf0, 0x3f, 0x96, 0x0b, 0x45, 0x12, 0x57, 0x2e, 0xbe, 0xf7, + 0x12, 0xb6, 0x74, 0xec, 0xbd, 0xe0, 0xff, 0x52, 0x2e, 0x1c, 0xc8, 0xec, 0x72, 0xf1, 0x77, 0x5d, + 0xef, 0xdd, 0xe1, 0xdd, 0xbb, 0xae, 0x77, 0x61, 0x5f, 0xae, 0xeb, 0xf2, 0xdb, 0x7f, 0xa4, 0xeb, + 0x7a, 0xf3, 0x2f, 0xea, 0xba, 0xc1, 0xd7, 0x8e, 0x25, 0x60, 0x2d, 0xd7, 0x75, 0x39, 0x2c, 0xc2, + 0xca, 0x6b, 0x58, 0xa3, 0xac, 0x54, 0xbb, 0x5a, 0x3c, 0x1d, 0xb7, 0x16, 0xdd, 0xca, 0x1d, 0xf9, + 0x6e, 0xdc, 0xc4, 0x22, 0xda, 0x9c, 0x4e, 0x4c, 0xee, 0xee, 0xe8, 0xe7, 0x02, 0x6c, 0x34, 0xc9, + 0x9c, 0x93, 0x57, 0x86, 0xd9, 0x7f, 0x5d, 0x0c, 0x3d, 0x79, 0xc4, 0xd6, 0xc6, 0x83, 0xb8, 0xa9, + 0xa5, 0xdc, 0x8e, 0xaf, 0x36, 0x78, 0x34, 0x9a, 0xf5, 0x2f, 0x05, 0x10, 0xbd, 0x4d, 0x3c, 0x41, + 0x71, 0x7b, 0x2e, 0x0a, 0x66, 0x1e, 0x0b, 0xe2, 0x61, 0x1c, 0x88, 0x7c, 0xee, 0x60, 0x06, 0x88, + 0x22, 0xff, 0x7b, 0x04, 0x01, 0x33, 0x86, 0xb5, 0x92, 0xae, 0x57, 0xbb, 0x5a, 0xbd, 0xd5, 0x88, + 0x5d, 0x82, 0xdb, 0x71, 0x6f, 0x1a, 0xbe, 0xc7, 0x88, 0x39, 0xab, 0x2f, 0x6f, 0x07, 0x16, 0xa1, + 0x68, 0xba, 0x16, 0x6f, 0x1d, 0xbe, 0x17, 0x9b, 0x56, 0x03, 0xdd, 0x9a, 0xf7, 0x33, 0x43, 0x27, + 0x5b, 0x0e, 0xc9, 0xf7, 0xe3, 0x90, 0xdc, 0xc8, 0xed, 0x47, 0x90, 0xf8, 0x5b, 0x47, 0x1f, 0xd6, + 0x55, 0x3c, 0x30, 0x2f, 0xf1, 0x02, 0x3e, 0xe2, 0xd6, 0x21, 0x7e, 0x5f, 0x16, 0xa2, 0x14, 0xa0, + 0x3f, 0x08, 0xb0, 0xc3, 0xcf, 0xd8, 0xbe, 0xd3, 0xbc, 0x83, 0x8e, 0x97, 0x7c, 0x3a, 0xf0, 0x4a, + 0xb3, 0xb8, 0xb4, 0x3d, 0xe7, 0x27, 0xbe, 0x5c, 0xe4, 0x83, 0x62, 0xaf, 0x6f, 0xbe, 0xd2, 0xfa, + 0xe4, 0x6c, 0x44, 0x9c, 0x4d, 0xbb, 0xe7, 0x14, 0xdb, 0x0e, 0xf5, 0x67, 0x7d, 0x0c, 0x2a, 0x4e, + 0x45, 0x1b, 0xd0, 0x8b, 0x78, 0x2c, 0x3f, 0xb3, 0xb7, 0x54, 0xe8, 0x86, 0x2f, 0x1f, 0xc7, 0xc1, + 0xb8, 0x86, 0x76, 0x3c, 0x18, 0x6d, 0xc3, 0x31, 0xb4, 0x01, 0x7d, 0x05, 0x40, 0xbf, 0x10, 0x60, + 0x8f, 0xb6, 0x8b, 0xcf, 0x59, 0x70, 0xff, 0xb5, 0x3e, 0x0e, 0x89, 0x1c, 0xc7, 0xcd, 0xd4, 0x57, + 0x3e, 0x89, 0xc3, 0xb1, 0x8f, 0xf6, 0x8a, 0xbe, 0x97, 0x81, 0x22, 0x0f, 0x55, 0x1c, 0xe0, 0xc7, + 0x7f, 0x11, 0xbe, 0x2b, 0x7d, 0x23, 0xa0, 0x4f, 0x21, 0x43, 0xae, 0x30, 0xf9, 0x52, 0xa3, 0x22, + 0x17, 0xd0, 0xd1, 0x85, 0xeb, 0x5a, 0xce, 0xa3, 0x62, 0xb1, 0x67, 0xb8, 0x17, 0xa3, 0x57, 0xc7, + 0x1d, 0x73, 0x50, 0xec, 0x68, 0xe6, 0xd4, 0xd1, 0xfa, 0xb2, 0x57, 0x24, 0xd3, 0x9c, 0x24, 0x3f, + 0x3c, 0x7e, 0x50, 0x10, 0x12, 0x27, 0xa2, 0x66, 0x59, 0x7d, 0xfe, 0x33, 0x51, 0xfc, 0xc2, 0x31, + 0x87, 0x41, 0x49, 0xcf, 0xb6, 0x3a, 0x8f, 0x22, 0x36, 0x8f, 0x22, 0x36, 0x9f, 0xdf, 0x5d, 0x34, + 0x23, 0xfd, 0x1f, 0x24, 0xc4, 0xf4, 0x55, 0x9a, 0x32, 0xf4, 0xd1, 0x7f, 0x03, 0x00, 0x00, 0xff, + 0xff, 0x66, 0xd3, 0x09, 0x6b, 0x7c, 0x22, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConnInterface +var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 +const _ = grpc.SupportPackageIsVersion4 // AuthServiceClient is the client API for AuthService service. // @@ -3452,10 +2217,10 @@ type AuthServiceClient interface { } type authServiceClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewAuthServiceClient(cc grpc.ClientConnInterface) AuthServiceClient { +func NewAuthServiceClient(cc *grpc.ClientConn) AuthServiceClient { return &authServiceClient{cc} } @@ -3722,79 +2487,79 @@ type AuthServiceServer interface { type UnimplementedAuthServiceServer struct { } -func (*UnimplementedAuthServiceServer) Healthz(context.Context, *empty.Empty) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) Healthz(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Healthz not implemented") } -func (*UnimplementedAuthServiceServer) Ready(context.Context, *empty.Empty) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) Ready(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Ready not implemented") } -func (*UnimplementedAuthServiceServer) Validate(context.Context, *empty.Empty) (*_struct.Struct, error) { +func (*UnimplementedAuthServiceServer) Validate(ctx context.Context, req *empty.Empty) (*_struct.Struct, error) { return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented") } -func (*UnimplementedAuthServiceServer) GetMyUserSessions(context.Context, *empty.Empty) (*UserSessionViews, error) { +func (*UnimplementedAuthServiceServer) GetMyUserSessions(ctx context.Context, req *empty.Empty) (*UserSessionViews, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyUserSessions not implemented") } -func (*UnimplementedAuthServiceServer) GetMyUserProfile(context.Context, *empty.Empty) (*UserProfile, error) { +func (*UnimplementedAuthServiceServer) GetMyUserProfile(ctx context.Context, req *empty.Empty) (*UserProfile, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyUserProfile not implemented") } -func (*UnimplementedAuthServiceServer) UpdateMyUserProfile(context.Context, *UpdateUserProfileRequest) (*UserProfile, error) { +func (*UnimplementedAuthServiceServer) UpdateMyUserProfile(ctx context.Context, req *UpdateUserProfileRequest) (*UserProfile, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateMyUserProfile not implemented") } -func (*UnimplementedAuthServiceServer) GetMyUserEmail(context.Context, *empty.Empty) (*UserEmail, error) { +func (*UnimplementedAuthServiceServer) GetMyUserEmail(ctx context.Context, req *empty.Empty) (*UserEmail, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyUserEmail not implemented") } -func (*UnimplementedAuthServiceServer) ChangeMyUserEmail(context.Context, *UpdateUserEmailRequest) (*UserEmail, error) { +func (*UnimplementedAuthServiceServer) ChangeMyUserEmail(ctx context.Context, req *UpdateUserEmailRequest) (*UserEmail, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeMyUserEmail not implemented") } -func (*UnimplementedAuthServiceServer) VerifyMyUserEmail(context.Context, *VerifyMyUserEmailRequest) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) VerifyMyUserEmail(ctx context.Context, req *VerifyMyUserEmailRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method VerifyMyUserEmail not implemented") } -func (*UnimplementedAuthServiceServer) ResendMyEmailVerificationMail(context.Context, *empty.Empty) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) ResendMyEmailVerificationMail(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method ResendMyEmailVerificationMail not implemented") } -func (*UnimplementedAuthServiceServer) GetMyUserPhone(context.Context, *empty.Empty) (*UserPhone, error) { +func (*UnimplementedAuthServiceServer) GetMyUserPhone(ctx context.Context, req *empty.Empty) (*UserPhone, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyUserPhone not implemented") } -func (*UnimplementedAuthServiceServer) ChangeMyUserPhone(context.Context, *UpdateUserPhoneRequest) (*UserPhone, error) { +func (*UnimplementedAuthServiceServer) ChangeMyUserPhone(ctx context.Context, req *UpdateUserPhoneRequest) (*UserPhone, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeMyUserPhone not implemented") } -func (*UnimplementedAuthServiceServer) VerifyMyUserPhone(context.Context, *VerifyUserPhoneRequest) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) VerifyMyUserPhone(ctx context.Context, req *VerifyUserPhoneRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method VerifyMyUserPhone not implemented") } -func (*UnimplementedAuthServiceServer) ResendMyPhoneVerificationCode(context.Context, *empty.Empty) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) ResendMyPhoneVerificationCode(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method ResendMyPhoneVerificationCode not implemented") } -func (*UnimplementedAuthServiceServer) GetMyUserAddress(context.Context, *empty.Empty) (*UserAddress, error) { +func (*UnimplementedAuthServiceServer) GetMyUserAddress(ctx context.Context, req *empty.Empty) (*UserAddress, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyUserAddress not implemented") } -func (*UnimplementedAuthServiceServer) UpdateMyUserAddress(context.Context, *UpdateUserAddressRequest) (*UserAddress, error) { +func (*UnimplementedAuthServiceServer) UpdateMyUserAddress(ctx context.Context, req *UpdateUserAddressRequest) (*UserAddress, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateMyUserAddress not implemented") } -func (*UnimplementedAuthServiceServer) GetMyMfas(context.Context, *empty.Empty) (*MultiFactors, error) { +func (*UnimplementedAuthServiceServer) GetMyMfas(ctx context.Context, req *empty.Empty) (*MultiFactors, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyMfas not implemented") } -func (*UnimplementedAuthServiceServer) SetMyPassword(context.Context, *PasswordRequest) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) SetMyPassword(ctx context.Context, req *PasswordRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SetMyPassword not implemented") } -func (*UnimplementedAuthServiceServer) ChangeMyPassword(context.Context, *PasswordChange) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) ChangeMyPassword(ctx context.Context, req *PasswordChange) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeMyPassword not implemented") } -func (*UnimplementedAuthServiceServer) AddMfaOTP(context.Context, *empty.Empty) (*MfaOtpResponse, error) { +func (*UnimplementedAuthServiceServer) AddMfaOTP(ctx context.Context, req *empty.Empty) (*MfaOtpResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddMfaOTP not implemented") } -func (*UnimplementedAuthServiceServer) VerifyMfaOTP(context.Context, *VerifyMfaOtp) (*MfaOtpResponse, error) { +func (*UnimplementedAuthServiceServer) VerifyMfaOTP(ctx context.Context, req *VerifyMfaOtp) (*MfaOtpResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method VerifyMfaOTP not implemented") } -func (*UnimplementedAuthServiceServer) RemoveMfaOTP(context.Context, *empty.Empty) (*empty.Empty, error) { +func (*UnimplementedAuthServiceServer) RemoveMfaOTP(ctx context.Context, req *empty.Empty) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveMfaOTP not implemented") } -func (*UnimplementedAuthServiceServer) SearchMyProjectOrgs(context.Context, *MyProjectOrgSearchRequest) (*MyProjectOrgSearchResponse, error) { +func (*UnimplementedAuthServiceServer) SearchMyProjectOrgs(ctx context.Context, req *MyProjectOrgSearchRequest) (*MyProjectOrgSearchResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SearchMyProjectOrgs not implemented") } -func (*UnimplementedAuthServiceServer) IsIamAdmin(context.Context, *empty.Empty) (*IsAdminResponse, error) { +func (*UnimplementedAuthServiceServer) IsIamAdmin(ctx context.Context, req *empty.Empty) (*IsAdminResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method IsIamAdmin not implemented") } -func (*UnimplementedAuthServiceServer) GetMyZitadelPermissions(context.Context, *empty.Empty) (*MyPermissions, error) { +func (*UnimplementedAuthServiceServer) GetMyZitadelPermissions(ctx context.Context, req *empty.Empty) (*MyPermissions, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMyZitadelPermissions not implemented") } diff --git a/pkg/auth/api/grpc/auth.pb.gw.go b/pkg/auth/api/grpc/auth.pb.gw.go index d089ded1b3..960b322a88 100644 --- a/pkg/auth/api/grpc/auth.pb.gw.go +++ b/pkg/auth/api/grpc/auth.pb.gw.go @@ -13,6 +13,7 @@ import ( "io" "net/http" + "github.com/golang/protobuf/descriptor" "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes/empty" "github.com/grpc-ecosystem/grpc-gateway/runtime" @@ -23,11 +24,13 @@ import ( "google.golang.org/grpc/status" ) +// Suppress "imported and not used" errors var _ codes.Code var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage func request_AuthService_Healthz_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty @@ -38,6 +41,15 @@ func request_AuthService_Healthz_0(ctx context.Context, marshaler runtime.Marsha } +func local_request_AuthService_Healthz_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Healthz(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_Ready_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -47,6 +59,15 @@ func request_AuthService_Ready_0(ctx context.Context, marshaler runtime.Marshale } +func local_request_AuthService_Ready_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Ready(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -56,6 +77,15 @@ func request_AuthService_Validate_0(ctx context.Context, marshaler runtime.Marsh } +func local_request_AuthService_Validate_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.Validate(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyUserSessions_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -65,6 +95,15 @@ func request_AuthService_GetMyUserSessions_0(ctx context.Context, marshaler runt } +func local_request_AuthService_GetMyUserSessions_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyUserSessions(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyUserProfile_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -74,6 +113,15 @@ func request_AuthService_GetMyUserProfile_0(ctx context.Context, marshaler runti } +func local_request_AuthService_GetMyUserProfile_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyUserProfile(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_UpdateMyUserProfile_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateUserProfileRequest var metadata runtime.ServerMetadata @@ -91,6 +139,23 @@ func request_AuthService_UpdateMyUserProfile_0(ctx context.Context, marshaler ru } +func local_request_AuthService_UpdateMyUserProfile_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateUserProfileRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.UpdateMyUserProfile(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -100,6 +165,15 @@ func request_AuthService_GetMyUserEmail_0(ctx context.Context, marshaler runtime } +func local_request_AuthService_GetMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyUserEmail(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_ChangeMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateUserEmailRequest var metadata runtime.ServerMetadata @@ -117,6 +191,23 @@ func request_AuthService_ChangeMyUserEmail_0(ctx context.Context, marshaler runt } +func local_request_AuthService_ChangeMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateUserEmailRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ChangeMyUserEmail(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_VerifyMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq VerifyMyUserEmailRequest var metadata runtime.ServerMetadata @@ -134,6 +225,23 @@ func request_AuthService_VerifyMyUserEmail_0(ctx context.Context, marshaler runt } +func local_request_AuthService_VerifyMyUserEmail_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq VerifyMyUserEmailRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.VerifyMyUserEmail(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_ResendMyEmailVerificationMail_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -151,6 +259,23 @@ func request_AuthService_ResendMyEmailVerificationMail_0(ctx context.Context, ma } +func local_request_AuthService_ResendMyEmailVerificationMail_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ResendMyEmailVerificationMail(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -160,6 +285,15 @@ func request_AuthService_GetMyUserPhone_0(ctx context.Context, marshaler runtime } +func local_request_AuthService_GetMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyUserPhone(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_ChangeMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateUserPhoneRequest var metadata runtime.ServerMetadata @@ -177,6 +311,23 @@ func request_AuthService_ChangeMyUserPhone_0(ctx context.Context, marshaler runt } +func local_request_AuthService_ChangeMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateUserPhoneRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ChangeMyUserPhone(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_VerifyMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq VerifyUserPhoneRequest var metadata runtime.ServerMetadata @@ -194,6 +345,23 @@ func request_AuthService_VerifyMyUserPhone_0(ctx context.Context, marshaler runt } +func local_request_AuthService_VerifyMyUserPhone_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq VerifyUserPhoneRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.VerifyMyUserPhone(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_ResendMyPhoneVerificationCode_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -211,6 +379,23 @@ func request_AuthService_ResendMyPhoneVerificationCode_0(ctx context.Context, ma } +func local_request_AuthService_ResendMyPhoneVerificationCode_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ResendMyPhoneVerificationCode(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyUserAddress_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -220,6 +405,15 @@ func request_AuthService_GetMyUserAddress_0(ctx context.Context, marshaler runti } +func local_request_AuthService_GetMyUserAddress_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyUserAddress(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_UpdateMyUserAddress_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateUserAddressRequest var metadata runtime.ServerMetadata @@ -237,6 +431,23 @@ func request_AuthService_UpdateMyUserAddress_0(ctx context.Context, marshaler ru } +func local_request_AuthService_UpdateMyUserAddress_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateUserAddressRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.UpdateMyUserAddress(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyMfas_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -246,6 +457,15 @@ func request_AuthService_GetMyMfas_0(ctx context.Context, marshaler runtime.Mars } +func local_request_AuthService_GetMyMfas_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyMfas(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_SetMyPassword_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq PasswordRequest var metadata runtime.ServerMetadata @@ -263,6 +483,23 @@ func request_AuthService_SetMyPassword_0(ctx context.Context, marshaler runtime. } +func local_request_AuthService_SetMyPassword_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PasswordRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SetMyPassword(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_ChangeMyPassword_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq PasswordChange var metadata runtime.ServerMetadata @@ -280,6 +517,23 @@ func request_AuthService_ChangeMyPassword_0(ctx context.Context, marshaler runti } +func local_request_AuthService_ChangeMyPassword_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PasswordChange + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ChangeMyPassword(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_AddMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -297,6 +551,23 @@ func request_AuthService_AddMfaOTP_0(ctx context.Context, marshaler runtime.Mars } +func local_request_AuthService_AddMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AddMfaOTP(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_VerifyMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq VerifyMfaOtp var metadata runtime.ServerMetadata @@ -314,6 +585,23 @@ func request_AuthService_VerifyMfaOTP_0(ctx context.Context, marshaler runtime.M } +func local_request_AuthService_VerifyMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq VerifyMfaOtp + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.VerifyMfaOTP(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_RemoveMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -323,6 +611,15 @@ func request_AuthService_RemoveMfaOTP_0(ctx context.Context, marshaler runtime.M } +func local_request_AuthService_RemoveMfaOTP_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.RemoveMfaOTP(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_SearchMyProjectOrgs_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq MyProjectOrgSearchRequest var metadata runtime.ServerMetadata @@ -340,6 +637,23 @@ func request_AuthService_SearchMyProjectOrgs_0(ctx context.Context, marshaler ru } +func local_request_AuthService_SearchMyProjectOrgs_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MyProjectOrgSearchRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.SearchMyProjectOrgs(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_IsIamAdmin_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -349,6 +663,15 @@ func request_AuthService_IsIamAdmin_0(ctx context.Context, marshaler runtime.Mar } +func local_request_AuthService_IsIamAdmin_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.IsIamAdmin(ctx, &protoReq) + return msg, metadata, err + +} + func request_AuthService_GetMyZitadelPermissions_0(ctx context.Context, marshaler runtime.Marshaler, client AuthServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq empty.Empty var metadata runtime.ServerMetadata @@ -358,6 +681,523 @@ func request_AuthService_GetMyZitadelPermissions_0(ctx context.Context, marshale } +func local_request_AuthService_GetMyZitadelPermissions_0(ctx context.Context, marshaler runtime.Marshaler, server AuthServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq empty.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetMyZitadelPermissions(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterAuthServiceHandlerServer registers the http handlers for service AuthService to "mux". +// UnaryRPC :call AuthServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +func RegisterAuthServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AuthServiceServer) error { + + mux.Handle("GET", pattern_AuthService_Healthz_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_Healthz_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_Healthz_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_Ready_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_Ready_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_Ready_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_Validate_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyUserSessions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyUserSessions_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyUserSessions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyUserProfile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyUserProfile_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyUserProfile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_UpdateMyUserProfile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_UpdateMyUserProfile_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_UpdateMyUserProfile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyUserEmail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyUserEmail_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyUserEmail_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_ChangeMyUserEmail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_ChangeMyUserEmail_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_ChangeMyUserEmail_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_VerifyMyUserEmail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_VerifyMyUserEmail_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_VerifyMyUserEmail_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_ResendMyEmailVerificationMail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_ResendMyEmailVerificationMail_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_ResendMyEmailVerificationMail_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyUserPhone_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyUserPhone_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyUserPhone_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_ChangeMyUserPhone_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_ChangeMyUserPhone_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_ChangeMyUserPhone_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_VerifyMyUserPhone_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_VerifyMyUserPhone_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_VerifyMyUserPhone_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_ResendMyPhoneVerificationCode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_ResendMyPhoneVerificationCode_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_ResendMyPhoneVerificationCode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyUserAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyUserAddress_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyUserAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_UpdateMyUserAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_UpdateMyUserAddress_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_UpdateMyUserAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyMfas_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyMfas_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyMfas_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_SetMyPassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_SetMyPassword_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_SetMyPassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_ChangeMyPassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_ChangeMyPassword_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_ChangeMyPassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_AddMfaOTP_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_AddMfaOTP_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_AddMfaOTP_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_AuthService_VerifyMfaOTP_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_VerifyMfaOTP_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_VerifyMfaOTP_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AuthService_RemoveMfaOTP_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_RemoveMfaOTP_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_RemoveMfaOTP_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AuthService_SearchMyProjectOrgs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_SearchMyProjectOrgs_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_SearchMyProjectOrgs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_IsIamAdmin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_IsIamAdmin_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_IsIamAdmin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AuthService_GetMyZitadelPermissions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AuthService_GetMyZitadelPermissions_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AuthService_GetMyZitadelPermissions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + // RegisterAuthServiceHandlerFromEndpoint is same as RegisterAuthServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAuthServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { @@ -900,55 +1740,55 @@ func RegisterAuthServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux } var ( - pattern_AuthService_Healthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"healthz"}, "")) + pattern_AuthService_Healthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"healthz"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_Ready_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ready"}, "")) + pattern_AuthService_Ready_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ready"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"validate"}, "")) + pattern_AuthService_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"validate"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyUserSessions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"me", "usersessions"}, "")) + pattern_AuthService_GetMyUserSessions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"me", "usersessions"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyUserProfile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "profile"}, "")) + pattern_AuthService_GetMyUserProfile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "profile"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_UpdateMyUserProfile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "profile"}, "")) + pattern_AuthService_UpdateMyUserProfile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "profile"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "email"}, "")) + pattern_AuthService_GetMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "email"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_ChangeMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "email"}, "")) + pattern_AuthService_ChangeMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "email"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_VerifyMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "email", "_verify"}, "")) + pattern_AuthService_VerifyMyUserEmail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "email", "_verify"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_ResendMyEmailVerificationMail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "email", "_resendverification"}, "")) + pattern_AuthService_ResendMyEmailVerificationMail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "email", "_resendverification"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "phone"}, "")) + pattern_AuthService_GetMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "phone"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_ChangeMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "phone"}, "")) + pattern_AuthService_ChangeMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "phone"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_VerifyMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "phone", "_verify"}, "")) + pattern_AuthService_VerifyMyUserPhone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "phone", "_verify"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_ResendMyPhoneVerificationCode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "phone", "_resendverification"}, "")) + pattern_AuthService_ResendMyPhoneVerificationCode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "phone", "_resendverification"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyUserAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "address"}, "")) + pattern_AuthService_GetMyUserAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "address"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_UpdateMyUserAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "address"}, "")) + pattern_AuthService_UpdateMyUserAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "address"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyMfas_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "mfas"}, "")) + pattern_AuthService_GetMyMfas_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "mfas"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_SetMyPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "passwords"}, "")) + pattern_AuthService_SetMyPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"users", "me", "passwords"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_ChangeMyPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "passwords", "_change"}, "")) + pattern_AuthService_ChangeMyPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "passwords", "_change"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_AddMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "mfa", "otp"}, "")) + pattern_AuthService_AddMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "mfa", "otp"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_VerifyMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"users", "me", "mfa", "otp", "_verify"}, "")) + pattern_AuthService_VerifyMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"users", "me", "mfa", "otp", "_verify"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_RemoveMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "mfa", "otp"}, "")) + pattern_AuthService_RemoveMfaOTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"users", "me", "mfa", "otp"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_SearchMyProjectOrgs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"global", "projectorgs", "_search"}, "")) + pattern_AuthService_SearchMyProjectOrgs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"global", "projectorgs", "_search"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_IsIamAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"global", "_isiamadmin"}, "")) + pattern_AuthService_IsIamAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"global", "_isiamadmin"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_AuthService_GetMyZitadelPermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"permissions", "zitadel", "me"}, "")) + pattern_AuthService_GetMyZitadelPermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"permissions", "zitadel", "me"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/pkg/auth/api/grpc/auth.swagger.json b/pkg/auth/api/grpc/auth.swagger.json index aafd5141dc..ee2c9874fa 100644 --- a/pkg/auth/api/grpc/auth.swagger.json +++ b/pkg/auth/api/grpc/auth.swagger.json @@ -535,7 +535,7 @@ "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/protobufStruct" + "type": "object" } } }, @@ -546,19 +546,6 @@ } }, "definitions": { - "protobufListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Repeated field of dynamically typed values." - } - }, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." - }, "protobufNullValue": { "type": "string", "enum": [ @@ -567,51 +554,6 @@ "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." }, - "protobufStruct": { - "type": "object", - "properties": { - "fields": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Unordered map of dynamically typed values." - } - }, - "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." - }, - "protobufValue": { - "type": "object", - "properties": { - "null_value": { - "$ref": "#/definitions/protobufNullValue", - "description": "Represents a null value." - }, - "number_value": { - "type": "number", - "format": "double", - "description": "Represents a double value." - }, - "string_value": { - "type": "string", - "description": "Represents a string value." - }, - "bool_value": { - "type": "boolean", - "format": "boolean", - "description": "Represents a boolean value." - }, - "struct_value": { - "$ref": "#/definitions/protobufStruct", - "description": "Represents a structured value." - }, - "list_value": { - "$ref": "#/definitions/protobufListValue", - "description": "Represents a repeated `Value`." - } - }, - "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." - }, "v1Gender": { "type": "string", "enum": [ @@ -886,6 +828,10 @@ }, "street_address": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -901,6 +847,10 @@ "isEmailVerified": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -916,6 +866,10 @@ "is_phone_verified": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -945,6 +899,10 @@ }, "gender": { "$ref": "#/definitions/v1Gender" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -974,6 +932,10 @@ }, "user_name": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, diff --git a/pkg/auth/api/grpc/user.go b/pkg/auth/api/grpc/user.go index fb7604189f..bb4b5ff65b 100644 --- a/pkg/auth/api/grpc/user.go +++ b/pkg/auth/api/grpc/user.go @@ -46,10 +46,6 @@ func (s *Server) ResendMyEmailVerificationMail(ctx context.Context, _ *empty.Emp return nil, errors.ThrowUnimplemented(nil, "GRPC-dh69i", "Not implemented") } -func (s *Server) ResendEmailVerificationMail(ctx context.Context, id *UserID) (*empty.Empty, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-mAq23", "Not implemented") -} - func (s *Server) ChangeMyUserPhone(ctx context.Context, request *UpdateUserPhoneRequest) (*UserPhone, error) { return nil, errors.ThrowUnimplemented(nil, "GRPC-dk45g", "Not implemented") } @@ -85,7 +81,3 @@ func (s *Server) VerifyMfaOTP(ctx context.Context, request *VerifyMfaOtp) (_ *Mf func (s *Server) RemoveMfaOTP(ctx context.Context, _ *empty.Empty) (_ *empty.Empty, err error) { return nil, errors.ThrowUnimplemented(nil, "GRPC-9k46d", "Not implemented") } - -func (s *Server) ResendUserInitMail(ctx context.Context, request *UserID) (_ *empty.Empty, err error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-dk467", "Not implemented") -} diff --git a/pkg/auth/api/proto/auth.proto b/pkg/auth/api/proto/auth.proto index 9055d7f241..ba0a148349 100644 --- a/pkg/auth/api/proto/auth.proto +++ b/pkg/auth/api/proto/auth.proto @@ -297,6 +297,7 @@ message UserSessionView { UserSessionState auth_state = 3; string user_id = 4; string user_name = 5; + uint64 sequence = 6; } enum UserSessionState { @@ -336,6 +337,7 @@ message User { string region = 22; string street_address = 23; bool password_change_required = 24; + uint64 sequence = 25; } enum UserState { @@ -364,6 +366,7 @@ message UserProfile { string display_name = 6; string preferred_language = 7; Gender gender = 8; + uint64 sequence = 26; } message UpdateUserProfileRequest { @@ -379,6 +382,7 @@ message UserEmail { string id = 1; string email = 2; bool isEmailVerified = 3; + uint64 sequence = 4; } message VerifyMyUserEmailRequest { @@ -398,6 +402,7 @@ message UserPhone { string id = 1; string phone = 2; bool is_phone_verified = 3; + uint64 sequence = 4; } message UpdateUserPhoneRequest { @@ -415,6 +420,7 @@ message UserAddress { string postal_code = 4; string region = 5; string street_address = 6; + uint64 sequence = 7; } message UpdateUserAddressRequest { diff --git a/pkg/management/api/api.go b/pkg/management/api/api.go index 39b479dc14..0971c1b395 100644 --- a/pkg/management/api/api.go +++ b/pkg/management/api/api.go @@ -2,6 +2,8 @@ package api import ( "context" + "github.com/caos/zitadel/internal/api/auth" + "github.com/caos/zitadel/internal/management/repository" grpc_util "github.com/caos/zitadel/internal/api/grpc" "github.com/caos/zitadel/internal/api/grpc/server" @@ -12,8 +14,8 @@ type Config struct { GRPC grpc_util.Config } -func Start(ctx context.Context, conf Config) { - grpcServer := grpc.StartServer(conf.GRPC.ToServerConfig()) +func Start(ctx context.Context, conf Config, authZ auth.Config, repo repository.Repository) { + grpcServer := grpc.StartServer(conf.GRPC.ToServerConfig(), authZ, repo) grpcGateway := grpc.StartGateway(conf.GRPC.ToGatewayConfig()) server.StartServer(ctx, grpcServer) diff --git a/pkg/management/api/grpc/management.pb.go b/pkg/management/api/grpc/management.pb.go index fea0ec5512..f72dd4bd5e 100644 --- a/pkg/management/api/grpc/management.pb.go +++ b/pkg/management/api/grpc/management.pb.go @@ -356,19 +356,19 @@ type ProjectState int32 const ( ProjectState_PROJECTSTATE_UNSPECIFIED ProjectState = 0 ProjectState_PROJECTSTATE_ACTIVE ProjectState = 1 - ProjectState_PROJECTSSTATE_INACTIVE ProjectState = 2 + ProjectState_PROJECTSTATE_INACTIVE ProjectState = 2 ) var ProjectState_name = map[int32]string{ 0: "PROJECTSTATE_UNSPECIFIED", 1: "PROJECTSTATE_ACTIVE", - 2: "PROJECTSSTATE_INACTIVE", + 2: "PROJECTSTATE_INACTIVE", } var ProjectState_value = map[string]int32{ "PROJECTSTATE_UNSPECIFIED": 0, "PROJECTSTATE_ACTIVE": 1, - "PROJECTSSTATE_INACTIVE": 2, + "PROJECTSTATE_INACTIVE": 2, } func (x ProjectState) String() string { @@ -1432,6 +1432,7 @@ type User struct { PostalCode string `protobuf:"bytes,20,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` Region string `protobuf:"bytes,21,opt,name=region,proto3" json:"region,omitempty"` StreetAddress string `protobuf:"bytes,22,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Sequence uint64 `protobuf:"varint,23,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1616,6 +1617,13 @@ func (m *User) GetStreetAddress() string { return "" } +func (m *User) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UserSearchRequest struct { Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -1815,6 +1823,7 @@ type UserProfile struct { PreferredLanguage string `protobuf:"bytes,7,opt,name=preferred_language,json=preferredLanguage,proto3" json:"preferred_language,omitempty"` Gender Gender `protobuf:"varint,8,opt,name=gender,proto3,enum=caos.zitadel.management.api.v1.Gender" json:"gender,omitempty"` UserName string `protobuf:"bytes,9,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + Sequence uint64 `protobuf:"varint,10,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1908,6 +1917,13 @@ func (m *UserProfile) GetUserName() string { return "" } +func (m *UserProfile) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserProfileRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` FirstName string `protobuf:"bytes,2,opt,name=first_name,json=firstName,proto3" json:"first_name,omitempty"` @@ -1999,6 +2015,7 @@ type UserEmail struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` IsEmailVerified bool `protobuf:"varint,3,opt,name=is_email_verified,json=isEmailVerified,proto3" json:"is_email_verified,omitempty"` + Sequence uint64 `protobuf:"varint,4,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2050,6 +2067,13 @@ func (m *UserEmail) GetIsEmailVerified() bool { return false } +func (m *UserEmail) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserEmailRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` @@ -2109,6 +2133,7 @@ type UserPhone struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Phone string `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"` IsPhoneVerified bool `protobuf:"varint,3,opt,name=is_phone_verified,json=isPhoneVerified,proto3" json:"is_phone_verified,omitempty"` + Sequence uint64 `protobuf:"varint,5,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2160,6 +2185,13 @@ func (m *UserPhone) GetIsPhoneVerified() bool { return false } +func (m *UserPhone) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserPhoneRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Phone string `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"` @@ -2222,6 +2254,7 @@ type UserAddress struct { PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` StreetAddress string `protobuf:"bytes,6,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + Sequence uint64 `protobuf:"varint,7,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2294,6 +2327,13 @@ func (m *UserAddress) GetStreetAddress() string { return "" } +func (m *UserAddress) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UpdateUserAddressRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Country string `protobuf:"bytes,2,opt,name=country,proto3" json:"country,omitempty"` @@ -2681,6 +2721,7 @@ type PasswordComplexityPolicy struct { HasUppercase bool `protobuf:"varint,8,opt,name=has_uppercase,json=hasUppercase,proto3" json:"has_uppercase,omitempty"` HasNumber bool `protobuf:"varint,9,opt,name=has_number,json=hasNumber,proto3" json:"has_number,omitempty"` HasSymbol bool `protobuf:"varint,10,opt,name=has_symbol,json=hasSymbol,proto3" json:"has_symbol,omitempty"` + Sequence uint64 `protobuf:"varint,11,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2781,6 +2822,13 @@ func (m *PasswordComplexityPolicy) GetHasSymbol() bool { return false } +func (m *PasswordComplexityPolicy) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type PasswordComplexityPolicyCreate struct { Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` MinLength uint64 `protobuf:"varint,2,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` @@ -2994,6 +3042,7 @@ type PasswordAgePolicy struct { ChangeDate *timestamp.Timestamp `protobuf:"bytes,5,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` MaxAgeDays uint64 `protobuf:"varint,6,opt,name=max_age_days,json=maxAgeDays,proto3" json:"max_age_days,omitempty"` ExpireWarnDays uint64 `protobuf:"varint,7,opt,name=expire_warn_days,json=expireWarnDays,proto3" json:"expire_warn_days,omitempty"` + Sequence uint64 `protobuf:"varint,8,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -3073,6 +3122,13 @@ func (m *PasswordAgePolicy) GetExpireWarnDays() uint64 { return 0 } +func (m *PasswordAgePolicy) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type PasswordAgePolicyCreate struct { Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` MaxAgeDays uint64 `protobuf:"varint,2,opt,name=max_age_days,json=maxAgeDays,proto3" json:"max_age_days,omitempty"` @@ -3238,6 +3294,7 @@ type PasswordLockoutPolicy struct { ChangeDate *timestamp.Timestamp `protobuf:"bytes,5,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` MaxAttempts uint64 `protobuf:"varint,6,opt,name=max_attempts,json=maxAttempts,proto3" json:"max_attempts,omitempty"` ShowLockOutFailures bool `protobuf:"varint,7,opt,name=show_lock_out_failures,json=showLockOutFailures,proto3" json:"show_lock_out_failures,omitempty"` + Sequence uint64 `protobuf:"varint,8,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -3317,6 +3374,13 @@ func (m *PasswordLockoutPolicy) GetShowLockOutFailures() bool { return false } +func (m *PasswordLockoutPolicy) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type PasswordLockoutPolicyCreate struct { Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` MaxAttempts uint64 `protobuf:"varint,2,opt,name=max_attempts,json=maxAttempts,proto3" json:"max_attempts,omitempty"` @@ -3520,6 +3584,7 @@ type Org struct { ChangeDate *timestamp.Timestamp `protobuf:"bytes,4,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` Domain string `protobuf:"bytes,6,opt,name=domain,proto3" json:"domain,omitempty"` + Sequence uint64 `protobuf:"varint,7,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -3592,6 +3657,13 @@ func (m *Org) GetDomain() string { return "" } +func (m *Org) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type OrgMemberRoles struct { Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -3640,6 +3712,7 @@ type OrgMember struct { Roles []string `protobuf:"bytes,6,rep,name=roles,proto3" json:"roles,omitempty"` ChangeDate *timestamp.Timestamp `protobuf:"bytes,7,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` CreationDate *timestamp.Timestamp `protobuf:"bytes,8,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` + Sequence uint64 `protobuf:"varint,9,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -3726,6 +3799,13 @@ func (m *OrgMember) GetCreationDate() *timestamp.Timestamp { return nil } +func (m *OrgMember) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type AddOrgMemberRequest struct { OrgId string `protobuf:"bytes,1,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` @@ -4201,6 +4281,7 @@ type Project struct { OrgName string `protobuf:"bytes,9,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` OrgDomain string `protobuf:"bytes,10,opt,name=org_domain,json=orgDomain,proto3" json:"org_domain,omitempty"` GrantId string `protobuf:"bytes,11,opt,name=grant_id,json=grantId,proto3" json:"grant_id,omitempty"` + Sequence uint64 `protobuf:"varint,12,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -4308,6 +4389,13 @@ func (m *Project) GetGrantId() string { return "" } +func (m *Project) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ProjectSearchResponse struct { Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` Limit uint64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -4529,6 +4617,7 @@ type ProjectMember struct { Roles []string `protobuf:"bytes,6,rep,name=roles,proto3" json:"roles,omitempty"` ChangeDate *timestamp.Timestamp `protobuf:"bytes,7,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` CreationDate *timestamp.Timestamp `protobuf:"bytes,8,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` + Sequence uint64 `protobuf:"varint,10,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -4615,6 +4704,13 @@ func (m *ProjectMember) GetCreationDate() *timestamp.Timestamp { return nil } +func (m *ProjectMember) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ProjectMemberAdd struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` @@ -4841,6 +4937,7 @@ type ProjectRole struct { DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` CreationDate *timestamp.Timestamp `protobuf:"bytes,4,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` Group string `protobuf:"bytes,5,opt,name=group,proto3" json:"group,omitempty"` + Sequence uint64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -4906,6 +5003,13 @@ func (m *ProjectRole) GetGroup() string { return "" } +func (m *ProjectRole) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ProjectRoleRemove struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` @@ -5324,6 +5428,7 @@ type Application struct { // Types that are valid to be assigned to AppConfig: // *Application_OidcConfig AppConfig isApplication_AppConfig `protobuf_oneof:"app_config"` + Sequence uint64 `protobuf:"varint,9,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -5413,6 +5518,13 @@ func (m *Application) GetOidcConfig() *OIDCConfig { return nil } +func (m *Application) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Application) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -5991,6 +6103,7 @@ type ProjectGrant struct { CreationDate *timestamp.Timestamp `protobuf:"bytes,8,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` ChangeDate *timestamp.Timestamp `protobuf:"bytes,9,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` ProjectName string `protobuf:"bytes,10,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` + Sequence uint64 `protobuf:"varint,11,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6091,6 +6204,13 @@ func (m *ProjectGrant) GetProjectName() string { return "" } +func (m *ProjectGrant) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ProjectGrantCreate struct { ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` GrantedOrgId string `protobuf:"bytes,2,opt,name=granted_org_id,json=grantedOrgId,proto3" json:"granted_org_id,omitempty"` @@ -6453,6 +6573,7 @@ type ProjectGrantMember struct { Roles []string `protobuf:"bytes,6,rep,name=roles,proto3" json:"roles,omitempty"` ChangeDate *timestamp.Timestamp `protobuf:"bytes,7,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` CreationDate *timestamp.Timestamp `protobuf:"bytes,8,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` + Sequence uint64 `protobuf:"varint,9,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6539,6 +6660,13 @@ func (m *ProjectGrantMember) GetCreationDate() *timestamp.Timestamp { return nil } +func (m *ProjectGrantMember) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ProjectGrantMemberAdd struct { ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` GrantId string `protobuf:"bytes,2,opt,name=grant_id,json=grantId,proto3" json:"grant_id,omitempty"` @@ -6925,6 +7053,7 @@ type UserGrant struct { OrgName string `protobuf:"bytes,13,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` OrgDomain string `protobuf:"bytes,14,opt,name=org_domain,json=orgDomain,proto3" json:"org_domain,omitempty"` ProjectName string `protobuf:"bytes,15,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` + Sequence uint64 `protobuf:"varint,16,opt,name=sequence,proto3" json:"sequence,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -7060,6 +7189,13 @@ func (m *UserGrant) GetProjectName() string { return "" } +func (m *UserGrant) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type UserGrantCreate struct { UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` OrgId string `protobuf:"bytes,2,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` @@ -8229,503 +8365,508 @@ func init() { func init() { proto.RegisterFile("management.proto", fileDescriptor_edc174f991dc0a25) } var fileDescriptor_edc174f991dc0a25 = []byte{ - // 7933 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x70, 0x1b, 0x59, - 0x76, 0xde, 0x34, 0x00, 0xbe, 0x0e, 0x5f, 0xe0, 0xe5, 0x0b, 0x02, 0x1f, 0xa2, 0x5a, 0x6f, 0x48, - 0x22, 0x24, 0x8e, 0x46, 0x9a, 0x91, 0x76, 0xa4, 0x01, 0x09, 0x88, 0x82, 0x87, 0x04, 0xb8, 0x20, - 0x35, 0xca, 0xd8, 0xce, 0xc0, 0x2d, 0xa0, 0x05, 0xc2, 0x03, 0xa2, 0xb1, 0xdd, 0x0d, 0x69, 0xb8, - 0x93, 0xa9, 0x4d, 0x71, 0xab, 0x52, 0x2e, 0x27, 0x8e, 0xb3, 0xbb, 0x76, 0x52, 0xd9, 0xaa, 0xcd, - 0x26, 0x9b, 0x87, 0x93, 0x6c, 0x26, 0x8f, 0xf2, 0xb0, 0x6a, 0x6d, 0x27, 0x1b, 0x57, 0x36, 0x49, - 0x25, 0xb6, 0x7f, 0xc4, 0xd9, 0x54, 0x5c, 0xa9, 0xf2, 0x9f, 0x6c, 0x12, 0x57, 0xe5, 0x57, 0xca, - 0x79, 0xfc, 0xf0, 0xfc, 0x70, 0x5c, 0xf7, 0xd1, 0xdd, 0xb7, 0x5f, 0x40, 0x37, 0x48, 0x6a, 0xb5, - 0xde, 0xf9, 0x25, 0xe2, 0x3e, 0xbf, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xed, 0x23, 0x88, - 0xef, 0x49, 0x4d, 0xa9, 0x26, 0xef, 0xc9, 0x4d, 0x7d, 0xb9, 0xa5, 0x2a, 0xba, 0x82, 0x16, 0x2b, - 0x92, 0xa2, 0x2d, 0x7f, 0xb1, 0xae, 0x4b, 0x55, 0xb9, 0xb1, 0xcc, 0x55, 0x4b, 0xad, 0xfa, 0xf2, - 0xb3, 0x1b, 0xc9, 0xf9, 0x9a, 0xa2, 0xd4, 0x1a, 0x72, 0x5a, 0x6a, 0xd5, 0xd3, 0x52, 0xb3, 0xa9, - 0xe8, 0x92, 0x5e, 0x57, 0x9a, 0x1a, 0xed, 0x9d, 0x9c, 0x63, 0xb5, 0xe4, 0xd7, 0x93, 0xf6, 0xd3, - 0xb4, 0xbc, 0xd7, 0xd2, 0xf7, 0x59, 0xe5, 0xbc, 0xb3, 0x52, 0xd3, 0xd5, 0x76, 0x85, 0x4d, 0x9c, - 0x3c, 0xed, 0xac, 0xd5, 0xeb, 0x7b, 0xb2, 0xa6, 0x4b, 0x7b, 0x2d, 0xd6, 0xe0, 0x2a, 0xf9, 0xa7, - 0x72, 0xad, 0x26, 0x37, 0xaf, 0x69, 0xcf, 0xa5, 0x5a, 0x4d, 0x56, 0xd3, 0x4a, 0x8b, 0xcc, 0xee, - 0x81, 0x64, 0xf6, 0x99, 0xd4, 0xa8, 0x57, 0x25, 0x5d, 0x4e, 0x1b, 0x7f, 0xb0, 0x8a, 0x25, 0xe7, - 0x3c, 0x55, 0x59, 0xab, 0xa8, 0xf5, 0x96, 0xae, 0xa8, 0xac, 0x45, 0x42, 0x6a, 0xeb, 0xbb, 0x74, - 0x64, 0x63, 0x02, 0x5a, 0x23, 0xbe, 0x07, 0xa3, 0x6b, 0xbb, 0x52, 0xb3, 0x26, 0x97, 0xe4, 0x2f, - 0xb4, 0x65, 0x4d, 0x47, 0x63, 0x10, 0xa9, 0x57, 0x13, 0xc2, 0x92, 0x70, 0x69, 0xa8, 0x14, 0xa9, - 0x57, 0xd1, 0x14, 0xf4, 0x35, 0xea, 0x7b, 0x75, 0x3d, 0x11, 0x59, 0x12, 0x2e, 0xc5, 0x4a, 0xf4, - 0x07, 0xba, 0x08, 0xe3, 0x1a, 0xee, 0xd0, 0xac, 0xc8, 0x65, 0xe5, 0xe9, 0x53, 0x4d, 0xd6, 0x13, - 0x51, 0x52, 0x3f, 0x66, 0x14, 0x17, 0x49, 0xa9, 0xb8, 0x0f, 0x03, 0x74, 0x7c, 0x0d, 0xbd, 0x05, - 0x03, 0x15, 0xfa, 0x67, 0x42, 0x58, 0x8a, 0x5e, 0x1a, 0x5e, 0xb9, 0xb0, 0xdc, 0x79, 0x65, 0x96, - 0x19, 0x32, 0xa3, 0x1b, 0x9a, 0x81, 0x7e, 0x36, 0x19, 0x05, 0xc3, 0x7e, 0x59, 0x18, 0xa3, 0x1c, - 0x46, 0xf1, 0xdf, 0x08, 0xd0, 0x4f, 0x47, 0x40, 0x77, 0x61, 0x98, 0x8e, 0x51, 0xc6, 0x6c, 0x23, - 0xd4, 0x0d, 0xaf, 0x24, 0x97, 0x29, 0xdf, 0x96, 0x0d, 0xbe, 0x2d, 0xef, 0x18, 0xeb, 0x53, 0x02, - 0xda, 0x3c, 0x2b, 0xe9, 0x32, 0x5a, 0x00, 0x90, 0x9f, 0xc9, 0x4d, 0xbd, 0xac, 0xef, 0xb7, 0x64, - 0x32, 0xf3, 0x50, 0x69, 0x88, 0x94, 0xec, 0xec, 0xb7, 0x64, 0x94, 0x84, 0x41, 0x83, 0x66, 0x36, - 0xbf, 0xf9, 0x1b, 0x03, 0x96, 0xab, 0x75, 0x5d, 0x51, 0x13, 0x31, 0xd2, 0x8d, 0xfd, 0x42, 0x57, - 0x20, 0x56, 0x95, 0x74, 0x29, 0xd1, 0x47, 0x80, 0xcc, 0xba, 0x80, 0x6c, 0x13, 0x31, 0x2a, 0x91, - 0x46, 0xe2, 0x3d, 0x18, 0xcd, 0xb4, 0x5a, 0x8d, 0x7a, 0x85, 0x48, 0x43, 0x3e, 0xeb, 0x5a, 0xa2, - 0x05, 0x80, 0x96, 0xaa, 0xfc, 0xac, 0x5c, 0xd1, 0xcb, 0xf5, 0xaa, 0x01, 0x90, 0x95, 0xe4, 0xab, - 0xe2, 0x1c, 0x0c, 0x6d, 0xb1, 0x1f, 0xae, 0xbe, 0x62, 0x02, 0xfa, 0x1f, 0x69, 0xb2, 0xea, 0x51, - 0x73, 0x16, 0x86, 0x71, 0x4d, 0x6e, 0x4f, 0xaa, 0x37, 0xf2, 0x59, 0xcc, 0x63, 0x19, 0xff, 0xc9, - 0x5a, 0xd0, 0x1f, 0xe2, 0x7b, 0x30, 0xf1, 0xa8, 0x59, 0xff, 0x42, 0x5b, 0xc6, 0x4d, 0x0d, 0x11, - 0xba, 0x08, 0x43, 0x6d, 0x4d, 0x56, 0xcb, 0x4d, 0x69, 0x8f, 0xf2, 0x7a, 0x68, 0x15, 0x3e, 0x5d, - 0x1d, 0x50, 0xfb, 0xe2, 0x42, 0xe2, 0xdf, 0x09, 0xa5, 0x41, 0x5c, 0x59, 0x90, 0xf6, 0x64, 0xb4, - 0x64, 0x8c, 0x19, 0x71, 0x35, 0x62, 0xe3, 0xdf, 0x00, 0xc4, 0x8f, 0xaf, 0xb5, 0x94, 0xa6, 0x26, - 0xa3, 0x39, 0x18, 0xaa, 0x6b, 0xe5, 0x36, 0xa9, 0x20, 0x13, 0x0c, 0x96, 0x06, 0xeb, 0x1a, 0x6d, - 0x28, 0xfe, 0x8f, 0x3e, 0x98, 0x58, 0x53, 0x65, 0x49, 0xef, 0x0d, 0xd3, 0x65, 0x80, 0xa7, 0x75, - 0x55, 0xd3, 0x69, 0x4b, 0x37, 0xb0, 0x21, 0x52, 0x4b, 0x9a, 0x5e, 0x84, 0xa1, 0x86, 0x64, 0xb4, - 0x8c, 0xba, 0xc7, 0xc4, 0x95, 0xa4, 0xe1, 0x79, 0x18, 0x6a, 0xd6, 0x2b, 0xef, 0xd3, 0x86, 0x44, - 0x12, 0x56, 0x07, 0x3f, 0x5d, 0xed, 0x53, 0xa3, 0xa4, 0x19, 0xae, 0x22, 0xcd, 0xae, 0xc0, 0x48, - 0xb5, 0xae, 0xb5, 0x1a, 0xd2, 0x3e, 0x6d, 0xd9, 0xe7, 0x68, 0x39, 0xcc, 0x6a, 0x49, 0xe3, 0xdb, - 0x80, 0x5a, 0xaa, 0xfc, 0x54, 0x56, 0x55, 0xb9, 0x5a, 0x6e, 0x48, 0xcd, 0x5a, 0x5b, 0xaa, 0xc9, - 0x89, 0x7e, 0x47, 0x97, 0x09, 0xb3, 0xcd, 0x06, 0x6b, 0x82, 0xee, 0x41, 0x7f, 0x4d, 0x6e, 0x56, - 0x65, 0x35, 0x31, 0xb0, 0x24, 0x5c, 0x1a, 0xeb, 0xae, 0x85, 0xeb, 0xa4, 0x75, 0x89, 0xf5, 0x42, - 0xa2, 0xb1, 0x68, 0x83, 0x64, 0xae, 0x91, 0x4f, 0x57, 0x87, 0xd4, 0x01, 0x42, 0xf1, 0xcf, 0x18, - 0xcb, 0x86, 0x52, 0x30, 0x51, 0xd7, 0xca, 0xe4, 0xef, 0xf2, 0x33, 0x59, 0xad, 0x3f, 0xad, 0xcb, - 0xd5, 0xc4, 0x10, 0x59, 0xa8, 0xf1, 0xba, 0x46, 0x44, 0xea, 0x1d, 0x56, 0x8c, 0x16, 0xa0, 0xaf, - 0xb5, 0xab, 0x34, 0xe5, 0xc4, 0x30, 0x19, 0x6f, 0xe0, 0xd3, 0xd5, 0x98, 0x1a, 0x49, 0x4c, 0x95, - 0x68, 0x29, 0x1b, 0x8a, 0xfc, 0x6d, 0x0d, 0x35, 0x62, 0x0c, 0xb5, 0x85, 0xcb, 0xcd, 0xa1, 0x44, - 0x18, 0xa8, 0x28, 0xed, 0xa6, 0xae, 0xee, 0x27, 0x46, 0x1d, 0x8c, 0x30, 0x2a, 0xd0, 0x39, 0x18, - 0x6c, 0x28, 0x15, 0xa9, 0x51, 0xd7, 0xf7, 0x13, 0x63, 0xce, 0xa5, 0x30, 0x6a, 0xd0, 0x65, 0x18, - 0x6e, 0x29, 0x9a, 0x2e, 0x35, 0xca, 0x15, 0xa5, 0x2a, 0x27, 0xc6, 0x1d, 0x0d, 0x81, 0x56, 0xae, - 0x29, 0x55, 0x2c, 0xc4, 0xfd, 0xaa, 0x5c, 0xab, 0x2b, 0xcd, 0x44, 0xdc, 0xd1, 0x8a, 0x95, 0xa3, - 0x34, 0x8c, 0x69, 0xba, 0x2a, 0xcb, 0x7a, 0x59, 0xaa, 0x56, 0x55, 0x59, 0xd3, 0x12, 0x13, 0x8e, - 0x96, 0xa3, 0xb4, 0x3e, 0x43, 0xab, 0xd1, 0x59, 0x18, 0x6c, 0x49, 0x9a, 0xf6, 0x5c, 0x51, 0xab, - 0x09, 0xc4, 0x73, 0xe5, 0x61, 0xc9, 0xac, 0x10, 0xff, 0xa8, 0x1f, 0x62, 0x58, 0xc2, 0x5d, 0xe6, - 0xe0, 0x3e, 0xf4, 0x69, 0x3a, 0x36, 0x73, 0x11, 0xb2, 0xbe, 0x97, 0xbb, 0xad, 0x2f, 0x1e, 0x64, - 0x1b, 0x77, 0x28, 0xd1, 0x7e, 0xe8, 0x3e, 0x8c, 0x56, 0xb0, 0x02, 0xd5, 0x95, 0x26, 0xb5, 0x97, - 0xd1, 0xae, 0xf6, 0x72, 0xc4, 0xe8, 0x40, 0x2c, 0xa6, 0xc3, 0xdc, 0xc6, 0x42, 0x99, 0xdb, 0x37, - 0x00, 0x88, 0x56, 0x35, 0x94, 0x5a, 0xbd, 0xc9, 0x2c, 0x64, 0xa7, 0xbe, 0x44, 0x07, 0x37, 0x70, - 0x63, 0x94, 0x83, 0xb8, 0xc1, 0x9e, 0x32, 0x1d, 0xb1, 0x4a, 0x34, 0xa2, 0xf3, 0x00, 0xe3, 0x46, - 0x1f, 0xba, 0x59, 0x54, 0xb1, 0x79, 0xb1, 0x6c, 0xc5, 0x00, 0xe1, 0xab, 0x65, 0x1f, 0x16, 0x6c, - 0xf6, 0x61, 0x90, 0x1a, 0x5b, 0xcb, 0x26, 0xcc, 0xf1, 0x36, 0x61, 0x88, 0xf6, 0x35, 0xed, 0xc0, - 0x19, 0x87, 0x82, 0x03, 0xa9, 0xb7, 0xa9, 0xf5, 0x1c, 0x6f, 0x2a, 0x86, 0x69, 0x7f, 0xd3, 0x40, - 0x5c, 0xf3, 0xd4, 0xf9, 0x11, 0xd2, 0xaa, 0xa3, 0xa6, 0x8f, 0xf6, 0xa4, 0xe9, 0xa6, 0xc9, 0x1f, - 0xe3, 0x4c, 0xbe, 0xb7, 0x6e, 0x8f, 0x7b, 0xeb, 0xf6, 0x94, 0xa1, 0xdb, 0x71, 0x3a, 0x42, 0x07, - 0x95, 0x9e, 0xf0, 0x56, 0xe9, 0x84, 0xa5, 0xd2, 0x44, 0x13, 0x2c, 0x45, 0x4e, 0x72, 0x8a, 0x3c, - 0xc9, 0x18, 0x6d, 0xa8, 0xef, 0x69, 0xbb, 0xfa, 0x4e, 0x91, 0x6a, 0x5e, 0x69, 0x67, 0x4c, 0xa5, - 0x9d, 0xa6, 0x1b, 0x33, 0x53, 0xd5, 0xf3, 0x2e, 0x55, 0x9d, 0x21, 0xf5, 0x76, 0x05, 0x15, 0xff, - 0x58, 0x80, 0x09, 0xa2, 0x36, 0xb2, 0xa4, 0x56, 0x76, 0x8d, 0x3d, 0xc6, 0x72, 0x4f, 0x04, 0x6f, - 0xf7, 0xc4, 0xe6, 0x42, 0xbd, 0x07, 0x63, 0x9a, 0xa2, 0xea, 0xf5, 0x66, 0xad, 0x5c, 0x51, 0x1a, - 0xed, 0xbd, 0x26, 0x51, 0xb3, 0xb1, 0x95, 0x6b, 0x81, 0xf4, 0x95, 0x4c, 0xfc, 0xb6, 0xbc, 0x4f, - 0x8c, 0xc8, 0x81, 0x10, 0x59, 0x7a, 0xa5, 0x34, 0xca, 0x86, 0x5b, 0x23, 0xa3, 0xa1, 0x38, 0x44, - 0x25, 0xad, 0x42, 0x94, 0x6f, 0xb0, 0x84, 0xff, 0x44, 0x79, 0x18, 0xf8, 0x42, 0x5b, 0x56, 0xeb, - 0xb2, 0x96, 0xe8, 0x23, 0x0e, 0x58, 0x3a, 0xf8, 0x54, 0x9f, 0x6f, 0xcb, 0xea, 0x7e, 0xc9, 0xe8, - 0x2f, 0x7e, 0x47, 0x80, 0x71, 0x47, 0x25, 0xca, 0x43, 0xf4, 0x7d, 0x79, 0x9f, 0xd0, 0x7e, 0x04, - 0x2a, 0xf0, 0x18, 0x28, 0x0b, 0xfd, 0x7b, 0xb2, 0xbe, 0xab, 0x54, 0x99, 0x0d, 0xbb, 0xda, 0x6d, - 0x34, 0x3a, 0xd2, 0x26, 0xe9, 0x53, 0x62, 0x7d, 0x31, 0xdf, 0x9f, 0x49, 0x8d, 0x36, 0xdb, 0x9b, - 0x4b, 0xf4, 0x87, 0xf8, 0xb7, 0x05, 0x40, 0xfc, 0xda, 0x31, 0x9f, 0x22, 0xdc, 0xe2, 0x9d, 0x81, - 0x11, 0x5d, 0xc1, 0xf2, 0xa5, 0xca, 0x5a, 0xbb, 0x61, 0x38, 0x9e, 0xc3, 0xa4, 0xac, 0x44, 0x8a, - 0xd0, 0xe7, 0xb0, 0x88, 0x91, 0xca, 0x18, 0x61, 0xf6, 0xb9, 0x20, 0x1c, 0x29, 0xb1, 0x3e, 0xe2, - 0x1f, 0x44, 0xa8, 0xfb, 0xb5, 0xa5, 0x2a, 0x4f, 0xeb, 0x0d, 0xf9, 0xf8, 0x8d, 0xbc, 0xdd, 0x8e, - 0x45, 0x3b, 0xda, 0xb1, 0x98, 0xc3, 0x8e, 0xd9, 0x8c, 0x54, 0x9f, 0xc3, 0x48, 0x39, 0x8d, 0x5c, - 0xbf, 0xdb, 0xc8, 0x79, 0xdb, 0xb1, 0x81, 0xee, 0x76, 0x6c, 0xb0, 0x27, 0x3b, 0x66, 0xb3, 0xe7, - 0x43, 0x76, 0x7b, 0x2e, 0xfe, 0x76, 0x04, 0x12, 0x8f, 0x5a, 0x55, 0xe6, 0x2e, 0x32, 0x76, 0xfb, - 0x1d, 0x86, 0x3e, 0x73, 0x0e, 0x3b, 0xb3, 0x5a, 0xfc, 0xb3, 0x30, 0x64, 0x1e, 0x1a, 0xbc, 0x8e, - 0x92, 0x9c, 0xbb, 0xdf, 0x71, 0x3f, 0x89, 0x7a, 0xee, 0x27, 0xe2, 0x33, 0x98, 0xb1, 0xd6, 0x8a, - 0x54, 0xf9, 0xad, 0x54, 0xd7, 0xa3, 0x45, 0xa8, 0x79, 0x19, 0x59, 0x64, 0x6b, 0xf2, 0x22, 0x8b, - 0x6e, 0x72, 0x91, 0xae, 0x9b, 0x5c, 0xd4, 0x73, 0x93, 0x13, 0xdb, 0x3c, 0x59, 0xa4, 0xca, 0x8f, - 0xac, 0xd3, 0xb6, 0xb9, 0x56, 0x87, 0x3e, 0x5d, 0xed, 0x57, 0x63, 0x71, 0xa1, 0x8b, 0xbb, 0xec, - 0x33, 0xed, 0xaf, 0x0a, 0xd4, 0xc6, 0x18, 0x6e, 0xa7, 0x73, 0x32, 0x6e, 0xef, 0x8d, 0xf8, 0xef, - 0xbd, 0xd1, 0xce, 0x7b, 0x6f, 0xac, 0xc3, 0xde, 0xdb, 0xd7, 0x65, 0xef, 0xed, 0xf7, 0xda, 0x7b, - 0xff, 0xb7, 0xc0, 0x2b, 0x2c, 0x2b, 0xf5, 0xe3, 0x97, 0xe8, 0x20, 0xa1, 0xdb, 0x89, 0x20, 0x1a, - 0xf4, 0x44, 0x10, 0x0b, 0x74, 0x22, 0xe8, 0x0b, 0x7c, 0x22, 0xe8, 0xef, 0x78, 0x22, 0x10, 0x8b, - 0x30, 0xb2, 0xd9, 0x6e, 0xe8, 0xf5, 0x07, 0x52, 0x45, 0x57, 0x54, 0x0d, 0xdd, 0x87, 0xd8, 0xde, - 0x53, 0xc9, 0x08, 0xa4, 0x5c, 0xe9, 0xa6, 0xa5, 0x5c, 0xdf, 0x12, 0xe9, 0x28, 0xfe, 0xbc, 0x00, - 0xc3, 0x5c, 0x29, 0xba, 0x0b, 0x31, 0x12, 0xde, 0xa0, 0xbb, 0xf7, 0xc5, 0xae, 0x03, 0x3e, 0x95, - 0x76, 0xf6, 0x5b, 0x72, 0x89, 0x74, 0x42, 0xf7, 0xec, 0x9b, 0xd1, 0xa5, 0xae, 0xbd, 0x1f, 0x64, - 0xf8, 0xbd, 0x48, 0x9c, 0x07, 0xd8, 0x62, 0x3e, 0xb8, 0x47, 0x20, 0xe2, 0x21, 0x8c, 0x1b, 0xb5, - 0x7e, 0xcb, 0x7c, 0x9e, 0x3b, 0x30, 0x39, 0x34, 0x83, 0x3f, 0x32, 0x5d, 0x80, 0xa9, 0x92, 0xac, - 0xc9, 0x7a, 0x97, 0xe1, 0xc4, 0x67, 0xb0, 0xb8, 0x6d, 0xb5, 0x2a, 0x28, 0x7a, 0xfd, 0x29, 0x8b, - 0xbe, 0xf8, 0x01, 0xc8, 0x32, 0xf6, 0x51, 0x06, 0x5c, 0xef, 0xc6, 0x00, 0x7e, 0x48, 0x8b, 0x8f, - 0xe2, 0x55, 0x48, 0x1a, 0x93, 0xae, 0x29, 0x7b, 0xad, 0x86, 0xfc, 0x41, 0x5d, 0xdf, 0xdf, 0x52, - 0x1a, 0xf5, 0xca, 0xbe, 0x07, 0x5f, 0x3e, 0x89, 0x42, 0xc2, 0xaf, 0xb9, 0x87, 0x3d, 0x1c, 0x36, - 0xa2, 0x82, 0x58, 0x30, 0x23, 0x6c, 0x53, 0xb6, 0x8a, 0x50, 0xc6, 0x58, 0x44, 0xea, 0x86, 0x76, - 0x95, 0x29, 0x3a, 0x51, 0xe7, 0x83, 0x63, 0xec, 0x68, 0x07, 0xc7, 0xbe, 0xb0, 0x71, 0xba, 0xbd, - 0x7a, 0xb3, 0xdc, 0x90, 0x9b, 0x35, 0x7d, 0x97, 0x28, 0x54, 0xac, 0x34, 0xb4, 0x57, 0x6f, 0x6e, - 0x90, 0x02, 0x74, 0x16, 0x46, 0x77, 0x25, 0xad, 0xdc, 0x50, 0x9e, 0xcb, 0x6a, 0x45, 0xd2, 0xa8, - 0xbf, 0x31, 0x58, 0x1a, 0xd9, 0x95, 0xb4, 0x0d, 0xa3, 0xcc, 0x68, 0xd4, 0x6e, 0xb5, 0x58, 0xa3, - 0x41, 0xb3, 0xd1, 0x23, 0xa3, 0x0c, 0x4f, 0x84, 0x1b, 0x35, 0xdb, 0x7b, 0x4f, 0x64, 0x95, 0x85, - 0x35, 0x86, 0x76, 0x25, 0xad, 0x40, 0x0a, 0x8c, 0x6a, 0x6d, 0x7f, 0xef, 0x89, 0xd2, 0x20, 0x67, - 0x3c, 0x5a, 0xbd, 0x4d, 0x0a, 0xc4, 0xff, 0x23, 0xc0, 0xa2, 0xdf, 0xb2, 0xd1, 0xb8, 0x15, 0x4a, - 0xd9, 0x17, 0x4b, 0xe0, 0x6d, 0xc3, 0xff, 0x8d, 0xda, 0x97, 0xcd, 0x4e, 0x75, 0xa4, 0x2b, 0xd5, - 0xd1, 0x20, 0x54, 0xc7, 0xba, 0x52, 0xdd, 0xd7, 0x99, 0xea, 0x7e, 0x27, 0xd5, 0x5f, 0x8e, 0xf8, - 0x53, 0x4d, 0xad, 0xb9, 0x4b, 0x64, 0x53, 0x1e, 0x22, 0x1b, 0x8c, 0x0b, 0xd1, 0xae, 0x5c, 0x88, - 0x05, 0xe1, 0x42, 0x5f, 0x57, 0x2e, 0xf4, 0x77, 0xe6, 0xc2, 0x80, 0x93, 0x0b, 0xe7, 0x61, 0xd2, - 0x60, 0x42, 0xa6, 0x26, 0xfb, 0x6a, 0xf6, 0x7f, 0x8c, 0xc0, 0x84, 0xab, 0xdd, 0x8f, 0xa3, 0x4a, - 0x2f, 0xc1, 0xc8, 0x9e, 0xf4, 0x41, 0x59, 0x22, 0xbd, 0xf7, 0x35, 0xa6, 0xd4, 0xb0, 0x27, 0x7d, - 0x90, 0xc1, 0x2d, 0xf6, 0x35, 0x74, 0x09, 0xe2, 0xf2, 0x07, 0xad, 0xba, 0x2a, 0x97, 0x9f, 0x4b, - 0x6a, 0x93, 0xb6, 0x1a, 0xa0, 0x37, 0x11, 0xb4, 0xfc, 0xb1, 0xa4, 0x36, 0x71, 0x4b, 0xf1, 0x2b, - 0x02, 0xcc, 0xba, 0x98, 0xda, 0x83, 0xc2, 0x39, 0x31, 0x45, 0x02, 0x61, 0x8a, 0x7a, 0x62, 0xfa, - 0x5b, 0x5e, 0x98, 0x8e, 0x41, 0x1d, 0x9c, 0x18, 0xa3, 0x81, 0x30, 0xc6, 0x3c, 0x31, 0x5e, 0xb6, - 0x20, 0x6e, 0x28, 0x95, 0xf7, 0x95, 0xb6, 0xee, 0x2b, 0xb7, 0x3f, 0x88, 0xc0, 0xb4, 0x67, 0xdb, - 0x1f, 0x47, 0xd9, 0x3d, 0xc3, 0xd6, 0x40, 0xd7, 0xe5, 0xbd, 0x96, 0x6e, 0xc8, 0xee, 0x30, 0x5e, - 0x03, 0x56, 0x84, 0x5e, 0x85, 0x19, 0x6d, 0x57, 0x79, 0x5e, 0x6e, 0x28, 0x95, 0xf7, 0xcb, 0x4a, - 0x5b, 0x2f, 0x3f, 0x95, 0xea, 0x8d, 0xb6, 0x2a, 0x6b, 0xcc, 0x72, 0x4c, 0xe2, 0x5a, 0xcc, 0xc8, - 0x62, 0x5b, 0x7f, 0xc0, 0xaa, 0xb0, 0xcc, 0xcc, 0x79, 0x32, 0xb9, 0x07, 0x59, 0x76, 0x62, 0x8c, - 0x84, 0xc1, 0x18, 0xf5, 0xc7, 0xf8, 0xcf, 0xfc, 0x30, 0x1e, 0x83, 0x6c, 0x3b, 0x31, 0x47, 0xc3, - 0x60, 0x8e, 0xf9, 0x63, 0x9e, 0x85, 0xbe, 0xa2, 0x5a, 0xf3, 0xbc, 0x08, 0x1b, 0x2a, 0xaa, 0xb5, - 0xac, 0xb2, 0x27, 0xd5, 0x9b, 0xf8, 0xf0, 0x52, 0x25, 0x7f, 0xb1, 0x06, 0xec, 0x97, 0xf8, 0xff, - 0x05, 0x88, 0x16, 0xd5, 0x9a, 0x8b, 0xb2, 0xb0, 0xae, 0x71, 0x51, 0xad, 0xbd, 0x44, 0xb1, 0x78, - 0x04, 0x31, 0x2e, 0xc6, 0x43, 0xfe, 0xe6, 0x38, 0xd0, 0x6f, 0xe3, 0xc0, 0x05, 0x18, 0x2b, 0xaa, - 0xb5, 0x4d, 0x19, 0xef, 0x83, 0x25, 0xa5, 0x21, 0x6b, 0xf8, 0x60, 0xac, 0xe2, 0x3f, 0xc8, 0x29, - 0x65, 0xa8, 0x44, 0x7f, 0x88, 0xbf, 0x12, 0x21, 0xfc, 0xa4, 0x0d, 0xd1, 0x2c, 0x0c, 0x90, 0xd8, - 0x8c, 0xc9, 0xb4, 0x7e, 0xfc, 0x33, 0xef, 0x08, 0xc2, 0x47, 0x1c, 0x41, 0x78, 0x33, 0x92, 0x10, - 0xe5, 0x23, 0x09, 0xf6, 0x90, 0x56, 0xac, 0x63, 0x48, 0xab, 0xcf, 0x11, 0xd2, 0x32, 0xb1, 0xf6, - 0x73, 0x58, 0x9d, 0xcc, 0x1b, 0x08, 0xc5, 0x3c, 0xd7, 0xd2, 0x0d, 0x86, 0x5b, 0x3a, 0xf1, 0xa7, - 0x60, 0x32, 0x53, 0xad, 0x5a, 0x4c, 0x65, 0x67, 0x8f, 0x69, 0xe8, 0x57, 0xd4, 0x9a, 0xc5, 0xb1, - 0x3e, 0x45, 0xad, 0xe5, 0xab, 0x3c, 0x27, 0x23, 0x36, 0x4e, 0x9a, 0xa4, 0x45, 0xf9, 0x65, 0x78, - 0x0f, 0x66, 0xe8, 0x7d, 0xc7, 0x09, 0x8d, 0xff, 0x10, 0x66, 0x4a, 0xf2, 0x9e, 0xf2, 0xec, 0xc8, - 0xe3, 0x8b, 0x1f, 0x0b, 0x30, 0x6b, 0x0e, 0x72, 0xd2, 0x51, 0xdb, 0x8c, 0x23, 0x6a, 0x7b, 0x39, - 0x80, 0xc2, 0x32, 0xf2, 0x8c, 0xd0, 0xed, 0xc7, 0x02, 0xcc, 0xb8, 0xf0, 0x76, 0x24, 0x3d, 0xd4, - 0xbb, 0x06, 0x54, 0xb0, 0xc2, 0xf8, 0x14, 0xe3, 0xcd, 0xc0, 0x18, 0x3d, 0x63, 0xf9, 0xff, 0x4a, - 0x80, 0x29, 0xaf, 0x16, 0xa8, 0xc0, 0x07, 0xf4, 0x57, 0x42, 0x4e, 0xf2, 0x82, 0xa3, 0xfa, 0xb7, - 0x60, 0x8a, 0x3d, 0x72, 0xa0, 0xdb, 0xa0, 0xc1, 0xf1, 0x45, 0x66, 0xc1, 0xdc, 0x57, 0xfe, 0xa4, - 0x5c, 0x7c, 0x60, 0xf6, 0xa3, 0x5b, 0x93, 0xdf, 0x01, 0xdf, 0x18, 0x27, 0xe2, 0x33, 0x4e, 0x11, - 0x06, 0xd9, 0x38, 0x1a, 0x5a, 0x83, 0x41, 0xf6, 0xfa, 0xc2, 0x08, 0xd0, 0x74, 0x8d, 0xa7, 0xb0, - 0xbe, 0x25, 0xb3, 0xa3, 0xf8, 0xbd, 0x28, 0x0c, 0xb0, 0x52, 0x17, 0x18, 0xc4, 0x83, 0x61, 0x66, - 0x79, 0xd5, 0xee, 0x2f, 0x5d, 0x0d, 0x38, 0xa3, 0x6d, 0xb3, 0x39, 0xd2, 0x5e, 0xe1, 0x32, 0x77, - 0x7d, 0x21, 0x77, 0xaa, 0xfb, 0x2c, 0x86, 0xd2, 0x1f, 0xd0, 0xe1, 0xa3, 0x04, 0x70, 0x61, 0xa8, - 0xf3, 0x30, 0xa6, 0xca, 0x9a, 0xd2, 0x56, 0x2b, 0x72, 0x59, 0x79, 0xde, 0x64, 0x41, 0xec, 0xa1, - 0xd2, 0xa8, 0x51, 0x5a, 0xc4, 0x85, 0x9c, 0x12, 0x0e, 0xf2, 0x4a, 0x78, 0x0a, 0x06, 0x71, 0x31, - 0x77, 0x49, 0x30, 0xa0, 0xa8, 0x35, 0xe3, 0xce, 0x17, 0x57, 0xb1, 0x6d, 0x8f, 0xde, 0xda, 0x0e, - 0x29, 0xa6, 0x4f, 0x70, 0x0a, 0x06, 0x6b, 0xaa, 0xd4, 0x24, 0xaf, 0x6f, 0xe8, 0x95, 0xed, 0x00, - 0xf9, 0x9d, 0xaf, 0x8a, 0xff, 0x40, 0x80, 0x69, 0x83, 0xd3, 0x27, 0x6c, 0xb9, 0xee, 0x3b, 0x2c, - 0x57, 0x60, 0x99, 0x33, 0xec, 0xd6, 0x57, 0x05, 0x53, 0x17, 0x8e, 0x72, 0xaf, 0xb9, 0x61, 0x99, - 0xa7, 0x28, 0x01, 0xb2, 0x12, 0x54, 0x14, 0xbd, 0x8c, 0xd3, 0x77, 0x05, 0x40, 0xee, 0x7a, 0xb4, - 0xc1, 0x9b, 0xa6, 0xeb, 0xa1, 0x26, 0x78, 0xc1, 0x86, 0x29, 0x65, 0xe2, 0xef, 0xee, 0x1a, 0x7d, - 0x3b, 0x02, 0xa3, 0xb6, 0xc6, 0x9f, 0xb9, 0x47, 0x1d, 0xdc, 0xa3, 0xcf, 0x43, 0xdc, 0xc6, 0xac, - 0x4c, 0xb5, 0xea, 0xb2, 0x94, 0x21, 0x9d, 0x96, 0x1d, 0x98, 0xb4, 0x0d, 0xc9, 0x9e, 0x0f, 0x1e, - 0x71, 0xd4, 0x7b, 0x8e, 0x51, 0xa9, 0x5f, 0x14, 0x78, 0x54, 0x71, 0x0f, 0xc6, 0x0c, 0x5d, 0x55, - 0x1a, 0xb2, 0x17, 0x99, 0x5e, 0x1b, 0x82, 0xf3, 0x1e, 0x36, 0xea, 0xbe, 0x87, 0x9d, 0x82, 0xbe, - 0x9a, 0xaa, 0xb4, 0x5b, 0x4c, 0x18, 0xe8, 0x0f, 0xf1, 0xd7, 0x05, 0x18, 0xe6, 0xe6, 0x73, 0x3c, - 0x2f, 0x14, 0x1c, 0xcf, 0x0b, 0x7b, 0x9d, 0xfb, 0xc8, 0x87, 0x73, 0x13, 0x7c, 0x1f, 0x0f, 0xfe, - 0x36, 0x4c, 0x70, 0xd8, 0x7d, 0x38, 0xed, 0x01, 0x19, 0x1f, 0x59, 0x4f, 0x71, 0x3d, 0x4f, 0xda, - 0x5a, 0xaf, 0x39, 0xac, 0x75, 0xd0, 0xed, 0x8e, 0x50, 0x65, 0x58, 0xec, 0x5f, 0x13, 0x20, 0xe1, - 0x81, 0x99, 0x5a, 0xed, 0x2e, 0xcb, 0x16, 0xce, 0xe7, 0xdc, 0x72, 0xfa, 0x9c, 0xb7, 0x42, 0xe0, - 0xf5, 0x34, 0xec, 0xff, 0x56, 0x80, 0x19, 0xef, 0x36, 0x68, 0x8b, 0x37, 0xee, 0x37, 0x43, 0x4f, - 0xf4, 0x82, 0x0d, 0xfc, 0xa1, 0x00, 0x73, 0x36, 0xf5, 0x3e, 0x69, 0xd1, 0xc9, 0x39, 0x44, 0xe7, - 0x5a, 0x40, 0x0e, 0x39, 0x8e, 0x29, 0xff, 0x42, 0x80, 0xa4, 0x27, 0xee, 0x13, 0x10, 0x9f, 0x92, - 0x53, 0x7c, 0x5e, 0x0f, 0x85, 0xd9, 0x53, 0x80, 0x7e, 0xcb, 0x12, 0x7e, 0xf7, 0xd1, 0xa5, 0xc4, - 0x8b, 0xd0, 0xad, 0x1e, 0x26, 0x7b, 0xc1, 0x42, 0xf4, 0x3b, 0x11, 0x18, 0xe6, 0x1e, 0x79, 0x1f, - 0x39, 0x8c, 0x94, 0x69, 0xb5, 0x5e, 0xf2, 0x30, 0xd2, 0x26, 0x0c, 0x2b, 0xf5, 0x6a, 0xa5, 0x5c, - 0x51, 0x9a, 0x4f, 0xeb, 0x35, 0xb6, 0xf9, 0xa7, 0xba, 0x1e, 0x32, 0xf3, 0xd9, 0xb5, 0x35, 0xd2, - 0xe3, 0xe1, 0x2b, 0x25, 0xc0, 0x03, 0xd0, 0x5f, 0xab, 0x23, 0x00, 0x52, 0xab, 0xc5, 0x46, 0x13, - 0x9f, 0xc0, 0x04, 0xc7, 0x4d, 0x16, 0x74, 0xec, 0x22, 0xd1, 0x94, 0xe5, 0x11, 0xd7, 0x89, 0xaf, - 0xcf, 0xe7, 0xc4, 0xf7, 0xcb, 0x31, 0x00, 0x0b, 0x0e, 0x3a, 0x0b, 0xa3, 0xaa, 0x5c, 0xad, 0xab, - 0x78, 0xf8, 0xb6, 0x5a, 0x37, 0x3c, 0xbb, 0x11, 0xa3, 0xf0, 0x91, 0x5a, 0xd7, 0xd0, 0x63, 0x72, - 0x42, 0x21, 0x76, 0x81, 0x7c, 0x4d, 0xa0, 0x25, 0x22, 0x4b, 0xd1, 0x20, 0x1e, 0x2c, 0x9e, 0xc8, - 0xb0, 0x28, 0xe4, 0xc4, 0x33, 0xaa, 0x72, 0xbf, 0x34, 0x54, 0x80, 0x61, 0x7a, 0x04, 0xa1, 0xa3, - 0x46, 0xc9, 0xa8, 0xd7, 0x82, 0x8c, 0xba, 0x8e, 0xbb, 0x91, 0x21, 0xa1, 0x66, 0xfc, 0xa9, 0xa1, - 0xf7, 0x20, 0x2e, 0x59, 0x0c, 0xa4, 0x5f, 0x3e, 0xc4, 0x88, 0xe8, 0xbd, 0x1a, 0x64, 0x50, 0x8e, - 0xf9, 0x64, 0xe8, 0x71, 0xc9, 0x5e, 0x80, 0x9d, 0xcd, 0x4a, 0xa3, 0x2e, 0xd3, 0x33, 0x13, 0x73, - 0x36, 0x69, 0x41, 0xbe, 0x8a, 0x59, 0xc9, 0x2a, 0x35, 0xb9, 0xa2, 0xca, 0x3a, 0x0b, 0x34, 0x8e, - 0xd0, 0xc2, 0x6d, 0x52, 0x86, 0x7e, 0x1a, 0xe2, 0x52, 0x5b, 0xdf, 0x2d, 0x53, 0xb5, 0xa2, 0x08, - 0x07, 0x02, 0x46, 0x2a, 0x30, 0xc2, 0xb6, 0xce, 0x34, 0x93, 0x00, 0x1c, 0x93, 0x6c, 0xbf, 0xd1, - 0x1b, 0x70, 0xaa, 0xa5, 0xd0, 0x47, 0xc8, 0x4a, 0x5b, 0x2f, 0xdb, 0x57, 0x76, 0x90, 0xac, 0xec, - 0x0c, 0x6e, 0xb0, 0x41, 0xea, 0x4b, 0xdc, 0x1a, 0x8b, 0xdf, 0x88, 0xc1, 0xb4, 0x83, 0x07, 0x2c, - 0x32, 0xdf, 0x45, 0x00, 0xbb, 0x84, 0x18, 0xdc, 0x12, 0x16, 0x0d, 0x24, 0x61, 0xb1, 0x13, 0x91, - 0xb0, 0xbe, 0x93, 0x90, 0xb0, 0xfe, 0x63, 0x94, 0xb0, 0x97, 0x56, 0x3e, 0xbe, 0x19, 0x83, 0xb8, - 0x65, 0x37, 0x82, 0xd9, 0xa6, 0xf3, 0x30, 0xc6, 0x33, 0xcb, 0xb4, 0x53, 0xa3, 0x5c, 0x29, 0x55, - 0x9c, 0xcf, 0x24, 0xe4, 0x47, 0x5f, 0x42, 0x5e, 0x85, 0x91, 0x35, 0xde, 0xd4, 0xb9, 0xec, 0xa1, - 0xe0, 0xb6, 0x87, 0xe4, 0xfc, 0xc2, 0x91, 0xfc, 0xd2, 0x9d, 0x5f, 0x38, 0x6c, 0xb6, 0xf3, 0x8b, - 0x07, 0xe6, 0x97, 0xe2, 0xfc, 0xe2, 0xc2, 0xe5, 0x71, 0x7e, 0xf1, 0x6e, 0x13, 0xf2, 0xfc, 0xe2, - 0x1a, 0xe4, 0x05, 0xbb, 0x9e, 0xff, 0x3a, 0x0a, 0x23, 0xcc, 0x01, 0x26, 0x7a, 0x18, 0xf2, 0xf3, - 0x42, 0x74, 0x0e, 0xc6, 0x88, 0xd2, 0xca, 0xd5, 0x32, 0x0b, 0xab, 0xd2, 0xe1, 0x47, 0x58, 0x69, - 0x91, 0x44, 0x57, 0x2f, 0x41, 0x9c, 0x6f, 0xc5, 0x85, 0xa0, 0xc6, 0xac, 0x76, 0x24, 0x30, 0x70, - 0x15, 0x10, 0xdf, 0x92, 0x05, 0x5d, 0xa9, 0x8f, 0x10, 0xb7, 0xda, 0xb2, 0xd8, 0xeb, 0x02, 0x80, - 0xaa, 0x34, 0x64, 0x32, 0xa0, 0x11, 0x9d, 0x1a, 0xc2, 0x25, 0x78, 0x2c, 0x0d, 0xad, 0x1b, 0x7e, - 0x33, 0x55, 0xec, 0x1b, 0x01, 0x4f, 0x02, 0x84, 0x11, 0x9d, 0x1d, 0xe8, 0xc1, 0xa3, 0x39, 0xd0, - 0x43, 0x61, 0xdf, 0x12, 0x18, 0x4b, 0xc0, 0x7f, 0x38, 0xc4, 0xca, 0xc8, 0x3b, 0xf6, 0x0f, 0xcc, - 0x38, 0x23, 0x01, 0x1f, 0xcc, 0xe5, 0x70, 0xaf, 0x5d, 0xc4, 0x63, 0xed, 0xec, 0x3c, 0x8e, 0x3a, - 0x78, 0x2c, 0x3e, 0xb1, 0xcf, 0xdc, 0x9b, 0xb7, 0xdd, 0x65, 0x8e, 0xfb, 0x66, 0x08, 0x8c, 0xcc, - 0x91, 0xcf, 0x86, 0x1c, 0x5f, 0x5c, 0x82, 0xb1, 0x75, 0x4a, 0x93, 0x31, 0x80, 0xf3, 0x9a, 0xff, - 0x57, 0xad, 0xf3, 0x30, 0x5d, 0xfe, 0x13, 0xb6, 0xa0, 0x59, 0x87, 0x05, 0xbd, 0x1a, 0x46, 0x36, - 0x4d, 0x13, 0xba, 0x6b, 0x46, 0xad, 0x6c, 0xa0, 0x8f, 0xdf, 0x84, 0x8a, 0x69, 0x98, 0xe5, 0x67, - 0xea, 0x1e, 0xcd, 0xfe, 0xa7, 0x11, 0xbb, 0x60, 0x7c, 0x16, 0xd2, 0xee, 0x1a, 0xd2, 0xfe, 0xf3, - 0xd6, 0x75, 0x11, 0xc7, 0xb2, 0x4c, 0xb5, 0xda, 0x6d, 0x29, 0xf9, 0x2b, 0xa8, 0x88, 0xed, 0x0a, - 0x8a, 0xe7, 0x77, 0xd4, 0x3b, 0x58, 0x1d, 0xe3, 0x57, 0xed, 0xcb, 0x56, 0x58, 0x85, 0x83, 0xc0, - 0x02, 0xe1, 0x2f, 0x0c, 0xc5, 0x9e, 0x17, 0x08, 0x16, 0xcd, 0x3d, 0x7e, 0x10, 0xe2, 0xbf, 0x14, - 0x60, 0xc9, 0x3d, 0xdf, 0x49, 0x5b, 0x80, 0x9f, 0x70, 0x58, 0x80, 0x95, 0x30, 0x16, 0xc0, 0x11, - 0xcd, 0xfb, 0x81, 0x00, 0xa7, 0xfd, 0x29, 0x08, 0x64, 0x0e, 0x3a, 0x30, 0xce, 0x22, 0x3d, 0xea, - 0x4d, 0x7a, 0x8c, 0x27, 0xfd, 0xb1, 0xf3, 0x3b, 0xc3, 0x37, 0xc3, 0x13, 0xe6, 0xe9, 0x73, 0xfd, - 0x27, 0x01, 0x16, 0x3a, 0x36, 0x45, 0x8f, 0x79, 0xd7, 0xeb, 0x6e, 0xaf, 0xd3, 0xbe, 0x60, 0x0f, - 0xec, 0xaf, 0xc7, 0xe8, 0xe7, 0x45, 0xde, 0xee, 0x97, 0xef, 0x65, 0x93, 0x75, 0x8f, 0x1d, 0xe5, - 0xef, 0xb1, 0xed, 0xab, 0x1c, 0x73, 0xae, 0xb2, 0x7d, 0xa3, 0xed, 0x73, 0x3a, 0x4c, 0x59, 0xc3, - 0x61, 0xa2, 0x27, 0xad, 0xe5, 0x20, 0xdf, 0x15, 0x06, 0xf0, 0x96, 0x06, 0x8e, 0xe6, 0x2d, 0x0d, - 0x86, 0x32, 0xc3, 0x9d, 0xbe, 0xf7, 0x73, 0x6c, 0x19, 0xd0, 0x71, 0xcb, 0x18, 0x76, 0x6f, 0x19, - 0x74, 0x13, 0x1a, 0xe1, 0x37, 0x21, 0xfe, 0xe1, 0xc0, 0x68, 0xa7, 0x87, 0x03, 0x63, 0xce, 0x87, - 0x03, 0x4e, 0xb7, 0x6e, 0xdc, 0xed, 0xd6, 0x7d, 0x89, 0x7e, 0x67, 0xcb, 0xfb, 0x74, 0xbe, 0x1b, - 0xa8, 0x25, 0x10, 0x11, 0x7f, 0x81, 0x88, 0x76, 0x16, 0x88, 0x98, 0xd3, 0xf3, 0x7a, 0x97, 0x03, - 0xc0, 0x5c, 0x3b, 0x5f, 0x00, 0x21, 0x9d, 0xba, 0x5b, 0xf4, 0xf3, 0x33, 0xc3, 0x21, 0x0b, 0x3a, - 0xac, 0xf8, 0xd3, 0xa6, 0x5f, 0xc1, 0x77, 0xef, 0x62, 0xdd, 0x7c, 0xd5, 0x88, 0x8e, 0x1e, 0x35, - 0x47, 0xff, 0x92, 0x79, 0x2f, 0xe5, 0xa4, 0xfb, 0x98, 0x66, 0xe8, 0xc6, 0xf1, 0x86, 0xdd, 0xd1, - 0xe2, 0x69, 0xbc, 0x04, 0x71, 0x03, 0x81, 0x69, 0xaa, 0x29, 0x8e, 0xb1, 0x16, 0xef, 0x1e, 0x87, - 0x20, 0xf7, 0xbb, 0xd6, 0xf5, 0x95, 0x7d, 0xba, 0x1e, 0xa5, 0xcd, 0x0b, 0x62, 0xd4, 0x13, 0xe2, - 0x05, 0xb7, 0xa1, 0x62, 0x79, 0x2e, 0xe2, 0x42, 0x70, 0x8b, 0x25, 0xfe, 0xa2, 0x1f, 0x01, 0x6c, - 0xd5, 0x8e, 0x9f, 0x67, 0xdd, 0x16, 0xf0, 0x63, 0x01, 0x66, 0x2d, 0xbb, 0xf8, 0xb2, 0x3d, 0x58, - 0x34, 0x91, 0x99, 0xbe, 0xc3, 0x5f, 0x15, 0x60, 0xc6, 0x85, 0xb7, 0x97, 0xa7, 0x3f, 0x05, 0xe7, - 0xd3, 0x9f, 0x9b, 0xc1, 0xb7, 0x0f, 0xaf, 0xfd, 0xfe, 0x77, 0x04, 0x98, 0xf2, 0x6a, 0x11, 0xf2, - 0x65, 0xa2, 0x63, 0x08, 0x8f, 0xdd, 0xbd, 0x70, 0x94, 0xdd, 0xdd, 0x18, 0x2c, 0xf1, 0x4a, 0x97, - 0x7d, 0xfe, 0x9f, 0x5b, 0xee, 0x8b, 0x0f, 0xbb, 0x8f, 0x35, 0xe6, 0x15, 0xfe, 0x9d, 0x68, 0xd7, - 0xd5, 0x10, 0x3d, 0x15, 0xcd, 0x4e, 0x43, 0x70, 0x7d, 0xfb, 0xe1, 0x92, 0xf3, 0x0b, 0x11, 0x98, - 0xc9, 0xb4, 0xf5, 0xdd, 0x23, 0x4b, 0x7d, 0xc5, 0x27, 0x91, 0x47, 0x57, 0xb9, 0x74, 0xcc, 0x1e, - 0x32, 0x9b, 0x47, 0xc1, 0xe9, 0x65, 0xdf, 0x0c, 0x39, 0x9f, 0x87, 0xb2, 0x79, 0xb5, 0x08, 0xa9, - 0x6c, 0x1d, 0x89, 0x7a, 0x81, 0xca, 0x86, 0x8d, 0xb0, 0x6b, 0x79, 0x5f, 0x1a, 0x23, 0x6c, 0x22, - 0x33, 0x8d, 0xf0, 0x1e, 0x0c, 0x99, 0x85, 0x18, 0x08, 0xd9, 0x4d, 0xed, 0xcf, 0xc4, 0xe7, 0xc1, - 0xb2, 0x05, 0xee, 0x38, 0xec, 0x0c, 0xb0, 0xed, 0x2a, 0xc8, 0x01, 0x3b, 0xf5, 0x4f, 0x04, 0x7a, - 0xe6, 0x20, 0x6e, 0x3b, 0x3a, 0x05, 0xd3, 0x8f, 0xb6, 0x73, 0xa5, 0xed, 0x9d, 0xcc, 0x4e, 0xae, - 0xfc, 0xa8, 0xb0, 0xbd, 0x95, 0x5b, 0xcb, 0x3f, 0xc8, 0xe7, 0xb2, 0xf1, 0x57, 0xd0, 0x14, 0xc4, - 0xad, 0xaa, 0xcc, 0xda, 0x4e, 0xfe, 0x9d, 0x5c, 0x5c, 0x40, 0x33, 0x80, 0xac, 0xd2, 0x7c, 0x81, - 0x95, 0x47, 0xd0, 0x34, 0x4c, 0x58, 0xe5, 0xd9, 0xdc, 0x46, 0x6e, 0x27, 0x97, 0x8d, 0x47, 0xed, - 0x83, 0x6c, 0x14, 0xd7, 0xde, 0xce, 0x65, 0xe3, 0x31, 0x7b, 0xe3, 0xed, 0x47, 0xdb, 0x5b, 0xb9, - 0x42, 0x36, 0xde, 0x67, 0x2f, 0xce, 0x17, 0xf2, 0x3b, 0xf9, 0xcc, 0x46, 0xbc, 0x3f, 0xf5, 0x67, - 0xa0, 0x9f, 0x26, 0x9b, 0xc0, 0x93, 0xaf, 0xe7, 0x0a, 0xd9, 0x5c, 0xc9, 0x01, 0x75, 0x02, 0x46, - 0x59, 0xf9, 0x83, 0xdc, 0x66, 0x66, 0x03, 0xe3, 0x1c, 0x87, 0x61, 0x56, 0x44, 0x0a, 0x22, 0x08, - 0xc1, 0x18, 0x2b, 0xc8, 0xe6, 0xdf, 0xc9, 0x95, 0xb6, 0x73, 0xf1, 0x68, 0xea, 0xff, 0x09, 0x30, - 0x6a, 0x4b, 0x47, 0x83, 0x16, 0xe0, 0x14, 0x81, 0x90, 0xcb, 0x94, 0xd6, 0x1e, 0xbe, 0x9d, 0x7b, - 0xd7, 0x31, 0xd1, 0x1c, 0xcc, 0x3a, 0xaa, 0xb7, 0x73, 0xa5, 0x72, 0x21, 0xb3, 0x89, 0xa7, 0x9c, - 0x87, 0x84, 0xbd, 0xf2, 0x41, 0xbe, 0xb4, 0xbd, 0x43, 0x6b, 0x23, 0xee, 0xae, 0x1b, 0x19, 0xa3, - 0x32, 0xea, 0xae, 0x2c, 0xe4, 0xd7, 0xde, 0xa6, 0x95, 0x31, 0xb4, 0x08, 0x49, 0x7b, 0x65, 0x36, - 0xbf, 0xbd, 0xb5, 0x91, 0x79, 0x97, 0xd6, 0xf7, 0xa1, 0x59, 0x98, 0xb4, 0xd7, 0xe7, 0x36, 0x33, - 0xf9, 0x8d, 0x78, 0xbf, 0xbb, 0x82, 0x70, 0x36, 0x3e, 0x90, 0xfa, 0x19, 0x18, 0xe1, 0x55, 0x0b, - 0x37, 0xa4, 0x8d, 0x36, 0x73, 0x3b, 0x0f, 0x8b, 0xd9, 0x72, 0xee, 0xf3, 0x8f, 0x32, 0x1b, 0xdb, - 0xf1, 0x57, 0x30, 0x49, 0xb6, 0x8a, 0xed, 0x9d, 0x4c, 0x69, 0x67, 0xbb, 0xfc, 0x38, 0xbf, 0xf3, - 0x30, 0x2e, 0x60, 0xe1, 0xb1, 0xd5, 0xae, 0x15, 0x0b, 0x3b, 0x99, 0x7c, 0x61, 0x3b, 0x1e, 0x49, - 0x65, 0x61, 0x80, 0x65, 0x0a, 0xc0, 0x83, 0x6f, 0x3e, 0xc8, 0xec, 0xbc, 0xbb, 0xe5, 0x14, 0xb0, - 0x71, 0x18, 0x36, 0x2a, 0xb6, 0x37, 0xb7, 0xe9, 0x9a, 0x19, 0x05, 0xc5, 0x9d, 0xad, 0x78, 0x24, - 0xf5, 0x14, 0x06, 0x8d, 0x8c, 0x01, 0x28, 0x01, 0x53, 0xf8, 0x6f, 0x0f, 0x41, 0x9d, 0x01, 0x64, - 0xd6, 0x14, 0x8a, 0x3b, 0xe5, 0x52, 0x2e, 0x93, 0x7d, 0x37, 0x2e, 0xe0, 0x15, 0x37, 0xcb, 0x69, - 0x59, 0x04, 0xcb, 0x23, 0x57, 0xb6, 0x59, 0x7c, 0x07, 0x4b, 0x69, 0xea, 0x21, 0xc4, 0x9d, 0x1f, - 0xe6, 0xa3, 0x24, 0xcc, 0x14, 0x8a, 0x3b, 0xf9, 0x07, 0xf9, 0xb5, 0xcc, 0x4e, 0xbe, 0x58, 0x20, - 0xa8, 0x28, 0x63, 0x5f, 0xc1, 0x58, 0x5c, 0x75, 0x84, 0x84, 0x54, 0x1b, 0x86, 0xb9, 0xef, 0x11, - 0xf1, 0xba, 0x6e, 0x15, 0x37, 0xf2, 0x6b, 0xef, 0xfa, 0xe0, 0xe6, 0x2b, 0x4d, 0x15, 0x4b, 0xc0, - 0x14, 0x5f, 0xce, 0x29, 0xd9, 0x2c, 0x4c, 0xf2, 0x35, 0xa6, 0x9a, 0xa5, 0xb6, 0x60, 0xd0, 0xf8, - 0x7e, 0x0c, 0x77, 0x2f, 0x96, 0xd6, 0xbd, 0x26, 0x9c, 0x84, 0x71, 0xb3, 0xc6, 0x9c, 0x6d, 0x1a, - 0x26, 0xcc, 0x42, 0x6b, 0xaa, 0xd4, 0x6f, 0x08, 0x80, 0xdc, 0x1f, 0x76, 0x20, 0x11, 0x16, 0x8b, - 0xa5, 0xf5, 0xcd, 0xdc, 0xe6, 0xaa, 0xbf, 0x92, 0x9c, 0x81, 0x05, 0x8f, 0x36, 0x9c, 0x32, 0x08, - 0x68, 0x09, 0xe6, 0x3d, 0x9a, 0x58, 0x1a, 0x11, 0xc1, 0x92, 0xe7, 0xd1, 0x82, 0x2e, 0x40, 0x14, - 0xab, 0x84, 0x17, 0x0c, 0xac, 0x8c, 0xf9, 0x6c, 0x3c, 0x96, 0x92, 0xcc, 0x9b, 0x2d, 0xca, 0x93, - 0x79, 0x48, 0x6c, 0x95, 0x8a, 0x3f, 0x91, 0x5b, 0xdb, 0xf1, 0xe2, 0x0b, 0x66, 0x2b, 0x5f, 0x6b, - 0xf2, 0x26, 0x09, 0x33, 0x46, 0x85, 0x8b, 0x41, 0x8f, 0xcc, 0xb7, 0xb2, 0x86, 0x94, 0xb3, 0xa6, - 0x4c, 0xd2, 0xdf, 0x2e, 0x14, 0x1f, 0x17, 0xa8, 0x19, 0xe5, 0x2b, 0xb6, 0x73, 0x1b, 0x0f, 0xe2, - 0x82, 0xb3, 0xf9, 0x7a, 0x29, 0x53, 0xc0, 0x2b, 0x19, 0x49, 0x3d, 0x36, 0xdf, 0x36, 0x5b, 0x4c, - 0x5f, 0x82, 0x79, 0x03, 0x86, 0x3f, 0xcb, 0x5d, 0x2d, 0x58, 0x01, 0x63, 0x79, 0xea, 0xc0, 0x7a, - 0xe4, 0x6f, 0x7b, 0x31, 0x89, 0xce, 0xc1, 0x12, 0x6b, 0x5a, 0x2a, 0x6e, 0xe4, 0xfc, 0x66, 0x58, - 0x80, 0x53, 0x9e, 0xad, 0xd8, 0x82, 0x9e, 0x87, 0x33, 0x9e, 0xd5, 0x36, 0x53, 0x15, 0x49, 0x7d, - 0xdf, 0x7a, 0xfb, 0xe9, 0x94, 0xac, 0x0b, 0x20, 0xb2, 0x11, 0x3a, 0x4b, 0x97, 0x35, 0x53, 0x47, - 0x09, 0xb3, 0xa8, 0xea, 0x24, 0x65, 0x16, 0x67, 0xfd, 0x24, 0x4d, 0x84, 0x45, 0x3f, 0x58, 0xa6, - 0xb4, 0x6d, 0xc1, 0xa0, 0xf1, 0xec, 0x0e, 0x6b, 0x5f, 0x66, 0x6b, 0xcb, 0x47, 0xfb, 0xcc, 0x1a, - 0x5e, 0xfb, 0xcc, 0x42, 0x4e, 0xb8, 0xbe, 0x40, 0x5f, 0x8a, 0xf0, 0x8f, 0x2e, 0xb0, 0xb5, 0x25, - 0x65, 0xb9, 0xed, 0xad, 0x62, 0x61, 0x3b, 0x47, 0xe4, 0x66, 0xad, 0x98, 0xcd, 0xd1, 0xc5, 0x71, - 0x55, 0xe5, 0xb3, 0xe5, 0x9d, 0xe2, 0xdb, 0xb9, 0x42, 0x5c, 0x40, 0x67, 0xe1, 0xb4, 0xab, 0x9a, - 0xd4, 0x59, 0x8d, 0x22, 0x29, 0x15, 0x46, 0x6d, 0x2f, 0x32, 0x30, 0x07, 0x49, 0x01, 0x16, 0x4d, - 0xd2, 0x25, 0xf3, 0x68, 0xe7, 0x61, 0xb1, 0x94, 0xff, 0x49, 0x62, 0xf3, 0x8c, 0xa9, 0x93, 0x30, - 0x63, 0x6f, 0x95, 0xdf, 0xdc, 0xda, 0xc8, 0xaf, 0xe5, 0x77, 0xe2, 0x02, 0x3a, 0x0d, 0x73, 0xf6, - 0xba, 0x52, 0xee, 0x41, 0x29, 0xb7, 0xfd, 0xd0, 0x9c, 0xf3, 0x19, 0x4c, 0x7a, 0x3c, 0xd8, 0xc0, - 0x56, 0x93, 0x14, 0x6f, 0xe1, 0x91, 0x2c, 0x0b, 0xfb, 0x38, 0xb7, 0x1a, 0x7f, 0x85, 0x58, 0x20, - 0x8f, 0x4a, 0xb2, 0x1a, 0x99, 0xf5, 0x5c, 0x01, 0x4f, 0x8c, 0xcd, 0x83, 0x47, 0x9b, 0x42, 0x86, - 0xb1, 0xb7, 0x01, 0xc8, 0xfd, 0x90, 0x83, 0x98, 0x1c, 0x5c, 0xfa, 0x68, 0x87, 0x6d, 0x68, 0xa4, - 0xd3, 0x6a, 0x66, 0x3b, 0xbf, 0x46, 0xb7, 0x7e, 0x8f, 0xda, 0xad, 0xe2, 0x36, 0x9e, 0xd0, 0xbb, - 0xb2, 0x50, 0x2c, 0xe0, 0xd9, 0xca, 0x30, 0xe5, 0x75, 0xd5, 0x8f, 0x19, 0xcc, 0x21, 0xdc, 0xce, - 0x95, 0x32, 0x3e, 0xaa, 0x6d, 0x6b, 0x65, 0x88, 0x5f, 0x66, 0x6b, 0xcb, 0x50, 0x6d, 0xdd, 0x7c, - 0xfa, 0x6e, 0x05, 0x64, 0x39, 0x93, 0x40, 0xf8, 0xef, 0x25, 0x91, 0x96, 0x55, 0xe4, 0x9a, 0x98, - 0xa2, 0xb9, 0x08, 0x49, 0x77, 0x2d, 0x27, 0xa3, 0x7f, 0xe8, 0x08, 0xbf, 0x38, 0x15, 0xfa, 0x0a, - 0x5c, 0xe4, 0xfb, 0x77, 0xd6, 0xea, 0x14, 0x5c, 0xe8, 0xd4, 0xd8, 0xa6, 0xda, 0x97, 0xe1, 0x7c, - 0xa7, 0xb6, 0xbc, 0x7e, 0x5b, 0xc6, 0xc2, 0xb3, 0xa9, 0xa1, 0xe4, 0x17, 0xe1, 0x6c, 0x47, 0xa8, - 0xa6, 0xa6, 0xef, 0xc2, 0x98, 0x3d, 0xee, 0x6d, 0x38, 0x67, 0xbe, 0x3c, 0x66, 0x0e, 0xb6, 0x17, - 0x83, 0x99, 0xd3, 0xe7, 0xcd, 0xdd, 0xaf, 0xb3, 0x64, 0x85, 0xf6, 0x13, 0x15, 0x96, 0x7e, 0xab, - 0x8f, 0xff, 0x66, 0xe0, 0xd1, 0xc6, 0xd8, 0x0e, 0xf2, 0x59, 0xba, 0xb6, 0x5e, 0xc3, 0x30, 0x3a, - 0x23, 0x86, 0x1b, 0xec, 0xa8, 0x2f, 0x96, 0xd6, 0x71, 0x75, 0x94, 0x80, 0x73, 0x1f, 0xf7, 0x30, - 0x38, 0xac, 0x01, 0x1d, 0xc1, 0x2d, 0xc0, 0x29, 0x8f, 0x36, 0x6c, 0x64, 0x81, 0x48, 0xbb, 0xbb, - 0x9a, 0xc3, 0x1e, 0xc1, 0xd8, 0xbd, 0x66, 0x61, 0xd8, 0xa3, 0x2b, 0x5f, 0xfd, 0x9a, 0x00, 0x13, - 0x9b, 0xe6, 0xc1, 0x6b, 0x5b, 0x56, 0x9f, 0xd5, 0x2b, 0x32, 0x7a, 0x1b, 0x06, 0x1e, 0xca, 0x52, - 0x43, 0xdf, 0xfd, 0x22, 0x9a, 0x71, 0x5d, 0x27, 0xe4, 0xf6, 0x5a, 0xfa, 0x7e, 0xd2, 0xa7, 0x5c, - 0x8c, 0x1f, 0x7c, 0xff, 0xbf, 0x7f, 0x2d, 0x02, 0x68, 0x30, 0xbd, 0xcb, 0x46, 0x58, 0x87, 0xbe, - 0x92, 0x2c, 0x55, 0xf7, 0x43, 0x0f, 0x35, 0x46, 0x86, 0x1a, 0x44, 0xfd, 0x69, 0x95, 0xf4, 0x2f, - 0xc0, 0xe0, 0x3b, 0x2c, 0xa7, 0xbb, 0xef, 0x58, 0x7e, 0x59, 0xc2, 0xc5, 0x09, 0x32, 0xd8, 0x30, - 0x1a, 0x32, 0xf3, 0xc2, 0xa3, 0x2f, 0xc1, 0xf0, 0xba, 0x4c, 0x02, 0x34, 0xab, 0xfb, 0xf9, 0x2c, - 0xba, 0x10, 0x24, 0x52, 0x92, 0xcf, 0x26, 0x03, 0xa5, 0xa8, 0x14, 0xc5, 0x83, 0xc3, 0xc4, 0x30, - 0xbd, 0x62, 0x59, 0xc6, 0xf0, 0xc9, 0xf4, 0xa3, 0x68, 0x38, 0x8d, 0x4b, 0xb4, 0xf4, 0x87, 0xf5, - 0xea, 0x47, 0xe8, 0x1b, 0x02, 0x4c, 0x99, 0x08, 0x48, 0x2e, 0xbd, 0xf5, 0x86, 0xf2, 0x44, 0x6a, - 0xa0, 0x2b, 0x41, 0xa6, 0x60, 0x39, 0xc7, 0x03, 0xe2, 0x59, 0xf1, 0xc2, 0xb3, 0x80, 0xe6, 0xd2, - 0x35, 0x32, 0x25, 0x83, 0x45, 0xee, 0x6a, 0xd2, 0x1f, 0x92, 0x7f, 0x3e, 0x42, 0x7f, 0x43, 0x80, - 0x61, 0x2a, 0xb1, 0x78, 0x08, 0x0d, 0xdd, 0x08, 0x9e, 0xae, 0x94, 0x05, 0x89, 0x92, 0x2b, 0x61, - 0xba, 0xd0, 0x0d, 0x5c, 0xbc, 0xe4, 0x05, 0x75, 0x52, 0x1c, 0x63, 0x18, 0xcb, 0x1a, 0x69, 0x7e, - 0x47, 0x48, 0x61, 0x80, 0x23, 0x79, 0x0d, 0x0f, 0x41, 0xd3, 0x9a, 0x07, 0x40, 0xe8, 0xcc, 0xc3, - 0x1e, 0x00, 0xa1, 0x2b, 0xb5, 0xba, 0x78, 0xd1, 0x0b, 0x21, 0x42, 0x71, 0x03, 0x61, 0x5d, 0xa3, - 0x69, 0xd7, 0xd1, 0xcf, 0x09, 0x00, 0x56, 0x9a, 0xf5, 0xee, 0xf0, 0x5c, 0x29, 0xd9, 0x03, 0xae, - 0xee, 0x99, 0x83, 0xc3, 0xc4, 0x08, 0x00, 0x01, 0xf4, 0x5c, 0xad, 0xeb, 0x32, 0x95, 0x76, 0xb1, - 0x9f, 0x22, 0xc2, 0xbc, 0xfa, 0xaa, 0x00, 0x63, 0x59, 0x59, 0xaa, 0xe8, 0xf5, 0x67, 0x06, 0x9c, - 0xe3, 0x95, 0xf8, 0x15, 0x4f, 0x0c, 0xf3, 0xc9, 0x59, 0x4e, 0xe4, 0xd3, 0xe5, 0xaa, 0x09, 0xc1, - 0x00, 0x55, 0xfa, 0xe1, 0x83, 0x52, 0x6d, 0xa0, 0xfe, 0x82, 0x00, 0x83, 0x1b, 0x4a, 0xe5, 0xfd, - 0x13, 0x80, 0x73, 0xd5, 0x13, 0xce, 0x4c, 0x72, 0xc2, 0x06, 0xa7, 0xa1, 0x54, 0xde, 0xc7, 0x40, - 0x7e, 0x5e, 0x00, 0x78, 0xd4, 0x6c, 0x9c, 0x0c, 0x94, 0x65, 0x4f, 0x28, 0x89, 0xe4, 0xa4, 0x0d, - 0x4a, 0xbb, 0x69, 0x80, 0x51, 0x01, 0xb2, 0x72, 0x43, 0x0e, 0xb9, 0x4a, 0x7e, 0xb6, 0xfd, 0xdc, - 0xc1, 0x61, 0x62, 0x14, 0x86, 0xc9, 0xec, 0x55, 0x32, 0x2c, 0x35, 0x90, 0x29, 0x9b, 0x81, 0xfc, - 0x0a, 0xcb, 0xbd, 0x69, 0xfc, 0xe7, 0x18, 0xd7, 0x02, 0xfe, 0x5f, 0x18, 0x4c, 0x77, 0x2e, 0x06, - 0x6b, 0xae, 0x89, 0x29, 0x2f, 0x7d, 0x9e, 0x46, 0x36, 0x56, 0x18, 0xff, 0xbd, 0xc6, 0xdf, 0xc3, - 0xfb, 0x39, 0xf7, 0xd5, 0xc2, 0x09, 0x43, 0x7b, 0xfd, 0xe0, 0x30, 0x81, 0xcc, 0xcb, 0x82, 0x65, - 0xa9, 0xd5, 0xb2, 0x10, 0xce, 0xa3, 0x64, 0x9a, 0x7b, 0xaf, 0xed, 0x00, 0xfa, 0x97, 0x05, 0x80, - 0xa2, 0x5a, 0x3b, 0x69, 0x80, 0xd8, 0x5a, 0x03, 0xb9, 0xdc, 0xb7, 0x80, 0x4d, 0x21, 0x94, 0x56, - 0xd4, 0x9a, 0x03, 0xd0, 0xd7, 0x05, 0xf3, 0x7d, 0xe2, 0x49, 0x83, 0xba, 0x7e, 0x70, 0x98, 0x18, - 0x33, 0xdf, 0x0d, 0x58, 0xc0, 0x12, 0x68, 0x26, 0x6d, 0x24, 0x8f, 0xb0, 0x83, 0xfb, 0x8a, 0x00, - 0x63, 0x6c, 0x2f, 0x36, 0xb2, 0x49, 0x07, 0x95, 0xf1, 0x40, 0xbb, 0x35, 0x1b, 0x34, 0x90, 0xa8, - 0xb5, 0x18, 0x80, 0x7f, 0x28, 0xc0, 0x84, 0x2b, 0xeb, 0x32, 0xea, 0xfa, 0x55, 0xa0, 0x5f, 0xa2, - 0xe6, 0x70, 0x40, 0x03, 0xd9, 0x07, 0x86, 0x14, 0xdb, 0x87, 0xbf, 0x28, 0xc0, 0x08, 0x63, 0x20, - 0x4d, 0x6c, 0x1c, 0x94, 0x7d, 0x97, 0x03, 0x3b, 0x3b, 0x3e, 0x9e, 0x01, 0xb2, 0x59, 0x4f, 0xfa, - 0xdc, 0xe4, 0x5b, 0x02, 0x8c, 0x53, 0x61, 0xb0, 0x00, 0xdd, 0x0a, 0xce, 0x38, 0x3e, 0x6b, 0x72, - 0x18, 0x80, 0x81, 0xec, 0x3b, 0x41, 0x88, 0x59, 0xf6, 0x4d, 0x01, 0xe6, 0x4a, 0xb2, 0x26, 0x37, - 0xab, 0x5c, 0x22, 0x65, 0xaa, 0xcb, 0x9b, 0x61, 0x38, 0xe8, 0x67, 0x64, 0xdf, 0xf2, 0x44, 0x93, - 0x12, 0xcf, 0xbb, 0xd0, 0xe0, 0x2d, 0x10, 0xe3, 0x78, 0xc6, 0x41, 0x70, 0x2c, 0x2a, 0x4d, 0xeb, - 0x7c, 0xac, 0x8b, 0x4a, 0x86, 0x0c, 0xb4, 0xa8, 0x34, 0x6d, 0xb3, 0x7d, 0x51, 0x29, 0xa0, 0x10, - 0x8b, 0xca, 0xe7, 0x8c, 0x0e, 0x03, 0x30, 0xd0, 0xa2, 0x12, 0x84, 0xf6, 0x45, 0xe5, 0xf2, 0x48, - 0xb3, 0xbd, 0x42, 0xa9, 0xca, 0x2f, 0x66, 0x51, 0x09, 0x1a, 0xbf, 0x45, 0xe5, 0x4c, 0x9d, 0x91, - 0xd4, 0xfa, 0x58, 0x4d, 0x9d, 0x91, 0x8e, 0x39, 0x88, 0xa9, 0x63, 0x99, 0x9d, 0x1d, 0xa6, 0xce, - 0x80, 0x15, 0xc2, 0xd4, 0xd9, 0x53, 0x5c, 0x87, 0x03, 0x1a, 0xc8, 0xd4, 0x31, 0xa4, 0x98, 0x81, - 0x7f, 0x49, 0x30, 0x4f, 0x8e, 0x9b, 0x4f, 0xa5, 0xe0, 0xdc, 0xbb, 0x1a, 0x22, 0x03, 0xb5, 0xd6, - 0xed, 0x90, 0x41, 0x40, 0xed, 0xe1, 0xe9, 0xff, 0xb1, 0x00, 0x73, 0xdb, 0x72, 0xb3, 0xea, 0x93, - 0x8d, 0x19, 0xdd, 0xeb, 0x7e, 0x75, 0xdc, 0x29, 0x8d, 0xb3, 0xaf, 0x24, 0xde, 0xf6, 0x64, 0xdb, - 0x19, 0x71, 0xde, 0xe6, 0x41, 0x62, 0x09, 0xd4, 0x64, 0xbd, 0xf5, 0xbc, 0x89, 0x87, 0xde, 0xc7, - 0xfc, 0xfb, 0x9a, 0x00, 0x68, 0x5b, 0xd6, 0xf3, 0xcd, 0xba, 0x5e, 0x97, 0x1a, 0xc6, 0xd4, 0xa8, - 0xeb, 0x7f, 0xb4, 0xe1, 0xc8, 0x48, 0xed, 0x0b, 0xec, 0xa6, 0x27, 0xb0, 0x45, 0xf1, 0x94, 0x03, - 0x98, 0x5e, 0xa7, 0x08, 0x5a, 0xcf, 0x31, 0xaa, 0xbf, 0x2f, 0xc0, 0xdc, 0xba, 0xc5, 0x09, 0x57, - 0xb2, 0x68, 0xbf, 0x90, 0xc3, 0xeb, 0x41, 0x61, 0x3b, 0x47, 0x24, 0x0c, 0x1c, 0x85, 0xe1, 0x16, - 0xf9, 0x65, 0xad, 0xf1, 0x12, 0x5a, 0x4c, 0x93, 0xb2, 0xba, 0xac, 0xa5, 0x8d, 0xb4, 0xdc, 0x5a, - 0xba, 0x62, 0x76, 0x47, 0xbf, 0x27, 0xc0, 0x22, 0x3d, 0x2a, 0xfa, 0xa2, 0xbd, 0xd7, 0x2b, 0x2a, - 0x3a, 0xee, 0x11, 0xa8, 0xba, 0xcb, 0x7c, 0x2f, 0x4a, 0x95, 0xc5, 0xff, 0xb3, 0x62, 0x17, 0xb2, - 0xf0, 0x22, 0xfc, 0xbe, 0x00, 0x8b, 0x54, 0xa9, 0x8f, 0x9f, 0x32, 0x3a, 0xee, 0x11, 0x28, 0x7b, - 0xcb, 0x87, 0xb2, 0x4b, 0xc9, 0xb3, 0x9d, 0x29, 0x23, 0x12, 0x87, 0xc9, 0xfb, 0x44, 0x80, 0x45, - 0x7a, 0x8a, 0xf2, 0x25, 0xef, 0x4e, 0xaf, 0xf0, 0x3a, 0xec, 0x19, 0xf7, 0x0e, 0x0e, 0x13, 0xe3, - 0x30, 0xca, 0x80, 0x73, 0xe7, 0xad, 0xf3, 0xa9, 0x20, 0xc8, 0xb1, 0xc2, 0x4e, 0x71, 0xaa, 0x61, - 0x65, 0x5b, 0xf6, 0xd3, 0x89, 0x1b, 0x41, 0x89, 0x30, 0x87, 0x22, 0x2e, 0xbb, 0x87, 0x32, 0x9c, - 0x42, 0xb3, 0x5e, 0x08, 0xa5, 0x9a, 0x8c, 0x7e, 0x43, 0x80, 0x59, 0xbb, 0x16, 0x58, 0xc0, 0x6e, - 0x87, 0x06, 0xc0, 0xe4, 0xbe, 0x07, 0xe4, 0x37, 0x7d, 0xc4, 0x62, 0x5e, 0xf4, 0x83, 0x8e, 0x45, - 0xe1, 0x37, 0x05, 0x98, 0xb5, 0x4b, 0xfa, 0x51, 0xd0, 0x33, 0xd9, 0xee, 0x01, 0xfd, 0x1b, 0x3e, - 0xe8, 0xcf, 0x24, 0xe7, 0x7d, 0xd0, 0x9b, 0xd2, 0xfc, 0x4d, 0x01, 0x66, 0xed, 0xd2, 0x6c, 0x91, - 0xf0, 0x6a, 0x68, 0x24, 0x1d, 0xe4, 0xf7, 0xb6, 0x9f, 0xfc, 0x2e, 0xa6, 0x3a, 0x82, 0xc4, 0x08, - 0x13, 0x9c, 0xe0, 0xda, 0xd3, 0x2d, 0xfb, 0x09, 0xef, 0x6b, 0x41, 0xa1, 0xdb, 0x86, 0x23, 0x62, - 0xe0, 0x21, 0xc0, 0x0b, 0x68, 0xce, 0x0b, 0x62, 0x83, 0xf6, 0x45, 0xbf, 0x2d, 0xc0, 0x9c, 0x5d, - 0x88, 0xed, 0x20, 0xef, 0xf6, 0x04, 0x86, 0x09, 0x73, 0x8f, 0x94, 0xbc, 0xee, 0x23, 0x12, 0x4b, - 0x62, 0x27, 0x52, 0xb0, 0x44, 0xfc, 0x07, 0x01, 0xe6, 0xec, 0x42, 0x7d, 0x1c, 0xd4, 0x30, 0xe1, - 0xee, 0x91, 0x9a, 0x37, 0x7d, 0xa8, 0x39, 0x9f, 0x5c, 0xea, 0x40, 0x8d, 0x29, 0xe4, 0xdf, 0x16, - 0x60, 0xce, 0x2e, 0xe4, 0x76, 0x92, 0x6e, 0xf7, 0x84, 0xaa, 0x83, 0xb0, 0xdf, 0xf5, 0x13, 0x76, - 0x31, 0xd5, 0x15, 0x30, 0xfa, 0x22, 0xc0, 0xba, 0xac, 0x17, 0xd5, 0x1a, 0xb9, 0xd2, 0x38, 0x1f, - 0x20, 0x1d, 0x69, 0x3e, 0x9b, 0x3c, 0x1b, 0xa0, 0x99, 0xb8, 0xe4, 0x11, 0xe7, 0x19, 0x41, 0x60, - 0xc5, 0x79, 0xd0, 0xd7, 0xe9, 0x2e, 0x41, 0x26, 0xa7, 0xdf, 0x6e, 0xb0, 0xeb, 0x8c, 0x20, 0xe9, - 0x61, 0x69, 0x87, 0x60, 0x50, 0x56, 0x3c, 0xa0, 0x2c, 0xa2, 0x79, 0xe3, 0x2a, 0x83, 0x20, 0xa2, - 0x5f, 0x93, 0xa4, 0x3f, 0xa4, 0xff, 0x7e, 0x84, 0x7e, 0x41, 0x80, 0x51, 0x2b, 0xfc, 0x5d, 0x54, - 0x6b, 0xc7, 0xca, 0x9c, 0xeb, 0xd4, 0x57, 0xc7, 0x88, 0x2c, 0x01, 0x9b, 0x4b, 0xce, 0x70, 0x51, - 0x30, 0x47, 0xe4, 0x1b, 0xe3, 0x29, 0xfd, 0x50, 0xf1, 0xa8, 0x4e, 0x3c, 0x13, 0x74, 0xf1, 0xf8, - 0x6f, 0x56, 0xfd, 0x4c, 0xe4, 0x72, 0xf0, 0x84, 0xbf, 0xe4, 0x4b, 0x45, 0x8c, 0x67, 0x02, 0xc6, - 0x31, 0x9e, 0x3d, 0x52, 0x6c, 0x3f, 0x10, 0x12, 0x54, 0xb4, 0x42, 0x4b, 0xd3, 0x4f, 0x4c, 0x7f, - 0x49, 0x80, 0x11, 0x3e, 0xaf, 0x73, 0xf7, 0x0d, 0xc5, 0x23, 0x0b, 0x74, 0xc7, 0x0d, 0x05, 0x41, - 0x9c, 0xc3, 0xc3, 0xb1, 0x49, 0x34, 0xd8, 0x44, 0xbf, 0xdc, 0xf8, 0xc8, 0x40, 0x86, 0xd9, 0xf4, - 0x77, 0xcc, 0x10, 0x84, 0x85, 0xec, 0x56, 0xb0, 0xa8, 0x64, 0x60, 0x70, 0x99, 0x0e, 0xe0, 0xb0, - 0xd1, 0xf2, 0x04, 0x97, 0xfe, 0x90, 0x7d, 0x95, 0x41, 0x8c, 0xd6, 0xb7, 0x04, 0x18, 0x77, 0x24, - 0x96, 0xee, 0x0e, 0xd3, 0x3b, 0x13, 0xb5, 0x2f, 0xcc, 0xfb, 0x07, 0x87, 0x89, 0x49, 0x98, 0xe0, - 0x60, 0x3a, 0x6c, 0x55, 0x17, 0x9c, 0xe8, 0x7b, 0x02, 0xc4, 0xe9, 0xd5, 0x9f, 0x39, 0xa7, 0xd6, - 0x1d, 0xa5, 0x77, 0xd2, 0xe8, 0xe4, 0xed, 0xd0, 0xfd, 0xd8, 0x5d, 0xde, 0x3d, 0x7f, 0xd1, 0xc4, - 0x27, 0x16, 0x6f, 0x22, 0xb8, 0x3b, 0xc8, 0x8f, 0x05, 0x18, 0xa3, 0x43, 0x9a, 0xa9, 0x8d, 0x6f, - 0x86, 0x4a, 0xb5, 0x6a, 0x50, 0xf0, 0x5a, 0xc8, 0x5e, 0x0c, 0xff, 0xb2, 0x4f, 0xa8, 0x7b, 0x46, - 0x9c, 0xb0, 0x42, 0xdd, 0x1c, 0xde, 0x5f, 0xb4, 0x12, 0x57, 0x92, 0x3d, 0xe2, 0x72, 0xc0, 0x69, - 0xf3, 0xd9, 0x64, 0xd0, 0x64, 0xb9, 0x24, 0x62, 0x86, 0xec, 0x98, 0x50, 0x24, 0x4f, 0x71, 0xc5, - 0xd1, 0x98, 0x3d, 0x04, 0x8f, 0xfe, 0x9a, 0x00, 0xa3, 0xcc, 0x05, 0x62, 0xa9, 0x9c, 0x83, 0x32, - 0xd0, 0x96, 0xc5, 0x3a, 0x38, 0xbc, 0x8b, 0x6c, 0x87, 0x65, 0xf0, 0x2c, 0xed, 0x1a, 0x13, 0x87, - 0x4c, 0x6c, 0x98, 0x57, 0x7f, 0x53, 0x80, 0x51, 0xe6, 0xce, 0x84, 0x44, 0x66, 0xcb, 0x93, 0x1d, - 0x1c, 0xd9, 0x75, 0xa2, 0x53, 0x76, 0x64, 0x26, 0xe7, 0x26, 0x93, 0x0e, 0xce, 0x61, 0x88, 0x7f, - 0x57, 0x80, 0x09, 0x6b, 0x5f, 0x33, 0x60, 0x9e, 0xc4, 0xa2, 0x7e, 0xae, 0x13, 0xb6, 0xd3, 0xc9, - 0xa4, 0xe3, 0x62, 0xc5, 0xb1, 0xdf, 0x61, 0x9c, 0xa5, 0x97, 0x12, 0xa7, 0x7d, 0x1f, 0xfc, 0x96, - 0x00, 0xc9, 0x75, 0x59, 0x67, 0x69, 0x30, 0xf8, 0x37, 0x5b, 0x44, 0x5b, 0xba, 0x6e, 0x7c, 0xf6, - 0xfc, 0x19, 0xc9, 0x50, 0xf9, 0x2a, 0xc4, 0x0b, 0x3e, 0xba, 0x3c, 0x86, 0x46, 0xd2, 0xe4, 0x33, - 0x21, 0xeb, 0xe1, 0xc8, 0x34, 0x3e, 0xd6, 0xb8, 0x53, 0x26, 0xfb, 0x6d, 0xd8, 0x2b, 0xe1, 0xd2, - 0x5f, 0x92, 0x4d, 0x1b, 0x1f, 0x03, 0xa6, 0x61, 0xd2, 0x40, 0xe3, 0xb4, 0x8e, 0xe4, 0x64, 0x6e, - 0xb0, 0xd2, 0xbe, 0x79, 0xff, 0x81, 0x00, 0x53, 0x36, 0x9b, 0x68, 0x58, 0xf7, 0x3b, 0x3d, 0x24, - 0x99, 0x34, 0x94, 0xe8, 0x6e, 0x4f, 0x7d, 0x99, 0x95, 0x7c, 0x74, 0x70, 0x98, 0x58, 0xf2, 0xa4, - 0x05, 0x99, 0xff, 0xef, 0x3f, 0x25, 0xeb, 0x8a, 0x78, 0x81, 0x93, 0x10, 0xeb, 0x43, 0x33, 0x4f, - 0xe3, 0xff, 0x0d, 0x01, 0xe2, 0x99, 0x6a, 0xd5, 0x9e, 0x8e, 0xfa, 0x7a, 0x28, 0xa0, 0x99, 0x6a, - 0xb5, 0xe3, 0x16, 0x9b, 0x84, 0x29, 0x07, 0x6a, 0xbb, 0x44, 0x63, 0x77, 0xc5, 0x2e, 0xd1, 0x9c, - 0xbb, 0xf2, 0xb1, 0x00, 0x93, 0xd4, 0xfb, 0xb0, 0x43, 0x7c, 0x35, 0x14, 0x44, 0x3a, 0x82, 0x2f, - 0xca, 0x7c, 0x00, 0x94, 0xe4, 0xb0, 0xe5, 0x85, 0xd2, 0xee, 0xb7, 0x7c, 0x5b, 0x80, 0x49, 0xea, - 0x86, 0x1c, 0x05, 0x2f, 0x1d, 0xc1, 0x17, 0xef, 0xfa, 0xc1, 0x61, 0x62, 0x0e, 0xa6, 0x1d, 0x78, - 0xa9, 0xf3, 0x62, 0x02, 0x26, 0x87, 0xad, 0xce, 0x80, 0xd1, 0xef, 0x93, 0x38, 0x36, 0x27, 0xe6, - 0x54, 0x07, 0x5f, 0x0f, 0x9d, 0x8c, 0xd7, 0x10, 0xf1, 0x37, 0x7a, 0xe8, 0xc9, 0x04, 0xfc, 0xf3, - 0x07, 0x87, 0x89, 0x45, 0x98, 0x30, 0x4d, 0x87, 0xd2, 0x90, 0x3d, 0xc5, 0xfb, 0xb2, 0x78, 0xce, - 0x47, 0xbc, 0x89, 0xea, 0xf2, 0xc2, 0xfd, 0xcb, 0x02, 0x8c, 0x59, 0xc2, 0x4d, 0xb2, 0x5c, 0x2f, - 0x87, 0x00, 0xd8, 0x49, 0xb0, 0xf1, 0x19, 0x37, 0x01, 0xc8, 0x86, 0xd6, 0x2e, 0x30, 0xa7, 0xc4, - 0x29, 0x07, 0xff, 0x09, 0x3e, 0xb6, 0x2b, 0x4f, 0xd8, 0x84, 0x84, 0x40, 0xbb, 0x11, 0x26, 0x37, - 0x74, 0x67, 0x01, 0x79, 0xeb, 0xe0, 0x30, 0x71, 0xca, 0x32, 0x16, 0x04, 0x9d, 0x43, 0x3c, 0x16, - 0x52, 0x73, 0x5e, 0xf0, 0xd2, 0x1f, 0x36, 0xa5, 0x3d, 0xf9, 0x23, 0xf4, 0x03, 0x53, 0x32, 0xb8, - 0xa7, 0x22, 0x01, 0x24, 0xc3, 0x2f, 0xcf, 0x5b, 0x77, 0xc9, 0xf0, 0xcd, 0x6a, 0x27, 0x3e, 0x3e, - 0x38, 0x4c, 0x2c, 0xb8, 0x5f, 0x90, 0x38, 0x05, 0xe3, 0xba, 0x78, 0xc5, 0x47, 0x30, 0x6c, 0x4f, - 0x4c, 0x38, 0xf9, 0xf8, 0x4d, 0x01, 0xc6, 0xb9, 0x69, 0xc9, 0xfe, 0x78, 0x2d, 0x04, 0xce, 0x20, - 0xf7, 0x89, 0x5c, 0x73, 0x22, 0xe2, 0x01, 0x08, 0x49, 0xa1, 0x4b, 0x41, 0x08, 0x21, 0x1b, 0xe9, - 0xef, 0x0a, 0x30, 0x4d, 0x9d, 0x48, 0xc7, 0xdb, 0x7a, 0xf4, 0x5a, 0xc8, 0xec, 0x89, 0x2c, 0xe2, - 0x16, 0x8a, 0xa0, 0x1d, 0xbb, 0xce, 0x62, 0x82, 0xa8, 0x12, 0x38, 0x28, 0xba, 0x2a, 0x5e, 0xf4, - 0xa1, 0x48, 0xa9, 0x57, 0x2b, 0x3c, 0x55, 0x78, 0x59, 0x7e, 0xcb, 0xbc, 0x4a, 0xe5, 0xe9, 0xb9, - 0x11, 0x02, 0x18, 0x8b, 0xb7, 0x85, 0xa2, 0xe5, 0x51, 0x40, 0x5a, 0xae, 0x25, 0x03, 0xaf, 0x0e, - 0x26, 0xe6, 0x3f, 0x0b, 0x30, 0x6d, 0xb9, 0xb7, 0x3c, 0x41, 0x27, 0x29, 0x69, 0x52, 0x40, 0x62, - 0xde, 0x48, 0xde, 0x0c, 0x4a, 0x8c, 0xd3, 0x1f, 0xc6, 0x84, 0x95, 0xfe, 0x74, 0x10, 0x66, 0x77, - 0xa0, 0xff, 0xa7, 0x19, 0x02, 0xe6, 0x26, 0xe6, 0x52, 0x40, 0x5f, 0x0f, 0x9e, 0xbd, 0x9a, 0xc9, - 0x61, 0x88, 0x7c, 0xd7, 0x62, 0x23, 0x20, 0x81, 0xd9, 0xe4, 0xfd, 0x40, 0x04, 0xda, 0x13, 0xca, - 0x52, 0x85, 0xa3, 0xe9, 0xb3, 0x31, 0xad, 0xff, 0x4b, 0x80, 0x64, 0x49, 0xae, 0xc9, 0x4d, 0x59, - 0x65, 0x26, 0xc4, 0x96, 0x92, 0x34, 0xe4, 0x4a, 0x76, 0x3d, 0x2b, 0xf0, 0x83, 0x8b, 0x7a, 0x40, - 0x4a, 0x37, 0x92, 0xeb, 0x81, 0x97, 0xd2, 0xa2, 0x2e, 0x5d, 0xa6, 0x0f, 0xe3, 0x68, 0xf6, 0x54, - 0x9a, 0x51, 0x15, 0x53, 0xfc, 0x5f, 0x05, 0x98, 0xb4, 0xb9, 0x3c, 0xe4, 0xe0, 0xa2, 0xa1, 0x37, - 0x42, 0xe5, 0x8c, 0xb4, 0x6d, 0x6d, 0x77, 0x7a, 0xe9, 0xca, 0xf6, 0xb6, 0xed, 0x83, 0xc3, 0xc4, - 0x69, 0xcb, 0x8f, 0x20, 0x67, 0x24, 0xef, 0x4d, 0x41, 0x3c, 0xef, 0xc3, 0x05, 0x76, 0xae, 0xe2, - 0xf6, 0xb5, 0x4f, 0x04, 0xf3, 0xbb, 0xc2, 0x10, 0x07, 0x3f, 0x7b, 0xe6, 0xc5, 0x90, 0x07, 0xbf, - 0xd5, 0x83, 0xc3, 0xc4, 0x94, 0x17, 0x1d, 0x04, 0xfc, 0x39, 0x24, 0x76, 0x06, 0x4f, 0xf6, 0xb2, - 0x5f, 0x13, 0x00, 0xd9, 0xc2, 0x28, 0xf4, 0x2b, 0xf9, 0x50, 0xf9, 0xd2, 0xd8, 0x2e, 0x16, 0x0e, - 0x7c, 0xc6, 0x7e, 0x4e, 0xa4, 0xe0, 0xad, 0xa0, 0x8a, 0x28, 0x2e, 0x74, 0x44, 0x8f, 0x59, 0xfe, - 0x5d, 0x01, 0x90, 0x2d, 0xd0, 0xd2, 0x03, 0x76, 0x66, 0x2d, 0xc2, 0x61, 0x7f, 0xd0, 0x19, 0xfb, - 0xc5, 0x64, 0x00, 0xce, 0xb3, 0x4d, 0x77, 0xc6, 0x15, 0x86, 0xa1, 0x44, 0x9c, 0xac, 0xe4, 0x94, - 0x3a, 0x13, 0xf0, 0x6a, 0x72, 0xb9, 0x3b, 0x01, 0xce, 0xbd, 0x09, 0x13, 0x53, 0xfa, 0xd1, 0x25, - 0xc6, 0xbe, 0x1f, 0x7d, 0x42, 0x03, 0x3a, 0x7e, 0x59, 0x39, 0xfd, 0x02, 0x26, 0xb7, 0x7b, 0x48, - 0x33, 0x48, 0xa2, 0x26, 0x39, 0x72, 0xba, 0x3c, 0x65, 0xa7, 0xc1, 0x19, 0x3b, 0x21, 0x4f, 0x7c, - 0x0c, 0x4a, 0x18, 0x78, 0x7b, 0x08, 0xe5, 0x20, 0x02, 0xa7, 0xdc, 0x86, 0xd6, 0x88, 0xa3, 0xdc, - 0xef, 0x35, 0x69, 0x9f, 0x61, 0x74, 0xdf, 0xea, 0x7d, 0x00, 0x66, 0x7a, 0x9f, 0x04, 0xa1, 0xf3, - 0x4d, 0xf1, 0xf5, 0x2e, 0x2b, 0x66, 0x64, 0xbf, 0xf1, 0x0c, 0xaf, 0x7c, 0x4f, 0x80, 0x69, 0xeb, - 0x04, 0xca, 0xe7, 0x47, 0x7d, 0x2d, 0x3c, 0xfe, 0x4e, 0xe7, 0xd1, 0x9f, 0x3a, 0x38, 0x4c, 0xcc, - 0x43, 0xd2, 0x93, 0x18, 0x4b, 0xfe, 0x5e, 0x13, 0xaf, 0x87, 0xa5, 0x06, 0x53, 0xf1, 0x7d, 0x01, - 0x12, 0xb6, 0x20, 0x0c, 0x4f, 0xc8, 0xeb, 0xe1, 0x09, 0xe9, 0x12, 0x8e, 0x91, 0x03, 0xd1, 0x72, - 0x3f, 0x79, 0x27, 0xf4, 0xca, 0xd8, 0x42, 0x35, 0xbf, 0x2b, 0x40, 0xc2, 0x76, 0x0a, 0x3f, 0x22, - 0x55, 0x5d, 0xce, 0xe4, 0x15, 0x72, 0xf8, 0x9b, 0xf3, 0xa4, 0x8a, 0xbb, 0x77, 0xfa, 0x5c, 0xea, - 0x08, 0x64, 0xa1, 0x5f, 0x37, 0x6f, 0xa4, 0xcc, 0xcf, 0x49, 0x03, 0xdc, 0x48, 0x79, 0xa7, 0x78, - 0xea, 0x6e, 0x41, 0x7c, 0xb2, 0x9f, 0x89, 0xaf, 0xd1, 0x1b, 0x29, 0xf2, 0x7c, 0xd1, 0xe1, 0x09, - 0x24, 0xc5, 0x69, 0xf6, 0x86, 0xd1, 0xed, 0xb6, 0x7c, 0x8b, 0x25, 0x68, 0xb1, 0x7c, 0x96, 0x2b, - 0x81, 0x11, 0x04, 0x7d, 0xb1, 0x4d, 0xcd, 0xf4, 0x1b, 0xfe, 0x00, 0x17, 0x91, 0xf9, 0xfa, 0xd3, - 0xe0, 0xaa, 0xcd, 0x49, 0xf9, 0x15, 0x01, 0xc6, 0xad, 0x8f, 0xdc, 0xe8, 0x9e, 0x92, 0x0e, 0x3c, - 0x33, 0x73, 0x4f, 0x42, 0x40, 0x65, 0x9f, 0xcf, 0x70, 0x50, 0xed, 0xef, 0xb3, 0xbc, 0xb1, 0x62, - 0x76, 0xfe, 0x23, 0x01, 0xc6, 0xad, 0xe7, 0xc5, 0x61, 0x91, 0x32, 0x67, 0x24, 0x04, 0xd2, 0x37, - 0x3b, 0x20, 0x3d, 0x93, 0xec, 0xc8, 0x55, 0x0c, 0xf7, 0x3b, 0x02, 0x4c, 0xda, 0x3f, 0xef, 0xa3, - 0x90, 0x4f, 0x4a, 0x06, 0xf2, 0x1d, 0xe0, 0xe2, 0x33, 0x7e, 0x07, 0xb8, 0x4e, 0x77, 0xe3, 0x3b, - 0x24, 0xe8, 0xfb, 0x23, 0x02, 0xdd, 0xee, 0x5c, 0xfc, 0xa1, 0x00, 0xb3, 0xb6, 0x5d, 0x9a, 0xb3, - 0x1b, 0x41, 0xf3, 0xf9, 0x1e, 0xb7, 0xf9, 0x78, 0xef, 0xe0, 0x30, 0x71, 0x0e, 0x66, 0x0d, 0x4b, - 0xe9, 0xd0, 0xd2, 0xe0, 0x61, 0x3f, 0x3f, 0x3b, 0xf3, 0x5f, 0xac, 0xe4, 0x28, 0x76, 0x73, 0xb3, - 0x12, 0x96, 0xe0, 0x70, 0xcb, 0xf6, 0x24, 0x14, 0x5d, 0x37, 0xd1, 0x4a, 0x47, 0xba, 0xbc, 0xcd, - 0xd3, 0xef, 0x09, 0x30, 0x63, 0x3b, 0x43, 0xbd, 0x18, 0x2b, 0x25, 0x1d, 0x1c, 0x26, 0xce, 0x43, - 0xc2, 0x83, 0x34, 0xcf, 0x23, 0xfd, 0x8a, 0x78, 0x2d, 0x14, 0x6d, 0x78, 0xd5, 0xfe, 0x9b, 0x00, - 0x33, 0xb6, 0x13, 0x96, 0x45, 0xd9, 0xad, 0xb0, 0xeb, 0x16, 0xde, 0xb8, 0x3d, 0x0d, 0x47, 0xe0, - 0xed, 0x64, 0x0f, 0x8b, 0x67, 0x04, 0x64, 0x5c, 0xc7, 0x30, 0x8b, 0xd2, 0x13, 0x96, 0x50, 0x35, - 0x1c, 0x95, 0x6b, 0xc9, 0x7b, 0xe1, 0xa9, 0x74, 0x1a, 0x4f, 0x1a, 0x82, 0xfa, 0xd3, 0x4d, 0xb1, - 0xdd, 0xe6, 0x7e, 0x25, 0x02, 0xf3, 0xee, 0x93, 0x11, 0x67, 0x78, 0x57, 0x43, 0x45, 0x0d, 0x8e, - 0xd9, 0xfa, 0xea, 0x07, 0x87, 0x89, 0x34, 0x2c, 0xd8, 0xfd, 0x54, 0xa7, 0xad, 0xb2, 0xff, 0x37, - 0x1d, 0x94, 0x37, 0x77, 0xc5, 0x5b, 0x06, 0x6f, 0x0c, 0xe2, 0x9d, 0x19, 0x42, 0xfd, 0x6d, 0xf2, - 0x1f, 0x09, 0xf6, 0xff, 0xe1, 0xc2, 0x6e, 0x98, 0x6f, 0xf7, 0xc4, 0x90, 0x70, 0x92, 0xf0, 0x41, - 0xaf, 0x74, 0xdf, 0x47, 0x6f, 0x06, 0xa5, 0xdb, 0xdb, 0x66, 0xff, 0xb1, 0xf5, 0x82, 0xda, 0x8b, - 0x0c, 0x74, 0xb7, 0x27, 0xea, 0xc3, 0x1b, 0xf1, 0xe7, 0x07, 0x87, 0x89, 0xeb, 0xb0, 0xe8, 0xcb, - 0x01, 0xaa, 0x11, 0x5e, 0x2c, 0xe0, 0x4e, 0xc9, 0x61, 0x59, 0x80, 0x17, 0xff, 0xcb, 0x11, 0xf3, - 0xd1, 0xf5, 0x31, 0x32, 0x20, 0xbc, 0x91, 0xff, 0x73, 0x3d, 0x33, 0x60, 0x35, 0x79, 0x34, 0x19, - 0xc0, 0x5c, 0xf8, 0x2b, 0x11, 0x38, 0xed, 0x1d, 0x81, 0xb3, 0x38, 0xf1, 0x22, 0x14, 0xe1, 0xe7, - 0x84, 0x9e, 0xd9, 0x50, 0x48, 0xe6, 0x8f, 0xc4, 0x06, 0xe7, 0xde, 0x80, 0x59, 0x52, 0xfa, 0x71, - 0x67, 0x89, 0xeb, 0x79, 0xd7, 0x38, 0xbb, 0x98, 0x37, 0xf3, 0xc8, 0xde, 0x0a, 0x99, 0xad, 0x37, - 0xf0, 0x1e, 0xe1, 0x93, 0x59, 0x57, 0x5c, 0xa4, 0xdf, 0x97, 0x8a, 0x93, 0x69, 0xa9, 0xad, 0xef, - 0xba, 0xac, 0xf9, 0xea, 0xbf, 0x17, 0xbe, 0x9a, 0xf9, 0x25, 0x01, 0xad, 0xc3, 0x98, 0x95, 0x9a, - 0x69, 0x29, 0xb3, 0x95, 0x17, 0xaf, 0xa3, 0xe5, 0x5d, 0x5d, 0x6f, 0x69, 0x77, 0xd2, 0xe9, 0x5a, - 0x5d, 0xdf, 0x6d, 0x3f, 0x59, 0xae, 0x28, 0x7b, 0x69, 0x8c, 0x22, 0xcd, 0x50, 0xa4, 0x5b, 0xef, - 0xd7, 0xd2, 0x16, 0x92, 0x95, 0xe8, 0xf5, 0xe5, 0x1b, 0x29, 0x21, 0xb2, 0xc2, 0xff, 0x27, 0x81, - 0xe9, 0x9f, 0xd5, 0x94, 0xa6, 0xbd, 0xa4, 0xa6, 0xb6, 0x2a, 0x77, 0x5c, 0x6d, 0xee, 0xb8, 0xda, - 0xfc, 0x64, 0xc0, 0x79, 0xd3, 0x52, 0xab, 0x4e, 0x3a, 0x3c, 0xe9, 0x27, 0x71, 0x9c, 0x57, 0xff, - 0x24, 0x00, 0x00, 0xff, 0xff, 0xed, 0x3c, 0x91, 0x6e, 0x72, 0xa8, 0x00, 0x00, + // 8005 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x1c, 0x59, + 0x76, 0xde, 0x54, 0x77, 0xf3, 0x75, 0xf8, 0x6a, 0x5e, 0xbe, 0x5a, 0x4d, 0x91, 0xa2, 0x4a, 0xa3, + 0x17, 0x47, 0x62, 0x6b, 0x38, 0x1a, 0x69, 0x66, 0xb4, 0x23, 0x4d, 0x93, 0x6c, 0x51, 0xed, 0x21, + 0xbb, 0xb9, 0x4d, 0x6a, 0x94, 0xb1, 0x8d, 0x69, 0x97, 0xba, 0x4b, 0xcd, 0xf6, 0x34, 0xbb, 0x7a, + 0xab, 0xaa, 0xa5, 0xe1, 0x4e, 0x06, 0x1b, 0x70, 0x81, 0xc0, 0x70, 0xe2, 0x38, 0xbb, 0xeb, 0x4d, + 0x80, 0x0d, 0x36, 0x1b, 0x6f, 0xde, 0x71, 0x26, 0x41, 0x90, 0x25, 0xb0, 0x8e, 0x93, 0x8d, 0x91, + 0x45, 0x5e, 0xb6, 0x81, 0xd8, 0xd8, 0xc0, 0x46, 0x00, 0x03, 0x49, 0x9c, 0x07, 0x92, 0x3f, 0x09, + 0x9c, 0xc7, 0x8f, 0xcc, 0x8f, 0x45, 0x70, 0x1f, 0x55, 0x75, 0x6f, 0x3d, 0xba, 0xab, 0x9a, 0xa4, + 0x76, 0xf6, 0xf1, 0x4b, 0xec, 0xfb, 0xfc, 0xce, 0xb9, 0xe7, 0x9c, 0x7b, 0xee, 0xb9, 0xb7, 0x8e, + 0x20, 0xb9, 0xaf, 0x34, 0x95, 0x9a, 0xba, 0xaf, 0x36, 0xcd, 0xe5, 0x96, 0xae, 0x99, 0x1a, 0x5a, + 0xa8, 0x28, 0x9a, 0xb1, 0xfc, 0xf9, 0xba, 0xa9, 0x54, 0xd5, 0xc6, 0x32, 0x57, 0xad, 0xb4, 0xea, + 0xcb, 0x4f, 0x5f, 0x4e, 0x9f, 0xad, 0x69, 0x5a, 0xad, 0xa1, 0x66, 0x94, 0x56, 0x3d, 0xa3, 0x34, + 0x9b, 0x9a, 0xa9, 0x98, 0x75, 0xad, 0x69, 0xd0, 0xde, 0xe9, 0x39, 0x56, 0x4b, 0x7e, 0x3d, 0x6e, + 0x3f, 0xc9, 0xa8, 0xfb, 0x2d, 0xf3, 0x80, 0x55, 0x9e, 0x75, 0x57, 0x1a, 0xa6, 0xde, 0xae, 0xb0, + 0x89, 0xd3, 0xe7, 0xdc, 0xb5, 0x66, 0x7d, 0x5f, 0x35, 0x4c, 0x65, 0xbf, 0xc5, 0x1a, 0x5c, 0x23, + 0xff, 0x54, 0xae, 0xd7, 0xd4, 0xe6, 0x75, 0xe3, 0x99, 0x52, 0xab, 0xa9, 0x7a, 0x46, 0x6b, 0x91, + 0xd9, 0x7d, 0x90, 0xcc, 0x3e, 0x55, 0x1a, 0xf5, 0xaa, 0x62, 0xaa, 0x19, 0xeb, 0x0f, 0x56, 0xb1, + 0xe8, 0x9e, 0xa7, 0xaa, 0x1a, 0x15, 0xbd, 0xde, 0x32, 0x35, 0x9d, 0xb5, 0x48, 0x29, 0x6d, 0x73, + 0x8f, 0x8e, 0x6c, 0x4d, 0x40, 0x6b, 0xe4, 0xf7, 0x60, 0x74, 0x6d, 0x4f, 0x69, 0xd6, 0xd4, 0x92, + 0xfa, 0xb9, 0xb6, 0x6a, 0x98, 0x68, 0x0c, 0x62, 0xf5, 0x6a, 0x4a, 0x5a, 0x94, 0xae, 0x0c, 0x95, + 0x62, 0xf5, 0x2a, 0x9a, 0x82, 0xbe, 0x46, 0x7d, 0xbf, 0x6e, 0xa6, 0x62, 0x8b, 0xd2, 0x95, 0x44, + 0x89, 0xfe, 0x40, 0x97, 0x61, 0xdc, 0xc0, 0x1d, 0x9a, 0x15, 0xb5, 0xac, 0x3d, 0x79, 0x62, 0xa8, + 0x66, 0x2a, 0x4e, 0xea, 0xc7, 0xac, 0xe2, 0x22, 0x29, 0x95, 0x0f, 0x60, 0x80, 0x8e, 0x6f, 0xa0, + 0xb7, 0x60, 0xa0, 0x42, 0xff, 0x4c, 0x49, 0x8b, 0xf1, 0x2b, 0xc3, 0x2b, 0x97, 0x96, 0x3b, 0xaf, + 0xcc, 0x32, 0x43, 0x66, 0x75, 0x43, 0x33, 0xd0, 0xcf, 0x26, 0xa3, 0x60, 0xd8, 0x2f, 0x07, 0x63, + 0x9c, 0xc3, 0x28, 0xff, 0x73, 0x09, 0xfa, 0xe9, 0x08, 0xe8, 0x0e, 0x0c, 0xd3, 0x31, 0xca, 0x98, + 0x6d, 0x84, 0xba, 0xe1, 0x95, 0xf4, 0x32, 0xe5, 0xdb, 0xb2, 0xc5, 0xb7, 0xe5, 0x5d, 0x6b, 0x7d, + 0x4a, 0x40, 0x9b, 0xaf, 0x2b, 0xa6, 0x8a, 0xe6, 0x01, 0xd4, 0xa7, 0x6a, 0xd3, 0x2c, 0x9b, 0x07, + 0x2d, 0x95, 0xcc, 0x3c, 0x54, 0x1a, 0x22, 0x25, 0xbb, 0x07, 0x2d, 0x15, 0xa5, 0x61, 0xd0, 0xa2, + 0x99, 0xcd, 0x6f, 0xff, 0xc6, 0x80, 0xd5, 0x6a, 0xdd, 0xd4, 0xf4, 0x54, 0x82, 0x74, 0x63, 0xbf, + 0xd0, 0x4b, 0x90, 0xa8, 0x2a, 0xa6, 0x92, 0xea, 0x23, 0x40, 0x66, 0x3d, 0x40, 0x76, 0x88, 0x18, + 0x95, 0x48, 0x23, 0xf9, 0x2e, 0x8c, 0x66, 0x5b, 0xad, 0x46, 0xbd, 0x42, 0xa4, 0x21, 0xbf, 0xee, + 0x59, 0xa2, 0x79, 0x80, 0x96, 0xae, 0xfd, 0xbc, 0x5a, 0x31, 0xcb, 0xf5, 0xaa, 0x05, 0x90, 0x95, + 0xe4, 0xab, 0xf2, 0x1c, 0x0c, 0x6d, 0xb3, 0x1f, 0x9e, 0xbe, 0x72, 0x0a, 0xfa, 0x1f, 0x1a, 0xaa, + 0xee, 0x53, 0x73, 0x01, 0x86, 0x71, 0x4d, 0x6e, 0x5f, 0xa9, 0x37, 0xf2, 0xeb, 0x98, 0xc7, 0x2a, + 0xfe, 0x93, 0xb5, 0xa0, 0x3f, 0xe4, 0xf7, 0x60, 0xe2, 0x61, 0xb3, 0xfe, 0xb9, 0xb6, 0x8a, 0x9b, + 0x5a, 0x22, 0x74, 0x19, 0x86, 0xda, 0x86, 0xaa, 0x97, 0x9b, 0xca, 0x3e, 0xe5, 0xf5, 0xd0, 0x2a, + 0x7c, 0xb2, 0x3a, 0xa0, 0xf7, 0x25, 0xa5, 0xd4, 0xbf, 0x92, 0x4a, 0x83, 0xb8, 0xb2, 0xa0, 0xec, + 0xab, 0x68, 0xd1, 0x1a, 0x33, 0xe6, 0x69, 0xc4, 0xc6, 0x7f, 0x19, 0x10, 0x3f, 0xbe, 0xd1, 0xd2, + 0x9a, 0x86, 0x8a, 0xe6, 0x60, 0xa8, 0x6e, 0x94, 0xdb, 0xa4, 0x82, 0x4c, 0x30, 0x58, 0x1a, 0xac, + 0x1b, 0xb4, 0xa1, 0xfc, 0x5f, 0xfa, 0x60, 0x62, 0x4d, 0x57, 0x15, 0xb3, 0x37, 0x4c, 0x57, 0x01, + 0x9e, 0xd4, 0x75, 0xc3, 0xa4, 0x2d, 0xbd, 0xc0, 0x86, 0x48, 0x2d, 0x69, 0x7a, 0x19, 0x86, 0x1a, + 0x8a, 0xd5, 0x32, 0xee, 0x1d, 0x13, 0x57, 0x92, 0x86, 0x17, 0x61, 0xa8, 0x59, 0xaf, 0xbc, 0x4f, + 0x1b, 0x12, 0x49, 0x58, 0x1d, 0xfc, 0x64, 0xb5, 0x4f, 0x8f, 0x93, 0x66, 0xb8, 0x8a, 0x34, 0x7b, + 0x09, 0x46, 0xaa, 0x75, 0xa3, 0xd5, 0x50, 0x0e, 0x68, 0xcb, 0x3e, 0x57, 0xcb, 0x61, 0x56, 0x4b, + 0x1a, 0xdf, 0x06, 0xd4, 0xd2, 0xd5, 0x27, 0xaa, 0xae, 0xab, 0xd5, 0x72, 0x43, 0x69, 0xd6, 0xda, + 0x4a, 0x4d, 0x4d, 0xf5, 0xbb, 0xba, 0x4c, 0xd8, 0x6d, 0x36, 0x59, 0x13, 0x74, 0x17, 0xfa, 0x6b, + 0x6a, 0xb3, 0xaa, 0xea, 0xa9, 0x81, 0x45, 0xe9, 0xca, 0x58, 0x77, 0x2d, 0xdc, 0x20, 0xad, 0x4b, + 0xac, 0x17, 0x92, 0xad, 0x45, 0x1b, 0x24, 0x73, 0x8d, 0x7c, 0xb2, 0x3a, 0xa4, 0x0f, 0x10, 0x8a, + 0x7f, 0xce, 0x5a, 0x36, 0xb4, 0x04, 0x13, 0x75, 0xa3, 0x4c, 0xfe, 0x2e, 0x3f, 0x55, 0xf5, 0xfa, + 0x93, 0xba, 0x5a, 0x4d, 0x0d, 0x91, 0x85, 0x1a, 0xaf, 0x1b, 0x44, 0xa4, 0xde, 0x61, 0xc5, 0x68, + 0x1e, 0xfa, 0x5a, 0x7b, 0x5a, 0x53, 0x4d, 0x0d, 0x93, 0xf1, 0x06, 0x3e, 0x59, 0x4d, 0xe8, 0xb1, + 0xd4, 0x54, 0x89, 0x96, 0xb2, 0xa1, 0xc8, 0xdf, 0xce, 0x50, 0x23, 0xd6, 0x50, 0xdb, 0xb8, 0xdc, + 0x1e, 0x4a, 0x86, 0x81, 0x8a, 0xd6, 0x6e, 0x9a, 0xfa, 0x41, 0x6a, 0xd4, 0xc5, 0x08, 0xab, 0x02, + 0xbd, 0x08, 0x83, 0x0d, 0xad, 0xa2, 0x34, 0xea, 0xe6, 0x41, 0x6a, 0xcc, 0xbd, 0x14, 0x56, 0x0d, + 0xba, 0x0a, 0xc3, 0x2d, 0xcd, 0x30, 0x95, 0x46, 0xb9, 0xa2, 0x55, 0xd5, 0xd4, 0xb8, 0xab, 0x21, + 0xd0, 0xca, 0x35, 0xad, 0x8a, 0x85, 0xb8, 0x5f, 0x57, 0x6b, 0x75, 0xad, 0x99, 0x4a, 0xba, 0x5a, + 0xb1, 0x72, 0x94, 0x81, 0x31, 0xc3, 0xd4, 0x55, 0xd5, 0x2c, 0x2b, 0xd5, 0xaa, 0xae, 0x1a, 0x46, + 0x6a, 0xc2, 0xd5, 0x72, 0x94, 0xd6, 0x67, 0x69, 0x35, 0xba, 0x00, 0x83, 0x2d, 0xc5, 0x30, 0x9e, + 0x69, 0x7a, 0x35, 0x85, 0x78, 0xae, 0x3c, 0x28, 0xd9, 0x15, 0xf2, 0x57, 0x07, 0x20, 0x81, 0x25, + 0xdc, 0x63, 0x0e, 0xee, 0x41, 0x9f, 0x61, 0x62, 0x33, 0x17, 0x23, 0xeb, 0x7b, 0xb5, 0xdb, 0xfa, + 0xe2, 0x41, 0x76, 0x70, 0x87, 0x12, 0xed, 0x87, 0xee, 0xc1, 0x68, 0x05, 0x2b, 0x50, 0x5d, 0x6b, + 0x52, 0x7b, 0x19, 0xef, 0x6a, 0x2f, 0x47, 0xac, 0x0e, 0xc4, 0x62, 0xba, 0xcc, 0x6d, 0x22, 0x92, + 0xb9, 0x7d, 0x1d, 0x80, 0x68, 0x55, 0x43, 0xab, 0xd5, 0x9b, 0xcc, 0x42, 0x76, 0xea, 0x4b, 0x74, + 0x70, 0x13, 0x37, 0x46, 0x39, 0x48, 0x5a, 0xec, 0x29, 0xd3, 0x11, 0xab, 0x44, 0x23, 0x3a, 0x0f, + 0x30, 0x6e, 0xf5, 0xa1, 0x9b, 0x45, 0x15, 0x9b, 0x17, 0xc7, 0x56, 0x0c, 0x10, 0xbe, 0x3a, 0xf6, + 0x61, 0x5e, 0xb0, 0x0f, 0x83, 0xd4, 0xd8, 0x3a, 0x36, 0x61, 0x8e, 0xb7, 0x09, 0x43, 0xb4, 0xaf, + 0x6d, 0x07, 0xce, 0xbb, 0x14, 0x1c, 0x48, 0xbd, 0xa0, 0xd6, 0x73, 0xbc, 0xa9, 0x18, 0xa6, 0xfd, + 0x6d, 0x03, 0x71, 0xdd, 0x57, 0xe7, 0x47, 0x48, 0xab, 0x8e, 0x9a, 0x3e, 0xda, 0x93, 0xa6, 0xdb, + 0x26, 0x7f, 0x8c, 0x33, 0xf9, 0xfe, 0xba, 0x3d, 0xee, 0xaf, 0xdb, 0x53, 0x96, 0x6e, 0x27, 0xe9, + 0x08, 0x1d, 0x54, 0x7a, 0xc2, 0x5f, 0xa5, 0x53, 0x8e, 0x4a, 0x13, 0x4d, 0x70, 0x14, 0x39, 0xcd, + 0x29, 0xf2, 0x24, 0x63, 0xb4, 0xa5, 0xbe, 0xe7, 0x44, 0xf5, 0x9d, 0x22, 0xd5, 0xbc, 0xd2, 0xce, + 0xd8, 0x4a, 0x3b, 0x4d, 0x37, 0x66, 0xa6, 0xaa, 0x17, 0x3d, 0xaa, 0x3a, 0x43, 0xea, 0x5d, 0x0a, + 0xca, 0xef, 0xf9, 0xb3, 0xe2, 0x9e, 0x2f, 0x7f, 0x5f, 0x82, 0x09, 0xa2, 0x52, 0xaa, 0xa2, 0x57, + 0xf6, 0xac, 0xfd, 0xc7, 0x71, 0x5d, 0x24, 0x7f, 0xd7, 0x45, 0x70, 0xaf, 0xde, 0x83, 0x31, 0x43, + 0xd3, 0xcd, 0x7a, 0xb3, 0x56, 0xae, 0x68, 0x8d, 0xf6, 0x7e, 0x93, 0xa8, 0xe0, 0xd8, 0xca, 0xf5, + 0x50, 0xba, 0x4c, 0x26, 0x7e, 0x5b, 0x3d, 0x20, 0x06, 0xe6, 0x50, 0x8a, 0x2d, 0xbe, 0x50, 0x1a, + 0x65, 0xc3, 0xad, 0x91, 0xd1, 0x50, 0x12, 0xe2, 0x8a, 0x51, 0x21, 0x8a, 0x39, 0x58, 0xc2, 0x7f, + 0xa2, 0x3c, 0x0c, 0x7c, 0xae, 0xad, 0xea, 0x75, 0xd5, 0x48, 0xf5, 0x11, 0xe7, 0x2c, 0x13, 0x7e, + 0xaa, 0xcf, 0xb6, 0x55, 0xfd, 0xa0, 0x64, 0xf5, 0x97, 0xbf, 0x2d, 0xc1, 0xb8, 0xab, 0x12, 0xe5, + 0x21, 0xfe, 0xbe, 0x7a, 0x40, 0x68, 0x3f, 0x06, 0x15, 0x78, 0x0c, 0xb4, 0x0e, 0xfd, 0xfb, 0xaa, + 0xb9, 0xa7, 0x55, 0x99, 0x7d, 0xbb, 0xd6, 0x6d, 0x34, 0x3a, 0xd2, 0x16, 0xe9, 0x53, 0x62, 0x7d, + 0x31, 0xdf, 0x9f, 0x2a, 0x8d, 0x36, 0xdb, 0xb7, 0x4b, 0xf4, 0x87, 0xfc, 0x57, 0x25, 0x40, 0xfc, + 0xda, 0x31, 0x7f, 0x23, 0xda, 0xe2, 0x9d, 0x87, 0x11, 0x53, 0xc3, 0xb2, 0xa7, 0xab, 0x46, 0xbb, + 0x61, 0x39, 0xa5, 0xc3, 0xa4, 0xac, 0x44, 0x8a, 0xd0, 0x67, 0xb0, 0xf8, 0x91, 0xca, 0x04, 0x61, + 0xf6, 0x8b, 0x61, 0x38, 0x52, 0x62, 0x7d, 0xe4, 0xc3, 0x38, 0x75, 0xcd, 0xb6, 0x75, 0xed, 0x49, + 0xbd, 0xa1, 0x9e, 0xfc, 0x06, 0x20, 0xda, 0xb8, 0x78, 0x47, 0x1b, 0x97, 0x70, 0xd9, 0x38, 0xc1, + 0x80, 0xf5, 0xb9, 0x0c, 0x98, 0xdb, 0x00, 0xf6, 0x7b, 0x0d, 0xa0, 0xbf, 0x8d, 0x1b, 0xe8, 0x6e, + 0xe3, 0x06, 0x7b, 0xb2, 0x71, 0x82, 0xad, 0x1f, 0x72, 0xd9, 0x7a, 0x5e, 0xcd, 0xc1, 0xa5, 0xe6, + 0xbf, 0x1d, 0x83, 0xd4, 0xc3, 0x56, 0x95, 0xb9, 0x99, 0x6c, 0x29, 0x82, 0x0e, 0x51, 0x3f, 0x71, + 0x2a, 0x3b, 0x2f, 0x83, 0x7c, 0x00, 0x43, 0xf6, 0x61, 0xc3, 0xef, 0x08, 0xca, 0x1d, 0x13, 0x3a, + 0xee, 0x43, 0x71, 0xff, 0x7d, 0x88, 0x5f, 0xc8, 0x84, 0x6b, 0x21, 0x9f, 0xc2, 0x8c, 0xb3, 0x8e, + 0xa4, 0x5b, 0xd0, 0x2a, 0x76, 0x3d, 0xae, 0x44, 0xc1, 0x64, 0x91, 0x4c, 0xb6, 0x3b, 0x3f, 0x92, + 0xe9, 0xc6, 0x19, 0xeb, 0xba, 0x71, 0xc6, 0xfd, 0x37, 0x4e, 0x9e, 0xe4, 0x3e, 0x17, 0xc9, 0x6d, + 0x9e, 0x64, 0xd2, 0x2d, 0x88, 0xe4, 0x73, 0x02, 0x8e, 0xd5, 0xa1, 0x4f, 0x56, 0xfb, 0xf5, 0x44, + 0x52, 0xea, 0xe2, 0x9e, 0xfb, 0x43, 0x92, 0xff, 0x8d, 0x44, 0xed, 0x96, 0xb5, 0x8b, 0xba, 0x27, + 0xe3, 0xf6, 0xfa, 0x58, 0xf0, 0x5e, 0x1f, 0xef, 0xbc, 0xd7, 0x27, 0x3a, 0xec, 0xf5, 0x7d, 0x5d, + 0xf6, 0xfa, 0xfe, 0x6e, 0x7b, 0xfd, 0x80, 0x8b, 0x91, 0xff, 0x4b, 0xe2, 0x8d, 0x00, 0xeb, 0x11, + 0xc4, 0x4b, 0xd9, 0x45, 0x5e, 0xb7, 0xd3, 0x49, 0x3c, 0xec, 0xe9, 0x24, 0x11, 0xea, 0x74, 0xd2, + 0x17, 0xfa, 0x74, 0xd2, 0xdf, 0xf1, 0x74, 0x22, 0x17, 0x61, 0x64, 0xab, 0xdd, 0x30, 0xeb, 0xf7, + 0x95, 0x8a, 0xa9, 0xe9, 0x06, 0xba, 0x07, 0x89, 0xfd, 0x27, 0x8a, 0x15, 0xd4, 0x79, 0xa9, 0x9b, + 0xe6, 0x73, 0x7d, 0x4b, 0xa4, 0xa3, 0xfc, 0x8b, 0x12, 0x0c, 0x73, 0xa5, 0xe8, 0x0e, 0x24, 0x48, + 0xa8, 0x85, 0x7a, 0x0b, 0x97, 0xbb, 0x0e, 0xf8, 0x44, 0xd9, 0x3d, 0x68, 0xa9, 0x25, 0xd2, 0x09, + 0xdd, 0x15, 0x37, 0xbf, 0x2b, 0x5d, 0x7b, 0xdf, 0xcf, 0xf2, 0x7b, 0x9f, 0x7c, 0x16, 0x60, 0x9b, + 0x9d, 0x07, 0x7c, 0x82, 0x22, 0x0f, 0x60, 0xdc, 0xaa, 0x0d, 0x5a, 0xe6, 0x8b, 0xdc, 0xe1, 0xcd, + 0xa5, 0x35, 0xfc, 0xf1, 0xed, 0x12, 0x4c, 0x95, 0x54, 0x43, 0x35, 0xbb, 0x0c, 0x27, 0x3f, 0x85, + 0x85, 0x1d, 0xa7, 0x55, 0x41, 0x33, 0xeb, 0x4f, 0x58, 0x24, 0x28, 0x08, 0xc0, 0x3a, 0x63, 0x1f, + 0x65, 0xc0, 0x8d, 0x6e, 0x0c, 0xe0, 0x87, 0x74, 0xf8, 0x28, 0x5f, 0x83, 0xb4, 0x35, 0xe9, 0x9a, + 0xb6, 0xdf, 0x6a, 0xa8, 0x1f, 0xd4, 0xcd, 0x83, 0x6d, 0xad, 0x51, 0xaf, 0x1c, 0xf8, 0xf0, 0xe5, + 0x77, 0xe3, 0x90, 0x0a, 0x6a, 0xee, 0x63, 0x47, 0x87, 0xad, 0x08, 0x25, 0x16, 0xcc, 0x18, 0x73, + 0x02, 0x9c, 0x22, 0x94, 0xb5, 0x16, 0x91, 0xba, 0xbd, 0x5d, 0x65, 0x8a, 0x4e, 0xd4, 0xf9, 0x10, + 0x9b, 0x38, 0xde, 0x21, 0xb6, 0x2f, 0x6a, 0xcc, 0x70, 0xbf, 0xde, 0x2c, 0x37, 0xd4, 0x66, 0xcd, + 0xdc, 0x23, 0x0a, 0x95, 0x28, 0x0d, 0xed, 0xd7, 0x9b, 0x9b, 0xa4, 0x00, 0x5d, 0x80, 0xd1, 0x3d, + 0xc5, 0x28, 0x37, 0xb4, 0x67, 0xaa, 0x5e, 0x51, 0x0c, 0x6a, 0x58, 0x06, 0x4b, 0x23, 0x7b, 0x8a, + 0xb1, 0x69, 0x95, 0x59, 0x8d, 0xda, 0xad, 0x16, 0x6b, 0x34, 0x68, 0x37, 0x7a, 0x68, 0x95, 0xe1, + 0x89, 0x70, 0xa3, 0x66, 0x7b, 0xff, 0xb1, 0xaa, 0xb3, 0x10, 0xcb, 0xd0, 0x9e, 0x62, 0x14, 0x48, + 0x81, 0x55, 0x6d, 0x1c, 0xec, 0x3f, 0xd6, 0x1a, 0xc4, 0x87, 0xa1, 0xd5, 0x3b, 0xa4, 0x40, 0xb0, + 0x6d, 0xc3, 0x2e, 0xdb, 0xf6, 0xbf, 0x25, 0x58, 0x08, 0x5a, 0x52, 0x1a, 0x5f, 0x43, 0x4b, 0xe2, + 0x42, 0x4a, 0xbc, 0xdd, 0xf8, 0x3f, 0x71, 0x71, 0x49, 0x45, 0x8e, 0xc4, 0xba, 0x72, 0x24, 0x1e, + 0x86, 0x23, 0x89, 0xae, 0x1c, 0xe9, 0xeb, 0xcc, 0x91, 0x7e, 0x17, 0x47, 0xe4, 0x2f, 0xc6, 0x82, + 0xa9, 0xa6, 0x96, 0xde, 0x23, 0xce, 0x4b, 0x3e, 0xe2, 0x1c, 0x8e, 0x0b, 0xf1, 0xae, 0x5c, 0x48, + 0x84, 0xe1, 0x42, 0x5f, 0x57, 0x2e, 0xf4, 0x77, 0xe6, 0xc2, 0x80, 0x9b, 0x0b, 0x17, 0x61, 0xd2, + 0x62, 0x42, 0xb6, 0xa6, 0x06, 0x6a, 0xfd, 0xff, 0x88, 0xc1, 0x84, 0xa7, 0xdd, 0x8f, 0xa3, 0xba, + 0x2f, 0xc2, 0xc8, 0xbe, 0xf2, 0x41, 0x59, 0x21, 0xbd, 0x0f, 0x0c, 0xa6, 0xf0, 0xb0, 0xaf, 0x7c, + 0x90, 0xc5, 0x2d, 0x0e, 0x0c, 0x74, 0x05, 0x92, 0xea, 0x07, 0xad, 0xba, 0xae, 0x96, 0x9f, 0x29, + 0x7a, 0x93, 0xb6, 0xa2, 0xde, 0xc4, 0x18, 0x2d, 0x7f, 0xa4, 0xe8, 0x4d, 0xd2, 0x92, 0xd7, 0xc9, + 0x41, 0x97, 0x4e, 0x7e, 0x49, 0x82, 0x59, 0x0f, 0xc3, 0x7b, 0x50, 0x46, 0x37, 0xde, 0x58, 0x28, + 0xbc, 0x71, 0x3f, 0xbc, 0xf2, 0xaf, 0xfa, 0x61, 0x3a, 0x01, 0x55, 0x71, 0x63, 0x8c, 0x87, 0xc2, + 0x98, 0xf0, 0xc5, 0x78, 0xd5, 0x81, 0xb8, 0xa9, 0x55, 0xde, 0xd7, 0xda, 0x66, 0xa0, 0x4c, 0x7f, + 0x3f, 0x06, 0xd3, 0xbe, 0x6d, 0x7f, 0x1c, 0xe5, 0xfa, 0x3c, 0x5b, 0x03, 0xd3, 0x54, 0xf7, 0x5b, + 0xa6, 0x25, 0xd7, 0xc3, 0x78, 0x0d, 0x58, 0x11, 0x7a, 0x05, 0x66, 0x8c, 0x3d, 0xed, 0x59, 0xb9, + 0xa1, 0x55, 0xde, 0x2f, 0x6b, 0x6d, 0xb3, 0xfc, 0x44, 0xa9, 0x37, 0xda, 0xba, 0x6a, 0x30, 0xab, + 0x32, 0x89, 0x6b, 0x31, 0x23, 0x8b, 0x6d, 0xf3, 0x3e, 0xab, 0xea, 0x28, 0xe3, 0xbf, 0x2a, 0xc1, + 0x9c, 0xef, 0x02, 0xf4, 0x20, 0xe7, 0x6e, 0xfc, 0xb1, 0x28, 0xf8, 0xe3, 0x81, 0xf8, 0xe5, 0x7f, + 0x10, 0x84, 0xf1, 0x04, 0xe4, 0xde, 0x8d, 0x39, 0x1e, 0x05, 0x73, 0x22, 0x18, 0xf3, 0x2c, 0xf4, + 0x15, 0xf5, 0x9a, 0xef, 0x45, 0xdf, 0x50, 0x51, 0xaf, 0xad, 0x6b, 0xfb, 0x4a, 0xbd, 0x89, 0x0f, + 0x4b, 0x55, 0xf2, 0x17, 0x6b, 0xc0, 0x7e, 0xc9, 0x7f, 0x29, 0x06, 0xf1, 0xa2, 0x5e, 0xf3, 0x50, + 0x16, 0xd5, 0xdd, 0x2e, 0xea, 0xb5, 0x4f, 0xd1, 0x5d, 0x03, 0x82, 0x04, 0x17, 0xa7, 0x22, 0x7f, + 0x73, 0x1c, 0xe8, 0xe7, 0x39, 0xd0, 0xf1, 0x1c, 0x78, 0x09, 0xc6, 0x8a, 0x7a, 0x6d, 0x4b, 0xc5, + 0x7b, 0x6b, 0x49, 0x6b, 0xa8, 0x06, 0x3e, 0xc0, 0xeb, 0xf8, 0x0f, 0x72, 0x2a, 0x1a, 0x2a, 0xd1, + 0x1f, 0xf2, 0x77, 0x63, 0x84, 0xd7, 0xb4, 0x21, 0x9a, 0x85, 0x01, 0x12, 0x7b, 0xb2, 0x19, 0xda, + 0x8f, 0x7f, 0xe6, 0x5d, 0x17, 0x10, 0x31, 0x57, 0x50, 0xca, 0x8e, 0x86, 0xc4, 0xf9, 0x68, 0x88, + 0x18, 0xb2, 0x4b, 0x74, 0x0c, 0xd9, 0xf5, 0xb9, 0x42, 0x76, 0x36, 0xd6, 0x7e, 0x0e, 0xab, 0x9b, + 0xb1, 0x03, 0x91, 0x18, 0xeb, 0x59, 0xd6, 0xc1, 0x88, 0xcb, 0xca, 0x73, 0x7b, 0xc8, 0xc5, 0xed, + 0x9f, 0x81, 0xc9, 0x6c, 0xb5, 0xea, 0x30, 0x9c, 0x9d, 0x83, 0xa6, 0xa1, 0x5f, 0xd3, 0x6b, 0x0e, + 0x37, 0xfb, 0x34, 0xbd, 0x96, 0xaf, 0xf2, 0x5c, 0x8e, 0x09, 0x5c, 0xb6, 0xc9, 0x8e, 0xf3, 0x4b, + 0xf4, 0x1e, 0xcc, 0xd0, 0x7b, 0xa0, 0x53, 0x1a, 0xff, 0x01, 0xcc, 0x94, 0xd4, 0x7d, 0xed, 0xe9, + 0xb1, 0xc7, 0x97, 0x3f, 0x96, 0x60, 0xd6, 0x1e, 0xe4, 0xb4, 0x23, 0xd6, 0x59, 0x57, 0xc4, 0xfa, + 0x6a, 0x08, 0x45, 0x67, 0xe4, 0x59, 0x61, 0xeb, 0x8f, 0x25, 0x98, 0xf1, 0xe0, 0xed, 0x48, 0x7a, + 0xa4, 0xf7, 0x1e, 0xa8, 0xe0, 0x5c, 0x61, 0x50, 0x8c, 0x37, 0x43, 0x63, 0xf4, 0xbd, 0xc7, 0xf8, + 0x67, 0x12, 0x4c, 0xf9, 0xb5, 0x40, 0x05, 0xfe, 0x32, 0x63, 0x25, 0xe2, 0x24, 0xcf, 0xf9, 0x46, + 0xe3, 0x16, 0x4c, 0xb1, 0xc7, 0x1f, 0x74, 0xfb, 0xb4, 0x38, 0xbe, 0xc0, 0x2c, 0x9f, 0xf7, 0x29, + 0x04, 0x29, 0x97, 0xef, 0xdb, 0xfd, 0xe8, 0x96, 0x16, 0x14, 0x6c, 0xb0, 0xc6, 0x89, 0x05, 0x8c, + 0x53, 0x84, 0x41, 0x36, 0x8e, 0x81, 0xd6, 0x60, 0x90, 0xbd, 0x4a, 0xb1, 0x82, 0x45, 0x5d, 0x63, + 0x3b, 0xac, 0x6f, 0xc9, 0xee, 0x28, 0xff, 0xfb, 0x38, 0x0c, 0xb0, 0x52, 0x0f, 0x18, 0xc4, 0x83, + 0x61, 0xe6, 0x7c, 0x55, 0xf4, 0xc1, 0xae, 0x85, 0x9c, 0x51, 0xd8, 0xa4, 0x8e, 0xb5, 0xc7, 0x78, + 0x4c, 0x61, 0x5f, 0x44, 0x53, 0x78, 0x8f, 0xc5, 0x73, 0xfa, 0x43, 0x3a, 0x91, 0x94, 0x00, 0x2e, + 0x24, 0x76, 0x11, 0xc6, 0x74, 0xd5, 0xd0, 0xda, 0x7a, 0x45, 0x2d, 0x6b, 0xcf, 0x9a, 0x2c, 0x48, + 0x3f, 0x54, 0x1a, 0xb5, 0x4a, 0x8b, 0xb8, 0x90, 0x53, 0xc2, 0x41, 0x5e, 0x09, 0xcf, 0xc0, 0x20, + 0x2e, 0xe6, 0x2e, 0x48, 0x06, 0x34, 0xbd, 0x66, 0xdd, 0x85, 0xe3, 0x2a, 0xb6, 0x5d, 0xd2, 0xdb, + 0xec, 0x21, 0xcd, 0xf6, 0x25, 0xce, 0xc0, 0x60, 0x4d, 0x57, 0x9a, 0xe4, 0x55, 0x12, 0xbd, 0xca, + 0x1e, 0x20, 0xbf, 0xf3, 0x62, 0x74, 0x7a, 0xc4, 0x65, 0xde, 0xff, 0xb6, 0x04, 0xd3, 0xd6, 0x2a, + 0x9c, 0xb2, 0x55, 0xbb, 0xe7, 0xb2, 0x6a, 0xa1, 0xe5, 0xd1, 0xb2, 0x69, 0x5f, 0x96, 0x6c, 0x3d, + 0x39, 0xce, 0x7d, 0xef, 0xa6, 0x63, 0xba, 0xe2, 0x04, 0xc8, 0x4a, 0x58, 0x31, 0xf5, 0x33, 0x5c, + 0xdf, 0x91, 0x00, 0x79, 0xeb, 0xd1, 0x26, 0x6f, 0xb6, 0x6e, 0x44, 0x9a, 0xe0, 0x39, 0x1b, 0xad, + 0x25, 0x1b, 0x7f, 0x77, 0x97, 0xea, 0x5f, 0xc6, 0x60, 0x54, 0x68, 0xfc, 0x13, 0xb7, 0x2a, 0xa4, + 0x5b, 0xe5, 0xbe, 0xd1, 0xfc, 0x2c, 0x24, 0x05, 0x46, 0x66, 0xab, 0x55, 0x8f, 0x85, 0x8d, 0xe8, + 0xec, 0xec, 0xc2, 0xa4, 0x30, 0x24, 0x7b, 0x8e, 0x79, 0xcc, 0x51, 0xef, 0xba, 0x46, 0xa5, 0xfe, + 0x54, 0xe8, 0x51, 0xe5, 0x7d, 0x18, 0xb3, 0xf4, 0x58, 0x6b, 0xa8, 0x7e, 0x64, 0xfa, 0x6d, 0x24, + 0xee, 0xbb, 0xeb, 0xb8, 0xf7, 0xee, 0x7a, 0x0a, 0xfa, 0x6a, 0xba, 0xd6, 0x6e, 0x31, 0x41, 0xa1, + 0x3f, 0xe4, 0xdf, 0x97, 0x60, 0x98, 0x9b, 0xcf, 0xf5, 0x5c, 0x53, 0x72, 0x3d, 0xd7, 0xec, 0x75, + 0xee, 0x63, 0x07, 0x0a, 0x6c, 0xf0, 0x7d, 0x1c, 0x78, 0x41, 0x60, 0xfa, 0x5d, 0x02, 0x73, 0x1b, + 0x26, 0x38, 0xba, 0x02, 0x56, 0xc1, 0x87, 0x1c, 0x7c, 0x7c, 0x3e, 0xc3, 0xf5, 0x3c, 0x6d, 0x2b, + 0xbf, 0xe6, 0xb2, 0xf2, 0x61, 0xb7, 0x50, 0x42, 0x95, 0x65, 0xe9, 0x7f, 0x5d, 0x82, 0x94, 0x0f, + 0x66, 0x6a, 0xed, 0xbb, 0x2c, 0x69, 0x34, 0x3f, 0x76, 0xdb, 0xed, 0xc7, 0xde, 0x8a, 0x80, 0xd7, + 0x77, 0x43, 0xf8, 0x17, 0x12, 0xcc, 0xf8, 0xb7, 0x41, 0xdb, 0xfc, 0xa6, 0x70, 0x33, 0xf2, 0x44, + 0xcf, 0x79, 0x63, 0x38, 0x92, 0x60, 0x4e, 0x50, 0xfd, 0xd3, 0x16, 0x9d, 0x9c, 0x4b, 0x74, 0xae, + 0x87, 0xe4, 0x90, 0xeb, 0xe8, 0xf3, 0x4f, 0x24, 0x48, 0xfb, 0xe2, 0x3e, 0x05, 0xf1, 0x29, 0xb9, + 0xc5, 0xe7, 0xb5, 0x48, 0x98, 0x7d, 0x05, 0xe8, 0xb7, 0x1c, 0xe1, 0xf7, 0x1e, 0x87, 0x4a, 0xbc, + 0x08, 0xdd, 0xea, 0x61, 0xb2, 0xe7, 0x2c, 0x44, 0xff, 0x2d, 0x06, 0xc3, 0xdc, 0x83, 0xfa, 0x63, + 0x87, 0xb4, 0xb2, 0xad, 0xd6, 0xa7, 0x3c, 0xa4, 0xb5, 0x05, 0xc3, 0x5a, 0xbd, 0x5a, 0x29, 0x57, + 0xb4, 0xe6, 0x93, 0x7a, 0x8d, 0x39, 0x0d, 0x4b, 0x5d, 0x0f, 0xae, 0xf9, 0xf5, 0xb5, 0x35, 0xd2, + 0xe3, 0xc1, 0x0b, 0x25, 0xc0, 0x03, 0xd0, 0x5f, 0x9d, 0x62, 0x33, 0xab, 0x23, 0x00, 0x4a, 0xab, + 0xc5, 0x66, 0x92, 0x1f, 0xc3, 0x04, 0xc7, 0x69, 0x16, 0x1c, 0xed, 0x22, 0xed, 0x74, 0x39, 0x62, + 0x9e, 0x13, 0x66, 0x5f, 0xc0, 0x09, 0xf3, 0xab, 0x09, 0x00, 0x07, 0x2a, 0xba, 0x00, 0xa3, 0xba, + 0x5a, 0xad, 0xeb, 0x78, 0xf8, 0xb6, 0x5e, 0xb7, 0xbc, 0xc5, 0x11, 0xab, 0xf0, 0xa1, 0x5e, 0x37, + 0xd0, 0x23, 0x72, 0x22, 0x22, 0x36, 0x83, 0x7c, 0xd5, 0x61, 0xa4, 0x62, 0x8b, 0xf1, 0x30, 0x5e, + 0x31, 0x9e, 0xc8, 0xb2, 0x36, 0xe4, 0x84, 0x35, 0xaa, 0x73, 0xbf, 0x0c, 0x54, 0x80, 0x61, 0x7a, + 0xe4, 0xa1, 0xa3, 0xc6, 0xc9, 0xa8, 0xd7, 0xc3, 0x8c, 0xba, 0x81, 0xbb, 0x91, 0x21, 0xa1, 0x66, + 0xfd, 0x69, 0xa0, 0xf7, 0x20, 0xa9, 0x38, 0x0c, 0xa4, 0x5f, 0xa0, 0x24, 0x88, 0x58, 0xbe, 0x12, + 0x66, 0x50, 0x8e, 0xf9, 0x64, 0xe8, 0x71, 0x45, 0x2c, 0xc0, 0x0e, 0x6c, 0xa5, 0x51, 0x57, 0xe9, + 0x19, 0x8d, 0x39, 0xb0, 0xb4, 0x20, 0x5f, 0xc5, 0xac, 0x64, 0x95, 0x86, 0x5a, 0xd1, 0x55, 0x93, + 0x05, 0x44, 0x47, 0x68, 0xe1, 0x0e, 0x29, 0x43, 0x3f, 0x0b, 0x49, 0xa5, 0x6d, 0xee, 0x95, 0xa9, + 0xca, 0x51, 0x84, 0x03, 0x21, 0x23, 0x23, 0x18, 0x61, 0xdb, 0x64, 0x5a, 0x4b, 0x00, 0x8e, 0x29, + 0xc2, 0x6f, 0xf4, 0x3a, 0x9c, 0x69, 0x69, 0xf4, 0x31, 0xb8, 0xd6, 0x36, 0xcb, 0xe2, 0xca, 0x0e, + 0x92, 0x95, 0x9d, 0xc1, 0x0d, 0x36, 0x49, 0x7d, 0x89, 0x5b, 0x63, 0xf9, 0xeb, 0x09, 0x98, 0x76, + 0xf1, 0x80, 0xdd, 0x20, 0x74, 0x11, 0xc0, 0x2e, 0x21, 0x0d, 0xaf, 0x84, 0xc5, 0x43, 0x49, 0x58, + 0xe2, 0x54, 0x24, 0xac, 0xef, 0x34, 0x24, 0xac, 0xff, 0x04, 0x25, 0xec, 0x53, 0x2b, 0x1f, 0xdf, + 0x48, 0x40, 0xd2, 0xb1, 0x1b, 0xe1, 0x6c, 0xd3, 0x45, 0x18, 0xe3, 0x99, 0x65, 0xdb, 0xa9, 0x51, + 0xae, 0x94, 0x2a, 0xce, 0x4f, 0x24, 0xe4, 0x87, 0x5f, 0x42, 0x5e, 0x81, 0x91, 0x35, 0xde, 0xd4, + 0x79, 0xec, 0xa1, 0xe4, 0xb5, 0x87, 0xe4, 0x6c, 0xc3, 0x91, 0xfc, 0xa9, 0x3b, 0xdb, 0x70, 0xd8, + 0x84, 0xb3, 0x8d, 0x0f, 0xe6, 0x4f, 0xc5, 0xd9, 0xc6, 0x83, 0xcb, 0xe7, 0x6c, 0xe3, 0xdf, 0x26, + 0xe2, 0xd9, 0xc6, 0x33, 0xc8, 0x73, 0x76, 0x4b, 0xff, 0x43, 0x1c, 0x46, 0x98, 0x73, 0x4c, 0xf4, + 0x30, 0xe2, 0x67, 0x9e, 0xe8, 0x45, 0x18, 0x23, 0x4a, 0xab, 0x56, 0xcb, 0x2c, 0x8c, 0x4b, 0x87, + 0x1f, 0x61, 0xa5, 0x45, 0x12, 0xcd, 0xbd, 0x02, 0x49, 0xbe, 0x15, 0x17, 0xd6, 0x1a, 0x73, 0xda, + 0x91, 0x80, 0xc2, 0x35, 0x40, 0x7c, 0x4b, 0x16, 0xe4, 0xa5, 0x3e, 0x42, 0xd2, 0x69, 0xcb, 0x62, + 0xbd, 0xf3, 0x00, 0xba, 0xd6, 0x50, 0xc9, 0x80, 0x56, 0xc4, 0x6b, 0x08, 0x97, 0xe0, 0xb1, 0x0c, + 0xb4, 0x61, 0xf9, 0xd4, 0x54, 0xb1, 0x5f, 0x0e, 0x79, 0x4a, 0x20, 0x8c, 0xe8, 0xec, 0x5c, 0x0f, + 0x1e, 0xcf, 0xb9, 0x1e, 0x8a, 0xfa, 0x1e, 0xc2, 0x5a, 0x02, 0xfe, 0x03, 0x2e, 0x56, 0xe6, 0xf9, + 0x66, 0xc0, 0xfd, 0xa4, 0xee, 0x03, 0x3b, 0xae, 0x49, 0x08, 0x0b, 0xe7, 0x8e, 0x78, 0xd7, 0x35, + 0xe6, 0xb3, 0xae, 0x22, 0xff, 0xe3, 0x2e, 0xfe, 0xcb, 0x8f, 0xc5, 0x99, 0x7b, 0xf3, 0xc4, 0xbb, + 0xcc, 0x71, 0xcf, 0x0e, 0xab, 0x91, 0x39, 0xf2, 0xeb, 0x11, 0xc7, 0x97, 0x17, 0x61, 0x6c, 0x83, + 0xd2, 0x64, 0x0d, 0xe0, 0x7e, 0xaa, 0xf0, 0x0f, 0x9d, 0x73, 0x34, 0x15, 0x8d, 0x53, 0xb6, 0xae, + 0xeb, 0x2e, 0xeb, 0x7a, 0x2d, 0x8a, 0xdc, 0xda, 0xe6, 0x75, 0xcf, 0x8e, 0x76, 0x09, 0xa0, 0x4f, + 0xde, 0xbc, 0xca, 0x19, 0x98, 0xe5, 0x67, 0xea, 0x1e, 0x3d, 0xff, 0x9d, 0x98, 0x28, 0x18, 0x3f, + 0x09, 0xa1, 0x1f, 0xeb, 0x65, 0xc2, 0x9f, 0x72, 0xae, 0xae, 0x38, 0x76, 0x66, 0xab, 0xd5, 0x6e, + 0xcb, 0xcc, 0x5f, 0x95, 0xc5, 0xc4, 0xab, 0x32, 0x6e, 0x2d, 0xe2, 0xfe, 0xc1, 0xf1, 0x04, 0xbf, + 0xa2, 0x5f, 0x74, 0x42, 0x35, 0x1c, 0x04, 0x16, 0x78, 0x7f, 0x6e, 0x28, 0xf6, 0xfd, 0x40, 0xb0, + 0x08, 0xf1, 0xc9, 0x83, 0x90, 0xff, 0xa9, 0x04, 0x8b, 0xde, 0xf9, 0x4e, 0xdb, 0x3a, 0xfc, 0x94, + 0xcb, 0x3a, 0xac, 0x44, 0xb1, 0x0e, 0xae, 0x08, 0xe1, 0x1f, 0x49, 0x70, 0x2e, 0x98, 0x82, 0x50, + 0xa6, 0xa2, 0x03, 0xe3, 0x1c, 0xd2, 0xe3, 0xfe, 0xa4, 0x27, 0x78, 0xd2, 0x1f, 0xb9, 0xbf, 0x05, + 0x7d, 0x33, 0x3a, 0x61, 0xbe, 0xbe, 0xda, 0xbf, 0x95, 0x60, 0xbe, 0x63, 0x53, 0xf4, 0x88, 0x77, + 0xd9, 0xee, 0xf4, 0x3a, 0xed, 0xf3, 0x8e, 0x4a, 0x27, 0xe8, 0xa7, 0x5c, 0xfe, 0x6e, 0x5b, 0xe0, + 0xe5, 0x96, 0x73, 0xdf, 0x1e, 0xe7, 0xef, 0xdb, 0xc5, 0x55, 0x4e, 0xb8, 0x57, 0x59, 0xdc, 0x84, + 0xfb, 0xdc, 0x8e, 0xd6, 0xba, 0xe5, 0x68, 0xd1, 0x13, 0xda, 0x72, 0x98, 0x6f, 0x3f, 0x43, 0x78, + 0x59, 0x03, 0xc7, 0xf3, 0xb2, 0x06, 0x23, 0x99, 0xe8, 0x8e, 0xdf, 0x64, 0x8a, 0xdb, 0x09, 0x74, + 0xdc, 0x4e, 0x86, 0xbd, 0xdb, 0x09, 0xdd, 0xa0, 0x46, 0xf8, 0x0d, 0x8a, 0x7f, 0xe0, 0x30, 0xda, + 0xe9, 0x81, 0xc3, 0x98, 0xfb, 0x81, 0x83, 0xdb, 0x1d, 0x1c, 0xef, 0xec, 0x0e, 0x26, 0x5d, 0xbb, + 0xc5, 0x17, 0xe8, 0x77, 0xd2, 0xbc, 0x2f, 0x18, 0xb8, 0xf1, 0x3a, 0xc2, 0x12, 0x0b, 0x16, 0x96, + 0x78, 0x67, 0x61, 0x49, 0xb8, 0x3d, 0xb6, 0x77, 0x39, 0x00, 0xcc, 0x25, 0x0c, 0x04, 0x10, 0xd1, + 0x19, 0xbc, 0x45, 0x3f, 0xf5, 0xb3, 0x1c, 0xb9, 0xb0, 0xc3, 0xca, 0x3f, 0x6b, 0xfb, 0x23, 0x7c, + 0xf7, 0x2e, 0x96, 0x2f, 0x50, 0xc5, 0xe8, 0xe8, 0x71, 0x7b, 0xf4, 0x2f, 0xd8, 0xf7, 0x60, 0x6e, + 0xba, 0x4f, 0x68, 0x86, 0x6e, 0x1c, 0x6f, 0x88, 0x0e, 0x1a, 0x4f, 0xe3, 0x15, 0x48, 0x5a, 0x08, + 0x6c, 0x33, 0x4e, 0x71, 0x8c, 0xb5, 0x78, 0xb7, 0x3a, 0x02, 0xb9, 0xdf, 0x71, 0xae, 0xcb, 0xc4, + 0xe9, 0x7a, 0x94, 0x36, 0x3f, 0x88, 0x71, 0x5f, 0x88, 0x97, 0xbc, 0x46, 0x8c, 0xe5, 0x30, 0x49, + 0x4a, 0xe1, 0xad, 0x99, 0xfc, 0xcb, 0x41, 0x04, 0xb0, 0x55, 0x3b, 0x79, 0x9e, 0x75, 0x5b, 0xc0, + 0x8f, 0x25, 0x98, 0x75, 0x6c, 0xe6, 0xa7, 0xed, 0xd1, 0xa5, 0x8d, 0xcc, 0xf6, 0x2b, 0xfe, 0x82, + 0x04, 0x33, 0x1e, 0xbc, 0xbd, 0x3c, 0x51, 0x2a, 0xb8, 0x9f, 0x28, 0xdd, 0x0c, 0xbf, 0xb5, 0xf8, + 0xf9, 0x02, 0xbf, 0x23, 0xc1, 0x94, 0x5f, 0x8b, 0x88, 0xaf, 0x2b, 0x5d, 0x43, 0xf8, 0xec, 0xfc, + 0x85, 0xe3, 0xec, 0xfc, 0xd6, 0x60, 0xa9, 0x17, 0xba, 0xf8, 0x00, 0xff, 0xd8, 0x71, 0x6d, 0x02, + 0xd8, 0x7d, 0xa2, 0x71, 0xb4, 0xe8, 0x6f, 0x5d, 0xbb, 0xae, 0x86, 0xec, 0xab, 0x68, 0x22, 0x0d, + 0xe1, 0xf5, 0xed, 0x07, 0x4b, 0xce, 0x2f, 0xc5, 0x60, 0x26, 0xdb, 0x36, 0xf7, 0x8e, 0x2d, 0xf5, + 0x95, 0x80, 0x44, 0x2c, 0x5d, 0xe5, 0xd2, 0x35, 0x7b, 0xc4, 0x6c, 0x2c, 0x05, 0xb7, 0x07, 0x7e, + 0x33, 0xe2, 0x7c, 0x3e, 0xca, 0xe6, 0xd7, 0x22, 0xa2, 0xb2, 0x75, 0x24, 0xea, 0x39, 0x2a, 0x1b, + 0x36, 0xc2, 0x9e, 0xe5, 0xfd, 0xd4, 0x18, 0x61, 0x1b, 0x99, 0x6d, 0x84, 0xf7, 0x61, 0xc8, 0x2e, + 0xc4, 0x40, 0xc8, 0x6e, 0x2a, 0x3e, 0x75, 0x3f, 0x0b, 0x8e, 0x2d, 0xf0, 0xc6, 0x76, 0x67, 0x80, + 0x6d, 0x57, 0x61, 0x0e, 0xdf, 0x4b, 0x7f, 0x5f, 0xa2, 0xe7, 0x11, 0xe2, 0xd2, 0xa3, 0x33, 0x30, + 0xfd, 0x70, 0x27, 0x57, 0xda, 0xd9, 0xcd, 0xee, 0xe6, 0xca, 0x0f, 0x0b, 0x3b, 0xdb, 0xb9, 0xb5, + 0xfc, 0xfd, 0x7c, 0x6e, 0x3d, 0xf9, 0x02, 0x9a, 0x82, 0xa4, 0x53, 0x95, 0x5d, 0xdb, 0xcd, 0xbf, + 0x93, 0x4b, 0x4a, 0x68, 0x06, 0x90, 0x53, 0x9a, 0x2f, 0xb0, 0xf2, 0x18, 0x9a, 0x86, 0x09, 0xa7, + 0x7c, 0x3d, 0xb7, 0x99, 0xdb, 0xcd, 0xad, 0x27, 0xe3, 0xe2, 0x20, 0x9b, 0xc5, 0xb5, 0xb7, 0x73, + 0xeb, 0xc9, 0x84, 0xd8, 0x78, 0xe7, 0xe1, 0xce, 0x76, 0xae, 0xb0, 0x9e, 0xec, 0x13, 0x8b, 0xf3, + 0x85, 0xfc, 0x6e, 0x3e, 0xbb, 0x99, 0xec, 0x5f, 0xfa, 0x13, 0xd0, 0x4f, 0x13, 0x82, 0xe0, 0xc9, + 0x37, 0x72, 0x85, 0xf5, 0x5c, 0xc9, 0x05, 0x75, 0x02, 0x46, 0x59, 0xf9, 0xfd, 0xdc, 0x56, 0x76, + 0x13, 0xe3, 0x1c, 0x87, 0x61, 0x56, 0x44, 0x0a, 0x62, 0x08, 0xc1, 0x18, 0x2b, 0x58, 0xcf, 0xbf, + 0x93, 0x2b, 0xed, 0xe4, 0x92, 0xf1, 0xa5, 0xff, 0x2b, 0xc1, 0xa8, 0x90, 0x4e, 0x08, 0xcd, 0xc3, + 0x19, 0x02, 0x21, 0x97, 0x2d, 0xad, 0x3d, 0x78, 0x3b, 0xf7, 0xae, 0x6b, 0xa2, 0x39, 0x98, 0x75, + 0x55, 0xef, 0xe4, 0x4a, 0xe5, 0x42, 0x76, 0x0b, 0x4f, 0x79, 0x16, 0x52, 0x62, 0xe5, 0xfd, 0x7c, + 0x69, 0x67, 0x97, 0xd6, 0xc6, 0xbc, 0x5d, 0x37, 0xb3, 0x56, 0x65, 0xdc, 0x5b, 0x59, 0xc8, 0xaf, + 0xbd, 0x4d, 0x2b, 0x13, 0x68, 0x01, 0xd2, 0x62, 0xe5, 0x7a, 0x7e, 0x67, 0x7b, 0x33, 0xfb, 0x2e, + 0xad, 0xef, 0x43, 0xb3, 0x30, 0x29, 0xd6, 0xe7, 0xb6, 0xb2, 0xf9, 0xcd, 0x64, 0xbf, 0xb7, 0x82, + 0x70, 0x36, 0x39, 0xb0, 0xf4, 0x73, 0x30, 0xc2, 0xab, 0x16, 0x6e, 0x48, 0x1b, 0x6d, 0xe5, 0x76, + 0x1f, 0x14, 0xd7, 0xcb, 0xb9, 0xcf, 0x3e, 0xcc, 0x6e, 0xee, 0x24, 0x5f, 0xc0, 0x24, 0x09, 0x15, + 0x3b, 0xbb, 0xd9, 0xd2, 0xee, 0x4e, 0xf9, 0x51, 0x7e, 0xf7, 0x41, 0x52, 0xc2, 0xc2, 0x23, 0xd4, + 0xae, 0x15, 0x0b, 0xbb, 0xd9, 0x7c, 0x61, 0x27, 0x19, 0x5b, 0x5a, 0x87, 0x01, 0x96, 0x79, 0x01, + 0x0f, 0xbe, 0x75, 0x3f, 0xbb, 0xfb, 0xee, 0xb6, 0x5b, 0xc0, 0xc6, 0x61, 0xd8, 0xaa, 0xd8, 0xd9, + 0xda, 0xa1, 0x6b, 0x66, 0x15, 0x14, 0x77, 0xb7, 0x93, 0xb1, 0xa5, 0x27, 0x30, 0x68, 0x65, 0x60, + 0x40, 0x29, 0x98, 0xc2, 0x7f, 0xfb, 0x08, 0xea, 0x0c, 0x20, 0xbb, 0xa6, 0x50, 0xdc, 0x2d, 0x97, + 0x72, 0xd9, 0xf5, 0x77, 0x93, 0x12, 0x5e, 0x71, 0xbb, 0x9c, 0x96, 0xc5, 0xb0, 0x3c, 0x72, 0x65, + 0x5b, 0xc5, 0x77, 0xb0, 0x94, 0x2e, 0x3d, 0x80, 0xa4, 0x3b, 0xd1, 0x01, 0x4a, 0xc3, 0x4c, 0xa1, + 0xb8, 0x9b, 0xbf, 0x9f, 0x5f, 0xcb, 0xee, 0xe6, 0x8b, 0x05, 0x82, 0x8a, 0x32, 0xf6, 0x05, 0x8c, + 0xc5, 0x53, 0x47, 0x48, 0x58, 0x6a, 0xc3, 0x30, 0xf7, 0x9d, 0x26, 0x5e, 0xd7, 0xed, 0xe2, 0x66, + 0x7e, 0xed, 0xdd, 0x00, 0xdc, 0x7c, 0xa5, 0xad, 0x62, 0x29, 0x98, 0xe2, 0xcb, 0x39, 0x25, 0x9b, + 0x85, 0x49, 0xbe, 0xc6, 0x56, 0xb3, 0xa5, 0x6d, 0x18, 0xb4, 0xbe, 0x9d, 0xc3, 0xdd, 0x8b, 0xa5, + 0x0d, 0xbf, 0x09, 0x27, 0x61, 0xdc, 0xae, 0xb1, 0x67, 0x9b, 0x86, 0x09, 0xbb, 0xd0, 0x99, 0x6a, + 0xe9, 0x37, 0x24, 0x40, 0xde, 0x8f, 0x53, 0x90, 0x0c, 0x0b, 0xc5, 0xd2, 0xc6, 0x56, 0x6e, 0x6b, + 0x35, 0x58, 0x49, 0xce, 0xc3, 0xbc, 0x4f, 0x1b, 0x4e, 0x19, 0x24, 0xb4, 0x08, 0x67, 0x7d, 0x9a, + 0x38, 0x1a, 0x11, 0xc3, 0x92, 0xe7, 0xd3, 0x82, 0x2e, 0x40, 0x1c, 0xab, 0x84, 0x1f, 0x0c, 0xac, + 0x8c, 0xf9, 0xf5, 0x64, 0x02, 0x0b, 0x38, 0xff, 0xa9, 0x06, 0x1e, 0x6d, 0xbb, 0x54, 0xfc, 0xa9, + 0xdc, 0xda, 0xae, 0x1f, 0x5f, 0x30, 0x5b, 0xf9, 0x5a, 0x9b, 0x37, 0x67, 0x60, 0x5a, 0xa8, 0xe0, + 0xf8, 0xf3, 0xd0, 0x7e, 0xb6, 0x6b, 0x09, 0x39, 0x6b, 0xc9, 0x04, 0xfd, 0xed, 0x42, 0xf1, 0x51, + 0x81, 0x5a, 0x51, 0xbe, 0x62, 0x27, 0xb7, 0x79, 0x3f, 0x29, 0xb9, 0x9b, 0x6f, 0x94, 0xb2, 0x05, + 0xbc, 0x90, 0xb1, 0xa5, 0x47, 0xf6, 0x33, 0x6b, 0x87, 0xe7, 0x8b, 0x70, 0xd6, 0x42, 0x11, 0xcc, + 0x71, 0x4f, 0x0b, 0x56, 0xc0, 0x38, 0xbe, 0x74, 0xe8, 0x7c, 0x8b, 0x20, 0x3c, 0xd0, 0x44, 0x2f, + 0xc2, 0x22, 0x6b, 0x5a, 0x2a, 0x6e, 0xe6, 0x82, 0x66, 0x98, 0x87, 0x33, 0xbe, 0xad, 0xd8, 0x7a, + 0x5e, 0x84, 0xf3, 0xbe, 0xd5, 0x82, 0xa5, 0x8a, 0x2d, 0x7d, 0xcf, 0x79, 0x6a, 0xea, 0x16, 0xac, + 0x4b, 0x20, 0xb3, 0x11, 0x3a, 0x0b, 0x97, 0x33, 0x53, 0x47, 0x01, 0x73, 0xa8, 0xea, 0x24, 0x64, + 0x0e, 0x67, 0x83, 0x04, 0x4d, 0x86, 0x85, 0x20, 0x58, 0xb6, 0xb0, 0x6d, 0xc3, 0xa0, 0xf5, 0xca, + 0x0f, 0x2b, 0x5f, 0x76, 0x7b, 0x3b, 0x40, 0xf9, 0xec, 0x1a, 0x5e, 0xf9, 0xec, 0x42, 0x4e, 0xb8, + 0x3e, 0x47, 0x1f, 0x9f, 0xf0, 0xef, 0x38, 0xb0, 0x2c, 0x92, 0xb2, 0xdc, 0xce, 0x76, 0xb1, 0xb0, + 0x93, 0x23, 0x72, 0xb3, 0x56, 0x5c, 0xcf, 0xd1, 0xc5, 0xf1, 0x54, 0xe5, 0xd7, 0xcb, 0xbb, 0xc5, + 0xb7, 0x73, 0x85, 0xa4, 0x84, 0x2e, 0xc0, 0x39, 0x4f, 0x35, 0xa9, 0x73, 0x1a, 0xc5, 0x96, 0x74, + 0x18, 0x15, 0x1e, 0x79, 0x60, 0x0e, 0x92, 0x02, 0x2c, 0x9a, 0xa4, 0x4b, 0xf6, 0xe1, 0xee, 0x83, + 0x62, 0x29, 0xff, 0xd3, 0xc4, 0xe4, 0x59, 0x53, 0xa7, 0x61, 0x46, 0x6c, 0x95, 0xdf, 0xda, 0xde, + 0xcc, 0xaf, 0xe5, 0x77, 0x93, 0x12, 0x3a, 0x07, 0x73, 0x62, 0x5d, 0x29, 0x77, 0xbf, 0x94, 0xdb, + 0x79, 0x60, 0xcf, 0xf9, 0x14, 0x26, 0x7d, 0xde, 0x80, 0x60, 0xa3, 0x49, 0x8a, 0xb7, 0xf1, 0x48, + 0x8e, 0x81, 0x7d, 0x94, 0x5b, 0x4d, 0xbe, 0x40, 0x0c, 0x90, 0x4f, 0x25, 0x59, 0x8d, 0xec, 0x46, + 0xae, 0x80, 0x27, 0xc6, 0xd6, 0xc1, 0xa7, 0x4d, 0x21, 0xcb, 0xd8, 0xdb, 0x00, 0xe4, 0x7d, 0x1b, + 0x42, 0x2c, 0x0e, 0x2e, 0x7d, 0xb8, 0xcb, 0xf6, 0x33, 0xd2, 0x69, 0x35, 0xbb, 0x93, 0x5f, 0xa3, + 0x3b, 0xbf, 0x4f, 0xed, 0x76, 0x71, 0x07, 0x4f, 0xe8, 0x5f, 0x59, 0x28, 0x16, 0xf0, 0x6c, 0x65, + 0x98, 0xf2, 0x7b, 0x3d, 0x80, 0x19, 0xcc, 0x21, 0xdc, 0xc9, 0x95, 0xb2, 0x01, 0xaa, 0x2d, 0xb4, + 0xb2, 0xc4, 0x2f, 0xbb, 0xbd, 0x6d, 0xa9, 0xb6, 0x69, 0xbf, 0xb4, 0x77, 0x62, 0xb5, 0x9c, 0x49, + 0x20, 0xfc, 0xf7, 0x93, 0x48, 0xc7, 0x28, 0x72, 0x4d, 0x6c, 0xd1, 0x5c, 0x80, 0xb4, 0xb7, 0x96, + 0x93, 0xd1, 0x3f, 0x76, 0x45, 0x5f, 0xdc, 0x0a, 0xfd, 0x12, 0x5c, 0xe6, 0xfb, 0x77, 0xd6, 0xea, + 0x25, 0xb8, 0xd4, 0xa9, 0xb1, 0xa0, 0xda, 0x57, 0xe1, 0x62, 0xa7, 0xb6, 0xbc, 0x7e, 0x3b, 0xc6, + 0xc2, 0xb7, 0xa9, 0xa5, 0xe4, 0x97, 0xe1, 0x42, 0x47, 0xa8, 0xb6, 0xa6, 0xef, 0xc1, 0x98, 0x18, + 0x12, 0xb7, 0x7c, 0xb3, 0x40, 0x1e, 0x33, 0xff, 0xda, 0x8f, 0xc1, 0xcc, 0xe7, 0xf3, 0xe7, 0xee, + 0xd7, 0x58, 0xae, 0x49, 0xf1, 0x40, 0x85, 0xa5, 0xdf, 0xe9, 0x13, 0xbc, 0x19, 0xf8, 0xb4, 0xb1, + 0xb6, 0x83, 0xfc, 0x3a, 0x5d, 0x5b, 0xbf, 0x61, 0x18, 0x9d, 0x31, 0xcb, 0x0b, 0x76, 0xd5, 0x17, + 0x4b, 0x1b, 0xb8, 0x3a, 0x4e, 0xc0, 0x79, 0x4f, 0x7b, 0x18, 0x1c, 0xd6, 0x80, 0x8e, 0xe0, 0xe6, + 0xe1, 0x8c, 0x4f, 0x1b, 0x36, 0xb2, 0x44, 0xa4, 0xdd, 0x5b, 0xcd, 0x61, 0x8f, 0x61, 0xec, 0x7e, + 0xb3, 0x30, 0xec, 0xf1, 0x95, 0x2f, 0x7f, 0x45, 0x82, 0x89, 0x2d, 0xfb, 0xdc, 0xb5, 0xa3, 0xea, + 0x4f, 0xeb, 0x15, 0x15, 0xbd, 0x0d, 0x03, 0x0f, 0x54, 0xa5, 0x61, 0xee, 0x7d, 0x1e, 0xcd, 0x78, + 0x6e, 0x1a, 0x72, 0xfb, 0x2d, 0xf3, 0x20, 0x1d, 0x50, 0x2e, 0x27, 0x0f, 0xbf, 0xf7, 0x9f, 0xbf, + 0x12, 0x03, 0x34, 0x98, 0xd9, 0x63, 0x23, 0x6c, 0x40, 0x5f, 0x49, 0x55, 0xaa, 0x07, 0x91, 0x87, + 0x1a, 0x23, 0x43, 0x0d, 0xa2, 0xfe, 0x8c, 0x4e, 0xfa, 0x17, 0x60, 0xf0, 0x1d, 0x96, 0xae, 0x3f, + 0x70, 0xac, 0xa0, 0x04, 0xf0, 0xf2, 0x04, 0x19, 0x6c, 0x18, 0x0d, 0xd9, 0x29, 0xff, 0xd1, 0x17, + 0x60, 0x78, 0x43, 0x25, 0xf1, 0x99, 0xd5, 0x83, 0xfc, 0x3a, 0xba, 0x14, 0x26, 0x50, 0x92, 0x5f, + 0x4f, 0x87, 0xca, 0x30, 0x2a, 0xcb, 0x87, 0x47, 0xa9, 0x61, 0x7a, 0xfb, 0xb2, 0x8c, 0xe1, 0x93, + 0xe9, 0x47, 0xd1, 0x70, 0x06, 0x97, 0x18, 0x99, 0x0f, 0xeb, 0xd5, 0x8f, 0xd0, 0xd7, 0x25, 0x98, + 0xb2, 0x11, 0x90, 0x94, 0x86, 0x1b, 0x0d, 0xed, 0xb1, 0xd2, 0x40, 0x2f, 0x85, 0x99, 0x82, 0xa5, + 0x93, 0x0f, 0x89, 0x67, 0xc5, 0x0f, 0xcf, 0x3c, 0x9a, 0xcb, 0xd4, 0xc8, 0x94, 0x0c, 0x16, 0xb9, + 0xc6, 0xc9, 0x7c, 0x48, 0xfe, 0xf9, 0x08, 0xfd, 0x65, 0x09, 0x86, 0xa9, 0xc4, 0xe2, 0x21, 0x0c, + 0xf4, 0x72, 0xf8, 0x6c, 0xb3, 0x2c, 0x46, 0x94, 0x5e, 0x89, 0xd2, 0x85, 0x6e, 0xe0, 0xf2, 0x15, + 0x3f, 0xa8, 0x93, 0xf2, 0x18, 0xc3, 0x58, 0x36, 0x48, 0xf3, 0x37, 0xa4, 0x25, 0x0c, 0x70, 0x24, + 0x6f, 0xe0, 0x21, 0x68, 0xc6, 0xfa, 0x10, 0x08, 0xdd, 0x29, 0xf6, 0x43, 0x20, 0xf4, 0x64, 0xcd, + 0x97, 0x2f, 0xfb, 0x21, 0x44, 0x28, 0x69, 0x21, 0xac, 0x1b, 0x34, 0xa3, 0x3e, 0xfa, 0x05, 0x09, + 0xc0, 0xc9, 0xa0, 0xdf, 0x1d, 0x9e, 0x27, 0xdb, 0x7e, 0xc8, 0xd5, 0x3d, 0x7f, 0x78, 0x94, 0x1a, + 0x01, 0x20, 0x80, 0x9e, 0xe9, 0x75, 0x53, 0xa5, 0xd2, 0x2e, 0xf7, 0x53, 0x44, 0x98, 0x57, 0x5f, + 0x96, 0x60, 0x6c, 0x5d, 0x55, 0x2a, 0x66, 0xfd, 0xa9, 0x05, 0xe7, 0x64, 0x25, 0x7e, 0xc5, 0x17, + 0xc3, 0xd9, 0xf4, 0x2c, 0x27, 0xf2, 0x99, 0x72, 0xd5, 0x86, 0x60, 0x81, 0x2a, 0xfd, 0xe0, 0x41, + 0xe9, 0x02, 0xa8, 0x3f, 0x2d, 0xc1, 0xe0, 0xa6, 0x56, 0x79, 0xff, 0x14, 0xe0, 0x5c, 0xf3, 0x85, + 0x33, 0x93, 0x9e, 0x10, 0xe0, 0x34, 0xb4, 0xca, 0xfb, 0x18, 0xc8, 0x2f, 0x4a, 0x00, 0x0f, 0x9b, + 0x8d, 0xd3, 0x81, 0xb2, 0xec, 0x0b, 0x25, 0x95, 0x9e, 0x14, 0xa0, 0xb4, 0x9b, 0x16, 0x18, 0x1d, + 0x60, 0x5d, 0x6d, 0xa8, 0x11, 0x57, 0x29, 0xc8, 0xb6, 0xbf, 0x78, 0x78, 0x94, 0x1a, 0x85, 0x61, + 0x32, 0x7b, 0x95, 0x0c, 0x4b, 0x0d, 0xe4, 0x92, 0x60, 0x20, 0xbf, 0xc4, 0xd2, 0x9c, 0x5a, 0xff, + 0xef, 0xc9, 0xf5, 0x90, 0xff, 0xcd, 0x09, 0xd3, 0x9d, 0xcb, 0xe1, 0x9a, 0x1b, 0xf2, 0x92, 0x9f, + 0x3e, 0x4f, 0x23, 0x81, 0x15, 0xd6, 0xff, 0x9c, 0xf2, 0x37, 0xf0, 0x7e, 0xce, 0x7d, 0x08, 0x71, + 0xca, 0xd0, 0x5e, 0x3b, 0x3c, 0x4a, 0x21, 0xfb, 0xae, 0x60, 0x59, 0x69, 0xb5, 0x1c, 0x84, 0x67, + 0x51, 0x3a, 0xc3, 0x3d, 0x01, 0x77, 0x01, 0xfd, 0x73, 0x12, 0x40, 0x51, 0xaf, 0x9d, 0x36, 0x40, + 0x6c, 0xad, 0x81, 0xdc, 0xfb, 0x3b, 0xc0, 0xa6, 0x10, 0xca, 0x68, 0x7a, 0xcd, 0x05, 0xe8, 0x6b, + 0x92, 0xfd, 0xac, 0xf1, 0xb4, 0x41, 0xdd, 0x38, 0x3c, 0x4a, 0x8d, 0xd9, 0x4f, 0x0a, 0x1c, 0x60, + 0x29, 0x34, 0x93, 0xb1, 0xf2, 0x5f, 0x88, 0xe0, 0xbe, 0x24, 0xc1, 0x18, 0xdb, 0x8b, 0xad, 0x64, + 0xe0, 0x61, 0x65, 0x3c, 0xd4, 0x6e, 0xcd, 0x06, 0x0d, 0x25, 0x6a, 0x2d, 0x06, 0xe0, 0xef, 0x48, + 0x30, 0xe1, 0x49, 0x8c, 0x8d, 0xba, 0x7e, 0x84, 0x18, 0x94, 0x4b, 0x3b, 0x1a, 0xd0, 0x50, 0xf6, + 0x81, 0x21, 0xc5, 0xf6, 0xe1, 0xcf, 0x48, 0x30, 0xc2, 0x18, 0x48, 0x73, 0x4f, 0x87, 0x65, 0xdf, + 0xd5, 0xd0, 0xce, 0x4e, 0x80, 0x67, 0x80, 0x04, 0xeb, 0x49, 0x5f, 0xa2, 0x7c, 0x53, 0x82, 0x71, + 0x2a, 0x0c, 0x0e, 0xa0, 0x5b, 0xe1, 0x19, 0xc7, 0x27, 0xaf, 0x8e, 0x02, 0x30, 0x94, 0x7d, 0x27, + 0x08, 0x31, 0xcb, 0xbe, 0x21, 0xc1, 0x5c, 0x49, 0x35, 0xd4, 0x66, 0x95, 0xcb, 0x67, 0x4d, 0x75, + 0x79, 0x2b, 0x0a, 0x07, 0x83, 0x8c, 0xec, 0x5b, 0xbe, 0x68, 0x96, 0xe4, 0x8b, 0x1e, 0x34, 0x78, + 0x0b, 0xc4, 0x38, 0x9e, 0x72, 0x10, 0x5c, 0x8b, 0x4a, 0xb3, 0x6b, 0x9f, 0xe8, 0xa2, 0x92, 0x21, + 0x43, 0x2d, 0x2a, 0xcd, 0x90, 0x2d, 0x2e, 0x2a, 0x05, 0x14, 0x61, 0x51, 0xf9, 0xf4, 0xdc, 0x51, + 0x00, 0x86, 0x5a, 0x54, 0x82, 0x50, 0x5c, 0x54, 0x2e, 0x65, 0x37, 0xdb, 0x2b, 0xb4, 0xaa, 0xfa, + 0x7c, 0x16, 0x95, 0xa0, 0x09, 0x5a, 0x54, 0xce, 0xd4, 0x59, 0x99, 0xb9, 0x4f, 0xd4, 0xd4, 0x59, + 0xd9, 0xad, 0xc3, 0x98, 0x3a, 0x96, 0x28, 0xdb, 0x65, 0xea, 0x2c, 0x58, 0x11, 0x4c, 0x9d, 0x98, + 0x31, 0x3c, 0x1a, 0xd0, 0x50, 0xa6, 0x8e, 0x21, 0xc5, 0x0c, 0xfc, 0xb3, 0x92, 0x7d, 0x72, 0xdc, + 0x7a, 0xa2, 0x84, 0xe7, 0xde, 0xb5, 0x08, 0x09, 0xbd, 0x8d, 0x6e, 0x87, 0x0c, 0x02, 0x6a, 0x1f, + 0x4f, 0xff, 0xf7, 0x24, 0x98, 0xdb, 0x51, 0x9b, 0xd5, 0x80, 0xe4, 0xd6, 0xe8, 0x6e, 0xf7, 0x9b, + 0xe3, 0x4e, 0x59, 0xb1, 0x03, 0x25, 0xf1, 0xb6, 0x2f, 0xdb, 0xce, 0xcb, 0x67, 0x05, 0x0f, 0x12, + 0x4b, 0xa0, 0xa1, 0x9a, 0xad, 0x67, 0x4d, 0x3c, 0xf4, 0x01, 0xe6, 0xdf, 0x57, 0x24, 0x40, 0x3b, + 0xaa, 0x99, 0x6f, 0xd6, 0xcd, 0xba, 0xd2, 0xb0, 0xa6, 0x46, 0x5d, 0xff, 0x9f, 0x14, 0x57, 0x82, + 0xef, 0x40, 0x60, 0x37, 0x7d, 0x81, 0x2d, 0xc8, 0x67, 0x5c, 0xc0, 0xcc, 0x3a, 0x45, 0xd0, 0x7a, + 0x86, 0x51, 0xfd, 0x2d, 0x09, 0xe6, 0x36, 0x1c, 0x4e, 0x78, 0x72, 0x6f, 0x07, 0x85, 0x1c, 0x5e, + 0x0b, 0x0b, 0xdb, 0x3d, 0x22, 0x61, 0xe0, 0x28, 0x0c, 0xb7, 0xc8, 0x2f, 0x67, 0x8d, 0x17, 0xd1, + 0x42, 0x86, 0x94, 0xd5, 0x55, 0x23, 0x63, 0x65, 0x39, 0x37, 0x32, 0x15, 0xbb, 0x3b, 0xfa, 0x03, + 0x09, 0x16, 0xe8, 0x51, 0x31, 0x10, 0xed, 0xdd, 0x5e, 0x51, 0xd1, 0x71, 0x8f, 0x41, 0xd5, 0x1d, + 0xe6, 0x7b, 0x51, 0xaa, 0x1c, 0xfe, 0x5f, 0x90, 0xbb, 0x90, 0x85, 0x17, 0xe1, 0x0f, 0x25, 0x58, + 0xa0, 0x4a, 0x7d, 0xf2, 0x94, 0xd1, 0x71, 0x8f, 0x41, 0xd9, 0x5b, 0x01, 0x94, 0x5d, 0x49, 0x5f, + 0xe8, 0x4c, 0x19, 0x91, 0x38, 0x4c, 0xde, 0xb7, 0x24, 0x58, 0xa0, 0xa7, 0xa8, 0x40, 0xf2, 0xde, + 0xe8, 0x15, 0x5e, 0x87, 0x3d, 0xe3, 0xee, 0xe1, 0x51, 0x6a, 0x1c, 0x46, 0x19, 0x70, 0xee, 0xbc, + 0x75, 0x71, 0x29, 0x0c, 0x72, 0xac, 0xb0, 0x53, 0x9c, 0x6a, 0x38, 0x09, 0xaa, 0x83, 0x74, 0xe2, + 0xe5, 0xb0, 0x44, 0xd8, 0x43, 0x11, 0x97, 0xdd, 0x47, 0x19, 0xce, 0xa0, 0x59, 0x3f, 0x84, 0x4a, + 0x4d, 0x45, 0xbf, 0x21, 0xc1, 0xac, 0xa8, 0x05, 0x0e, 0xb0, 0xdb, 0x91, 0x01, 0x30, 0xb9, 0xef, + 0x01, 0xf9, 0xcd, 0x00, 0xb1, 0x38, 0x2b, 0x07, 0x41, 0xc7, 0xa2, 0xf0, 0x9b, 0x12, 0xcc, 0x8a, + 0x92, 0x7e, 0x1c, 0xf4, 0x4c, 0xb6, 0x7b, 0x40, 0xff, 0x7a, 0x00, 0xfa, 0xf3, 0xe9, 0xb3, 0x01, + 0xe8, 0x6d, 0x69, 0xfe, 0x86, 0x04, 0xb3, 0xa2, 0x34, 0x3b, 0x24, 0xbc, 0x12, 0x19, 0x49, 0x07, + 0xf9, 0xbd, 0x1d, 0x24, 0xbf, 0x0b, 0x4b, 0x1d, 0x41, 0x62, 0x84, 0x29, 0x4e, 0x70, 0xc5, 0x2c, + 0xd4, 0x41, 0xc2, 0xfb, 0x6a, 0x58, 0xe8, 0xc2, 0x70, 0x44, 0x0c, 0x7c, 0x04, 0x78, 0x1e, 0xcd, + 0xf9, 0x41, 0x6c, 0xd0, 0xbe, 0xe8, 0xb7, 0x25, 0x98, 0x13, 0x85, 0x58, 0x04, 0x79, 0xa7, 0x27, + 0x30, 0x4c, 0x98, 0x7b, 0xa4, 0xe4, 0xb5, 0x00, 0x91, 0x58, 0x94, 0x3b, 0x91, 0x82, 0x25, 0xe2, + 0x77, 0x25, 0x98, 0x13, 0x85, 0xfa, 0x24, 0xa8, 0x61, 0xc2, 0xdd, 0x23, 0x35, 0x6f, 0x06, 0x50, + 0x73, 0x31, 0xbd, 0xd8, 0x81, 0x1a, 0x5b, 0xc8, 0x7f, 0x4d, 0x82, 0x39, 0x51, 0xc8, 0x45, 0x92, + 0x6e, 0xf7, 0x84, 0xaa, 0x83, 0xb0, 0xdf, 0x09, 0x12, 0x76, 0x79, 0xa9, 0x2b, 0x60, 0xf4, 0x79, + 0x80, 0x0d, 0xd5, 0x2c, 0xea, 0x35, 0x72, 0xa5, 0x71, 0x31, 0x44, 0x46, 0xd5, 0xfc, 0x7a, 0xfa, + 0x42, 0x88, 0x66, 0xf2, 0xa2, 0x4f, 0x9c, 0x67, 0x04, 0x81, 0x13, 0xe7, 0x41, 0x5f, 0xa3, 0xbb, + 0x04, 0x99, 0x9c, 0x7e, 0xd6, 0xc1, 0xae, 0x33, 0xc2, 0x64, 0xb8, 0xa5, 0x1d, 0xc2, 0x41, 0x59, + 0xf1, 0x81, 0xb2, 0x80, 0xce, 0x5a, 0x57, 0x19, 0x04, 0x11, 0xfd, 0xd0, 0x24, 0xf3, 0x21, 0xfd, + 0xf7, 0x23, 0xf4, 0x4b, 0x12, 0x8c, 0x3a, 0xe1, 0xef, 0xa2, 0x5e, 0x3b, 0x51, 0xe6, 0xdc, 0xa0, + 0xbe, 0x3a, 0x46, 0xe4, 0x08, 0xd8, 0x5c, 0x7a, 0x86, 0x8b, 0x82, 0xb9, 0x22, 0xdf, 0x18, 0x4f, + 0xe9, 0x07, 0x8a, 0x47, 0x77, 0xe3, 0x99, 0xa0, 0x8b, 0xc7, 0x7f, 0xea, 0x1a, 0x64, 0x22, 0x97, + 0xc3, 0xe7, 0x2c, 0x26, 0x1f, 0x31, 0x62, 0x3c, 0x13, 0x30, 0x8e, 0xf1, 0xec, 0x93, 0x62, 0xf1, + 0x40, 0x48, 0x50, 0xd1, 0x0a, 0x23, 0x43, 0xbf, 0x4c, 0xfd, 0x15, 0x09, 0x46, 0xf8, 0xd4, 0xd4, + 0xdd, 0x37, 0x14, 0x9f, 0x44, 0xd6, 0x1d, 0x37, 0x14, 0x04, 0x49, 0x0e, 0x0f, 0xc7, 0x26, 0xd9, + 0x62, 0x13, 0xfd, 0x70, 0xe3, 0x23, 0x0b, 0x19, 0x66, 0xd3, 0x5f, 0xb3, 0x43, 0x10, 0x0e, 0xb2, + 0x5b, 0xe1, 0xa2, 0x92, 0xa1, 0xc1, 0x65, 0x3b, 0x80, 0xc3, 0x46, 0xcb, 0x17, 0x5c, 0xe6, 0x43, + 0xf6, 0x51, 0x06, 0x31, 0x5a, 0xdf, 0x94, 0x60, 0xdc, 0x95, 0x1b, 0xbb, 0x3b, 0x4c, 0xff, 0x64, + 0xda, 0x81, 0x30, 0xef, 0x1d, 0x1e, 0xa5, 0x26, 0x61, 0x82, 0x83, 0xe9, 0xb2, 0x55, 0x5d, 0x70, + 0xa2, 0xef, 0x4a, 0x90, 0xa4, 0x57, 0x7f, 0xf6, 0x9c, 0x46, 0x77, 0x94, 0xfe, 0x79, 0xaf, 0xd3, + 0xb7, 0x23, 0xf7, 0x63, 0x77, 0x79, 0x77, 0x83, 0x45, 0x13, 0x9f, 0x58, 0xfc, 0x89, 0xe0, 0xee, + 0x20, 0x3f, 0x96, 0x60, 0x8c, 0x0e, 0x69, 0x67, 0x67, 0xbe, 0x19, 0x29, 0x23, 0xac, 0x45, 0xc1, + 0xab, 0x11, 0x7b, 0x31, 0xfc, 0xcb, 0x01, 0xa1, 0xee, 0x19, 0x79, 0xc2, 0x09, 0x75, 0x73, 0x78, + 0x7f, 0xd9, 0xc9, 0xa1, 0x49, 0xf6, 0x88, 0xab, 0x21, 0xa7, 0xcd, 0xaf, 0xa7, 0xc3, 0xe6, 0xf4, + 0x25, 0x11, 0x33, 0x24, 0x62, 0x42, 0xb1, 0x3c, 0xc5, 0x95, 0x44, 0x63, 0x62, 0x08, 0x1e, 0xfd, + 0x45, 0x09, 0x46, 0x99, 0x0b, 0xc4, 0xb2, 0x51, 0x87, 0x65, 0xa0, 0x90, 0x88, 0x3b, 0x3c, 0xbc, + 0xcb, 0x6c, 0x87, 0x65, 0xf0, 0x1c, 0xed, 0x1a, 0x93, 0x87, 0x6c, 0x6c, 0x98, 0x57, 0x7f, 0x45, + 0x82, 0x51, 0xe6, 0xce, 0x44, 0x44, 0x26, 0xa4, 0xfa, 0x0e, 0x8f, 0xec, 0x06, 0xd1, 0x29, 0x11, + 0x99, 0xcd, 0xb9, 0xc9, 0xb4, 0x8b, 0x73, 0x18, 0xe2, 0x5f, 0x97, 0x60, 0xc2, 0xd9, 0xd7, 0x2c, + 0x98, 0xa7, 0xb1, 0xa8, 0x9f, 0xe9, 0x84, 0xed, 0x5c, 0x3a, 0xed, 0xba, 0x58, 0x71, 0xed, 0x77, + 0x18, 0x67, 0xe9, 0x53, 0x89, 0x53, 0xdc, 0x07, 0xbf, 0x29, 0x41, 0x7a, 0x43, 0x35, 0x59, 0xf6, + 0x0c, 0xfe, 0xcd, 0x16, 0xd1, 0x96, 0xae, 0x1b, 0x9f, 0x98, 0x76, 0x23, 0x1d, 0x29, 0xcd, 0x85, + 0x7c, 0x29, 0x40, 0x97, 0xc7, 0xd0, 0x48, 0x86, 0x7c, 0x25, 0xe4, 0x3c, 0x1c, 0x99, 0xc6, 0xc7, + 0x1a, 0x6f, 0x66, 0xe7, 0xa0, 0x0d, 0x7b, 0x25, 0x5a, 0xb6, 0x4d, 0xb2, 0x69, 0xe3, 0x63, 0xc0, + 0x34, 0x4c, 0x5a, 0x68, 0xdc, 0xd6, 0x91, 0x9c, 0xcc, 0x2d, 0x56, 0x8a, 0x9b, 0xf7, 0x7f, 0x95, + 0x60, 0x4a, 0xb0, 0x89, 0x96, 0x75, 0x7f, 0xa3, 0x87, 0x9c, 0x96, 0x96, 0x12, 0xdd, 0xe9, 0xa9, + 0x2f, 0xb3, 0x92, 0x0f, 0x0f, 0x8f, 0x52, 0x8b, 0xbe, 0xb4, 0xa0, 0x21, 0x4b, 0xc6, 0x28, 0x59, + 0x2f, 0xc9, 0x97, 0x38, 0x09, 0x71, 0xbe, 0x33, 0xf3, 0x35, 0xfe, 0x5f, 0x97, 0x20, 0x99, 0xad, + 0x56, 0xc5, 0xac, 0xd9, 0x37, 0x22, 0x01, 0xcd, 0x56, 0xab, 0x1d, 0xb7, 0xd8, 0x34, 0x4c, 0xb9, + 0x50, 0x8b, 0x12, 0x8d, 0xdd, 0x15, 0x51, 0xa2, 0x39, 0x77, 0xe5, 0x63, 0x09, 0x26, 0xa9, 0xf7, + 0x21, 0x42, 0x7c, 0x25, 0x12, 0x44, 0x3a, 0x42, 0x20, 0xca, 0x7c, 0x08, 0x94, 0xe4, 0xb0, 0xe5, + 0x87, 0x52, 0xf4, 0x5b, 0x7e, 0x4d, 0x82, 0x49, 0xea, 0x86, 0x1c, 0x07, 0x2f, 0x1d, 0x21, 0x10, + 0xef, 0xc6, 0xe1, 0x51, 0x6a, 0x0e, 0xa6, 0x5d, 0x78, 0xa9, 0xf3, 0x62, 0x03, 0x26, 0x87, 0xad, + 0xce, 0x80, 0xd1, 0x1f, 0x92, 0x38, 0x36, 0x27, 0xe6, 0x54, 0x07, 0x5f, 0x8b, 0x9c, 0xfb, 0xd7, + 0x12, 0xf1, 0xd7, 0x7b, 0xe8, 0xc9, 0x04, 0xfc, 0xb3, 0x87, 0x47, 0xa9, 0x05, 0x98, 0xb0, 0x4d, + 0x87, 0xd6, 0x50, 0x7d, 0xc5, 0xfb, 0xaa, 0xfc, 0x62, 0x80, 0x78, 0x13, 0xd5, 0xe5, 0x85, 0xfb, + 0xab, 0x12, 0x8c, 0x39, 0xc2, 0x4d, 0x12, 0x6e, 0x2f, 0x47, 0x00, 0xd8, 0x49, 0xb0, 0xf1, 0x19, + 0x37, 0x05, 0x48, 0x40, 0x2b, 0x0a, 0xcc, 0x19, 0x79, 0xca, 0xc5, 0x7f, 0x82, 0x8f, 0xed, 0xca, + 0x13, 0x82, 0x90, 0x10, 0x68, 0x2f, 0x47, 0x49, 0x45, 0xdd, 0x59, 0x40, 0xde, 0x3a, 0x3c, 0x4a, + 0x9d, 0x71, 0x8c, 0x05, 0x41, 0xe7, 0x12, 0x8f, 0xf9, 0xa5, 0x39, 0x3f, 0x78, 0x99, 0x0f, 0x9b, + 0xca, 0xbe, 0xfa, 0x11, 0xfa, 0x23, 0x5b, 0x32, 0xb8, 0xa7, 0x22, 0x21, 0x24, 0x23, 0x28, 0x75, + 0x5c, 0x77, 0xc9, 0x08, 0x4c, 0x94, 0x27, 0x3f, 0x3a, 0x3c, 0x4a, 0xcd, 0x7b, 0x5f, 0x90, 0xb8, + 0x05, 0xe3, 0x86, 0xfc, 0x52, 0x80, 0x60, 0x08, 0x4f, 0x4c, 0x38, 0xf9, 0xf8, 0x4d, 0x09, 0xc6, + 0xb9, 0x69, 0xc9, 0xfe, 0x78, 0x3d, 0x02, 0xce, 0x30, 0xf7, 0x89, 0x5c, 0x73, 0x22, 0xe2, 0x21, + 0x08, 0x59, 0x42, 0x57, 0xc2, 0x10, 0x42, 0x36, 0xd2, 0xdf, 0x93, 0x60, 0x9a, 0x3a, 0x91, 0xae, + 0xb7, 0xf5, 0xe8, 0xd5, 0x88, 0x09, 0x19, 0x59, 0xc4, 0x2d, 0x12, 0x41, 0xbb, 0xa2, 0xce, 0x62, + 0x82, 0xa8, 0x12, 0xb8, 0x28, 0xba, 0x26, 0x5f, 0x0e, 0xa0, 0x48, 0xab, 0x57, 0x2b, 0x3c, 0x55, + 0x78, 0x59, 0x7e, 0xcb, 0xbe, 0x4a, 0xe5, 0xe9, 0x79, 0x39, 0x02, 0x30, 0x16, 0x6f, 0x8b, 0x44, + 0xcb, 0xc3, 0x90, 0xb4, 0x5c, 0x4f, 0x87, 0x5e, 0x1d, 0x4c, 0xcc, 0xef, 0x4b, 0x30, 0xed, 0xb8, + 0xb7, 0x3c, 0x41, 0xa7, 0x29, 0x69, 0x4a, 0x48, 0x62, 0x5e, 0x4f, 0xdf, 0x0c, 0x4b, 0x8c, 0xdb, + 0x1f, 0xc6, 0x84, 0x95, 0x7e, 0x34, 0x08, 0x13, 0x1d, 0xe8, 0xff, 0x6e, 0x87, 0x80, 0xb9, 0x89, + 0xb9, 0xac, 0xd2, 0x37, 0xc2, 0x27, 0xcb, 0x66, 0x72, 0x18, 0x21, 0xbd, 0xb6, 0xdc, 0x08, 0x49, + 0xe0, 0x7a, 0xfa, 0x5e, 0x28, 0x02, 0xc5, 0x1c, 0xb5, 0x54, 0xe1, 0x68, 0x46, 0x6e, 0x4c, 0xeb, + 0xff, 0x94, 0x20, 0x5d, 0x52, 0x6b, 0x6a, 0x53, 0xd5, 0x99, 0x09, 0x11, 0xb2, 0x9c, 0x46, 0x5c, + 0xc9, 0xae, 0x67, 0x05, 0x7e, 0x70, 0xd9, 0x0c, 0x49, 0xe9, 0x66, 0x7a, 0x23, 0xf4, 0x52, 0x3a, + 0xd4, 0x65, 0xca, 0xf4, 0x61, 0x1c, 0x4d, 0xc8, 0x4a, 0x93, 0xb4, 0x62, 0x8a, 0xff, 0xa3, 0x04, + 0x93, 0x82, 0xcb, 0x43, 0x0e, 0x2e, 0x06, 0x7a, 0x3d, 0x52, 0x1a, 0x4a, 0x61, 0x6b, 0x7b, 0xa3, + 0x97, 0xae, 0x6c, 0x6f, 0xdb, 0x39, 0x3c, 0x4a, 0x9d, 0x73, 0xfc, 0x08, 0x72, 0x46, 0xf2, 0xdf, + 0x14, 0xe4, 0x8b, 0x01, 0x5c, 0x60, 0xe7, 0x2a, 0x6e, 0x5f, 0xfb, 0x96, 0x64, 0x7f, 0x57, 0x18, + 0xe1, 0xe0, 0x27, 0x26, 0x6c, 0x8c, 0x78, 0xf0, 0x5b, 0x3d, 0x3c, 0x4a, 0x4d, 0xf9, 0xd1, 0x41, + 0xc0, 0xbf, 0x88, 0xe4, 0xce, 0xe0, 0xc9, 0x5e, 0xf6, 0xeb, 0x12, 0x20, 0x21, 0x8c, 0x42, 0x3f, + 0x92, 0x8f, 0x94, 0x4a, 0x8d, 0xed, 0x62, 0xd1, 0xc0, 0x67, 0xc5, 0x73, 0x22, 0x05, 0xef, 0x04, + 0x55, 0x64, 0x79, 0xbe, 0x23, 0x7a, 0xcc, 0xf2, 0xef, 0x48, 0x80, 0x84, 0x40, 0x4b, 0x0f, 0xd8, + 0x99, 0xb5, 0x88, 0x86, 0xfd, 0x7e, 0x67, 0xec, 0x97, 0xd3, 0x21, 0x38, 0xcf, 0x36, 0xdd, 0x19, + 0x4f, 0x18, 0x86, 0x12, 0x71, 0xba, 0x92, 0x53, 0xea, 0x4c, 0xc0, 0x2b, 0xe9, 0xe5, 0xee, 0x04, + 0xb8, 0xf7, 0x26, 0x4c, 0x4c, 0xe9, 0x87, 0x97, 0x18, 0x71, 0x3f, 0xfa, 0x16, 0x0d, 0xe8, 0x04, + 0x25, 0xf3, 0x0c, 0x0a, 0x98, 0xdc, 0xee, 0x21, 0x03, 0x21, 0x89, 0x9a, 0xe4, 0xc8, 0xe9, 0xf2, + 0x8c, 0x48, 0x83, 0x3b, 0x76, 0x42, 0x9e, 0xf8, 0x58, 0x94, 0x30, 0xf0, 0x62, 0x08, 0xe5, 0x30, + 0x06, 0x67, 0xbc, 0x86, 0xd6, 0x8a, 0xa3, 0xdc, 0xeb, 0x35, 0x9f, 0x9f, 0x65, 0x74, 0xdf, 0xea, + 0x7d, 0x00, 0x66, 0x7a, 0x1f, 0x87, 0xa1, 0xf3, 0x4d, 0xf9, 0xb5, 0x2e, 0x2b, 0x66, 0x25, 0xbf, + 0xf1, 0x0d, 0xaf, 0x7c, 0x57, 0x82, 0x69, 0xe7, 0x04, 0xca, 0xa7, 0x55, 0x7d, 0x35, 0x3a, 0xfe, + 0x4e, 0xe7, 0xd1, 0x9f, 0x39, 0x3c, 0x4a, 0x9d, 0x85, 0xb4, 0x2f, 0x31, 0x8e, 0xfc, 0xbd, 0x2a, + 0xdf, 0x88, 0x4a, 0x0d, 0xa6, 0xe2, 0x7b, 0x12, 0xa4, 0x84, 0x20, 0x0c, 0x4f, 0xc8, 0x6b, 0xd1, + 0x09, 0xe9, 0x12, 0x8e, 0x51, 0x43, 0xd1, 0x72, 0x2f, 0xfd, 0x46, 0xe4, 0x95, 0x11, 0x42, 0x35, + 0xbf, 0x27, 0x41, 0x4a, 0x38, 0x85, 0x1f, 0x93, 0xaa, 0x2e, 0x67, 0xf2, 0x0a, 0x39, 0xfc, 0xcd, + 0xf9, 0x52, 0xc5, 0xdd, 0x3b, 0x7d, 0x66, 0xe9, 0x18, 0x64, 0xa1, 0x7f, 0x64, 0xdf, 0x48, 0xd9, + 0x9f, 0x93, 0x86, 0xb8, 0x91, 0xf2, 0xcf, 0xf0, 0xd4, 0xdd, 0x82, 0x04, 0x24, 0x3f, 0x93, 0x5f, + 0xa5, 0x37, 0x52, 0xe4, 0xf9, 0xa2, 0xcb, 0x13, 0x48, 0xcb, 0xd3, 0xec, 0x0d, 0xa3, 0xd7, 0x6d, + 0xf9, 0x26, 0xcb, 0xcf, 0xe2, 0xf8, 0x2c, 0x2f, 0x85, 0x46, 0x10, 0xf6, 0xc5, 0x36, 0x35, 0xd3, + 0xaf, 0x07, 0x03, 0x5c, 0x40, 0xf6, 0xeb, 0x4f, 0x8b, 0xab, 0x82, 0x93, 0xf2, 0x37, 0x25, 0x18, + 0x77, 0x3e, 0x72, 0xa3, 0x7b, 0x4a, 0x26, 0xf4, 0xcc, 0xcc, 0x3d, 0x89, 0x00, 0x95, 0x7d, 0x3e, + 0xc3, 0x41, 0x15, 0xdf, 0x67, 0xf9, 0x63, 0xc5, 0xec, 0xfc, 0xbb, 0x12, 0x8c, 0x3b, 0xcf, 0x8b, + 0xa3, 0x22, 0x65, 0xce, 0x48, 0x04, 0xa4, 0x6f, 0x76, 0x40, 0x7a, 0x3e, 0xdd, 0x91, 0xab, 0x18, + 0xee, 0xb7, 0x25, 0x98, 0x14, 0x3f, 0xef, 0xa3, 0x90, 0x4f, 0x4b, 0x06, 0xf2, 0x1d, 0xe0, 0xe2, + 0x33, 0x7e, 0x07, 0xb8, 0x6e, 0x77, 0xe3, 0xdb, 0x24, 0xe8, 0xfb, 0x43, 0x02, 0x5d, 0x74, 0x2e, + 0xfe, 0x58, 0x82, 0x59, 0x61, 0x97, 0xe6, 0xec, 0x46, 0xd8, 0x54, 0xbf, 0x27, 0x6d, 0x3e, 0xde, + 0x3b, 0x3c, 0x4a, 0xbd, 0x08, 0xb3, 0x96, 0xa5, 0x74, 0x69, 0x69, 0xf8, 0xb0, 0x5f, 0x90, 0x9d, + 0xf9, 0x77, 0x4e, 0x72, 0x14, 0xd1, 0xdc, 0xac, 0x44, 0x25, 0x38, 0xda, 0xb2, 0x3d, 0x8e, 0x44, + 0xd7, 0x4d, 0xb4, 0xd2, 0x91, 0x2e, 0x7f, 0xf3, 0xf4, 0x07, 0x12, 0xcc, 0x08, 0x67, 0xa8, 0xe7, + 0x63, 0xa5, 0x94, 0xc3, 0xa3, 0xd4, 0x45, 0x48, 0xf9, 0x90, 0xe6, 0x7b, 0xa4, 0x5f, 0x91, 0xaf, + 0x47, 0xa2, 0x0d, 0xaf, 0xda, 0x7f, 0x92, 0x60, 0x46, 0x38, 0x61, 0x39, 0x94, 0xdd, 0x8a, 0xba, + 0x6e, 0xd1, 0x8d, 0xdb, 0x93, 0x68, 0x04, 0xde, 0x4e, 0xf7, 0xb0, 0x78, 0x56, 0x40, 0xc6, 0x73, + 0x0c, 0x73, 0x28, 0x3d, 0x65, 0x09, 0xd5, 0xa3, 0x51, 0xb9, 0x96, 0xbe, 0x1b, 0x9d, 0x4a, 0xb7, + 0xf1, 0xa4, 0x21, 0xa8, 0x1f, 0x6d, 0x8a, 0x45, 0x9b, 0xfb, 0xa5, 0x18, 0x9c, 0xf5, 0x9e, 0x8c, + 0x38, 0xc3, 0xbb, 0x1a, 0x29, 0x6a, 0x70, 0xc2, 0xd6, 0xd7, 0x3c, 0x3c, 0x4a, 0x65, 0x60, 0x5e, + 0xf4, 0x53, 0xdd, 0xb6, 0x4a, 0xfc, 0xdf, 0x3d, 0x28, 0x6f, 0xee, 0xc8, 0xb7, 0x2c, 0xde, 0x58, + 0xc4, 0xbb, 0x13, 0x84, 0x06, 0xdb, 0xe4, 0xff, 0x27, 0x89, 0xff, 0x31, 0x86, 0x68, 0x98, 0x6f, + 0xf7, 0xc4, 0x90, 0x68, 0x92, 0xf0, 0x41, 0xaf, 0x74, 0xdf, 0x43, 0x6f, 0x86, 0xa5, 0xdb, 0xdf, + 0x66, 0x7f, 0xdf, 0x79, 0x41, 0xed, 0x47, 0x06, 0xba, 0xd3, 0x13, 0xf5, 0xd1, 0x8d, 0xf8, 0xb3, + 0xc3, 0xa3, 0xd4, 0x0d, 0x58, 0x08, 0xe4, 0x00, 0xd5, 0x08, 0x3f, 0x16, 0x70, 0xa7, 0xe4, 0xa8, + 0x2c, 0xc0, 0x8b, 0xff, 0xc5, 0x98, 0xfd, 0xe8, 0xfa, 0x04, 0x19, 0x10, 0xdd, 0xc8, 0xff, 0xc9, + 0x9e, 0x19, 0xb0, 0x9a, 0x3e, 0x9e, 0x0c, 0x60, 0x2e, 0xfc, 0xf9, 0x18, 0x9c, 0xf3, 0x8f, 0xc0, + 0x39, 0x9c, 0x78, 0x1e, 0x8a, 0xf0, 0x0b, 0x52, 0xcf, 0x6c, 0x28, 0xa4, 0xf3, 0xc7, 0x62, 0x83, + 0x7b, 0x6f, 0xc0, 0x2c, 0x29, 0xfd, 0xb8, 0xb3, 0xc4, 0xf3, 0xbc, 0x6b, 0x9c, 0x5d, 0xcc, 0xdb, + 0x69, 0x64, 0x6f, 0x45, 0x4c, 0xd6, 0x1b, 0x7a, 0x8f, 0x08, 0x48, 0xac, 0x2b, 0x2f, 0xd0, 0xef, + 0x4b, 0xe5, 0xc9, 0x8c, 0xd2, 0x36, 0xf7, 0x3c, 0xd6, 0x7c, 0xf5, 0x5f, 0x4b, 0x5f, 0xce, 0xfe, + 0x8a, 0x84, 0x36, 0x60, 0xcc, 0x49, 0xcd, 0xb4, 0x98, 0xdd, 0xce, 0xcb, 0x37, 0xd0, 0xf2, 0x9e, + 0x69, 0xb6, 0x8c, 0x37, 0x32, 0x99, 0x5a, 0xdd, 0xdc, 0x6b, 0x3f, 0x5e, 0xae, 0x68, 0xfb, 0x19, + 0x8c, 0x22, 0xc3, 0x50, 0x64, 0x5a, 0xef, 0xd7, 0x32, 0x0e, 0x92, 0x95, 0xf8, 0x8d, 0xe5, 0x97, + 0x97, 0xa4, 0xd8, 0x0a, 0xff, 0xff, 0x0e, 0x66, 0x7e, 0xde, 0xd0, 0x9a, 0x62, 0x49, 0x4d, 0x6f, + 0x55, 0xde, 0xf0, 0xb4, 0x79, 0xc3, 0xd3, 0xe6, 0xa7, 0x43, 0xce, 0x9b, 0x51, 0x5a, 0x75, 0xd2, + 0xe1, 0x71, 0x3f, 0x89, 0xe3, 0xbc, 0xf2, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xa9, 0xe1, 0xb1, + 0x12, 0x4d, 0xaa, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/pkg/management/api/grpc/management.swagger.json b/pkg/management/api/grpc/management.swagger.json index 14773c54a1..69c2448709 100644 --- a/pkg/management/api/grpc/management.swagger.json +++ b/pkg/management/api/grpc/management.swagger.json @@ -3280,6 +3280,10 @@ }, "oidc_config": { "$ref": "#/definitions/v1OIDCConfig" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -3832,6 +3836,10 @@ }, "domain": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -3874,6 +3882,10 @@ "creation_date": { "type": "string", "format": "date-time" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -3994,6 +4006,10 @@ "expire_warn_days": { "type": "string", "format": "uint64" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4071,6 +4087,10 @@ "has_symbol": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4160,6 +4180,10 @@ "show_lock_out_failures": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4256,6 +4280,10 @@ }, "grant_id": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4304,6 +4332,10 @@ }, "project_name": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4366,6 +4398,10 @@ "creation_date": { "type": "string", "format": "date-time" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4676,6 +4712,10 @@ "creation_date": { "type": "string", "format": "date-time" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4812,6 +4852,10 @@ }, "group": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -4969,7 +5013,7 @@ "enum": [ "PROJECTSTATE_UNSPECIFIED", "PROJECTSTATE_ACTIVE", - "PROJECTSSTATE_INACTIVE" + "PROJECTSTATE_INACTIVE" ], "default": "PROJECTSTATE_UNSPECIFIED" }, @@ -5231,6 +5275,10 @@ }, "street_address": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -5254,6 +5302,10 @@ }, "street_address": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -5269,6 +5321,10 @@ "is_email_verified": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -5324,6 +5380,10 @@ }, "project_name": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -5470,6 +5530,10 @@ "is_phone_verified": { "type": "boolean", "format": "boolean" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, @@ -5502,6 +5566,10 @@ }, "user_name": { "type": "string" + }, + "sequence": { + "type": "string", + "format": "uint64" } } }, diff --git a/pkg/management/api/grpc/project.go b/pkg/management/api/grpc/project.go index 133e62202a..ed38997dcf 100644 --- a/pkg/management/api/grpc/project.go +++ b/pkg/management/api/grpc/project.go @@ -7,16 +7,32 @@ import ( ) func (s *Server) CreateProject(ctx context.Context, in *ProjectCreateRequest) (*Project, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-mo34X", "Not implemented") + project, err := s.project.CreateProject(ctx, in.Name) + if err != nil { + return nil, err + } + return projectFromModel(project), nil } func (s *Server) UpdateProject(ctx context.Context, in *ProjectUpdateRequest) (*Project, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-0o4fB", "Not implemented") + project, err := s.project.UpdateProject(ctx, projectUpdateToModel(in)) + if err != nil { + return nil, err + } + return projectFromModel(project), nil } func (s *Server) DeactivateProject(ctx context.Context, in *ProjectID) (*Project, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-4Sck8", "Not implemented") + project, err := s.project.DeactivateProject(ctx, in.Id) + if err != nil { + return nil, err + } + return projectFromModel(project), nil } func (s *Server) ReactivateProject(ctx context.Context, in *ProjectID) (*Project, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-0oVre", "Not implemented") + project, err := s.project.ReactivateProject(ctx, in.Id) + if err != nil { + return nil, err + } + return projectFromModel(project), nil } func (s *Server) SearchProjects(ctx context.Context, in *ProjectSearchRequest) (*ProjectSearchResponse, error) { @@ -24,7 +40,11 @@ func (s *Server) SearchProjects(ctx context.Context, in *ProjectSearchRequest) ( } func (s *Server) ProjectByID(ctx context.Context, id *ProjectID) (*Project, error) { - return nil, errors.ThrowUnimplemented(nil, "GRPC-plV5x", "Not implemented") + project, err := s.project.ProjectByID(ctx, id.Id) + if err != nil { + return nil, err + } + return projectFromModel(project), nil } func (s *Server) GetGrantedProjectGrantByID(ctx context.Context, request *GrantedGrantID) (*ProjectGrant, error) { diff --git a/pkg/management/api/grpc/project_converter.go b/pkg/management/api/grpc/project_converter.go new file mode 100644 index 0000000000..61f7286041 --- /dev/null +++ b/pkg/management/api/grpc/project_converter.go @@ -0,0 +1,45 @@ +package grpc + +import ( + "github.com/caos/logging" + "github.com/caos/zitadel/internal/eventstore/models" + proj_model "github.com/caos/zitadel/internal/project/model" + "github.com/golang/protobuf/ptypes" +) + +func projectFromModel(project *proj_model.Project) *Project { + creationDate, err := ptypes.TimestampProto(project.CreationDate) + logging.Log("GRPC-iejs3").OnError(err).Debug("unable to parse timestamp") + + changeDate, err := ptypes.TimestampProto(project.ChangeDate) + logging.Log("GRPC-di7rw").OnError(err).Debug("unable to parse timestamp") + + return &Project{ + Id: project.ID, + State: projectStateFromModel(project.State), + CreationDate: creationDate, + ChangeDate: changeDate, + Name: project.Name, + Sequence: project.Sequence, + } +} + +func projectStateFromModel(state proj_model.ProjectState) ProjectState { + switch state { + case proj_model.Active: + return ProjectState_PROJECTSTATE_ACTIVE + case proj_model.Inactive: + return ProjectState_PROJECTSTATE_INACTIVE + default: + return ProjectState_PROJECTSTATE_UNSPECIFIED + } +} + +func projectUpdateToModel(project *ProjectUpdateRequest) *proj_model.Project { + return &proj_model.Project{ + ObjectRoot: models.ObjectRoot{ + ID: project.Id, + }, + Name: project.Name, + } +} diff --git a/pkg/management/api/grpc/server.go b/pkg/management/api/grpc/server.go index 33af61d559..ffb2365963 100644 --- a/pkg/management/api/grpc/server.go +++ b/pkg/management/api/grpc/server.go @@ -1,8 +1,11 @@ package grpc import ( + "github.com/caos/zitadel/internal/api/auth" grpc_util "github.com/caos/zitadel/internal/api/grpc" "github.com/caos/zitadel/internal/api/grpc/server/middleware" + mgmt_auth "github.com/caos/zitadel/internal/management/auth" + "github.com/caos/zitadel/internal/management/repository" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" "google.golang.org/grpc" ) @@ -10,12 +13,18 @@ import ( var _ ManagementServiceServer = (*Server)(nil) type Server struct { - port string + port string + project repository.ProjectRepository + verifier *mgmt_auth.TokenVerifier + authZ auth.Config } -func StartServer(conf grpc_util.ServerConfig) *Server { +func StartServer(conf grpc_util.ServerConfig, authZ auth.Config, repo repository.Repository) *Server { return &Server{ - port: conf.Port, + port: conf.Port, + project: repo, + authZ: authZ, + verifier: mgmt_auth.Start(), } } @@ -29,6 +38,7 @@ func (s *Server) GRPCServer() (*grpc.Server, error) { grpc.UnaryInterceptor( grpc_middleware.ChainUnaryServer( middleware.ErrorHandler(), + ManagementService_Authorization_Interceptor(s.verifier, &s.authZ), ), ), ) diff --git a/pkg/management/api/proto/management.proto b/pkg/management/api/proto/management.proto index 12464e0b05..362b69c722 100644 --- a/pkg/management/api/proto/management.proto +++ b/pkg/management/api/proto/management.proto @@ -1269,6 +1269,7 @@ message User { string postal_code = 20; string region = 21; string street_address = 22; + uint64 sequence = 23; } enum UserState { @@ -1337,6 +1338,7 @@ message UserProfile { string preferred_language = 7; Gender gender = 8; string user_name = 9; + uint64 sequence = 10; } message UpdateUserProfileRequest { @@ -1353,6 +1355,7 @@ message UserEmail { string id = 1; string email = 2; bool is_email_verified = 3; + uint64 sequence = 4; } message UpdateUserEmailRequest { @@ -1365,6 +1368,7 @@ message UserPhone { string id = 1; string phone = 2; bool is_phone_verified = 3; + uint64 sequence = 5; } message UpdateUserPhoneRequest { @@ -1380,6 +1384,7 @@ message UserAddress { string postal_code = 4; string region = 5; string street_address = 6; + uint64 sequence = 7; } message UpdateUserAddressRequest { @@ -1451,6 +1456,7 @@ message PasswordComplexityPolicy { bool has_uppercase = 8; bool has_number = 9; bool has_symbol = 10; + uint64 sequence = 11; } message PasswordComplexityPolicyCreate { @@ -1484,6 +1490,7 @@ message PasswordAgePolicy { google.protobuf.Timestamp change_date = 5; uint64 max_age_days = 6; uint64 expire_warn_days = 7; + uint64 sequence = 8; } message PasswordAgePolicyCreate { @@ -1511,6 +1518,7 @@ message PasswordLockoutPolicy { google.protobuf.Timestamp change_date = 5; uint64 max_attempts = 6; bool show_lock_out_failures = 7; + uint64 sequence = 8; } message PasswordLockoutPolicyCreate { @@ -1548,6 +1556,7 @@ message Org { google.protobuf.Timestamp change_date = 4; string name = 5; string domain = 6; + uint64 sequence = 7; } enum OrgState { @@ -1569,6 +1578,7 @@ message OrgMember { repeated string roles = 6; google.protobuf.Timestamp change_date = 7; google.protobuf.Timestamp creation_date = 8; + uint64 sequence = 9; } message AddOrgMemberRequest { @@ -1641,12 +1651,13 @@ message Project { string org_name = 9; string org_domain = 10; string grant_id = 11; + uint64 sequence = 12; } enum ProjectState { PROJECTSTATE_UNSPECIFIED = 0; PROJECTSTATE_ACTIVE = 1; - PROJECTSSTATE_INACTIVE = 2; + PROJECTSTATE_INACTIVE = 2; } enum ProjectType { @@ -1692,6 +1703,7 @@ message ProjectMember { repeated string roles = 6; google.protobuf.Timestamp change_date = 7; google.protobuf.Timestamp creation_date = 8; + uint64 sequence = 10; } message ProjectMemberAdd { @@ -1724,6 +1736,7 @@ message ProjectRole { string display_name = 3; google.protobuf.Timestamp creation_date = 4; string group = 5; + uint64 sequence = 6; } message ProjectRoleRemove { @@ -1800,6 +1813,7 @@ message Application { oneof app_config { OIDCConfig oidc_config = 8; } + uint64 sequence = 9; } message ApplicationUpdate { @@ -1906,6 +1920,7 @@ message ProjectGrant { google.protobuf.Timestamp creation_date = 8; google.protobuf.Timestamp change_date = 9; string project_name = 10; + uint64 sequence = 11; } message ProjectGrantCreate { @@ -1961,6 +1976,7 @@ message ProjectGrantMember { repeated string roles = 6; google.protobuf.Timestamp change_date = 7; google.protobuf.Timestamp creation_date = 8; + uint64 sequence = 9; } message ProjectGrantMemberAdd { @@ -2028,6 +2044,7 @@ message UserGrant { string org_name = 13; string org_domain = 14; string project_name = 15; + uint64 sequence = 16; } message UserGrantCreate { diff --git a/pkg/management/management.go b/pkg/management/management.go index 1aaea27617..3339aaa098 100644 --- a/pkg/management/management.go +++ b/pkg/management/management.go @@ -2,16 +2,20 @@ package management import ( "context" + "github.com/caos/logging" "github.com/caos/zitadel/internal/api/auth" - app "github.com/caos/zitadel/internal/management" + "github.com/caos/zitadel/internal/management/repository/eventsourcing" "github.com/caos/zitadel/pkg/management/api" ) type Config struct { - App app.Config - API api.Config + Repository eventsourcing.Config + API api.Config } func Start(ctx context.Context, config Config, authZ auth.Config) { - api.Start(ctx, config.API) + repo, err := eventsourcing.Start(config.Repository) + logging.Log("MAIN-9uBxp").OnError(err).Panic("unable to start app") + + api.Start(ctx, config.API, authZ, repo) }