commit 16eb5dc6545fb69c01dc147e30365d6b9fac243d Author: nite Date: Sat Apr 5 01:02:56 2025 +1100 start diff --git a/company.go b/company.go new file mode 100644 index 0000000..637aa7e --- /dev/null +++ b/company.go @@ -0,0 +1,30 @@ +package igdb + +import ( + "errors" + "fmt" + "github/bestnite/go-igdb/constant" + + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetIGDBCompany(id uint64) (*pb.Company, error) { + query := fmt.Sprintf(`where id=%d; fields *;`, id) + resp, err := g.Request(constant.IGDBCompaniesURL, query) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB company for ID %d: %w", id, err) + } + + var data pb.CompanyResult + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB companies response: %w", err) + } + + if len(data.Companies) == 0 { + return nil, errors.New("company not found") + } + + return data.Companies[0], nil +} diff --git a/constant/url.go b/constant/url.go new file mode 100644 index 0000000..d4ef4b8 --- /dev/null +++ b/constant/url.go @@ -0,0 +1,12 @@ +package constant + +const ( + IGDBGameURL = "https://api.igdb.com/v4/games.pb" + IGDBCompaniesURL = "https://api.igdb.com/v4/companies.pb" + IGDBWebsitesURL = "https://api.igdb.com/v4/websites.pb" + IGDBExternalGameURL = "https://api.igdb.com/v4/external_games.pb" + IGDBPopularityURL = "https://api.igdb.com/v4/popularity_primitives.pb" + IGDBWebhookURL = "https://api.igdb.com/v4/%s/webhooks/" + IGDBWebSearchURL = "https://www.igdb.com/search" + TwitchAuthURL = "https://id.twitch.tv/oauth2/token" +) diff --git a/game.go b/game.go new file mode 100644 index 0000000..1ab26ee --- /dev/null +++ b/game.go @@ -0,0 +1,63 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + "strconv" + "strings" + + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetGame(id uint64) (*pb.Game, error) { + resp, err := g.Request(constant.IGDBGameURL, fmt.Sprintf(`where id = %v; fields *, age_ratings.*, alternative_names.*, artworks.*, collection.*, cover.*, external_games.*, external_games.platform.* , franchise.*, game_engines.*, game_engines.logo.*, game_engines.companies.* , game_modes.*, genres.*, involved_companies.*, involved_companies.company.* , keywords.*, multiplayer_modes.*, multiplayer_modes.platform.*, platforms.*, platforms.platform_logo.*, platforms.platform_family.*, platforms.versions.*, platforms.websites.* , player_perspectives.*, release_dates.*, release_dates.platform.*, release_dates.status.* , screenshots.*, themes.*, videos.*, websites.*, language_supports.*, language_supports.language.*, language_supports.language_support_type.* , game_localizations.*, game_localizations.region.* , collections.*, collections.type.*, collections.as_parent_relations.child_collection.*, collections.as_parent_relations.parent_collection.*, collections.as_parent_relations.type.*,collections.as_child_relations.child_collection.*, collections.as_child_relations.parent_collection.*, collections.as_child_relations.type.*, age_ratings.content_descriptions.*, cover.game_localization.*;`, id)) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB game detail for ID %d: %w", id, err) + } + + res := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB game detail response: %w", err) + } + + if len(res.Games) == 0 { + return nil, fmt.Errorf("failed to fetch IGDB game detail for ID %d", id) + } + + if res.Games[0].Name == "" { + return g.GetGame(id) + } + + return res.Games[0], nil +} + +func (g *igdb) GetGames(ids []uint64) ([]*pb.Game, error) { + idStrSlice := make([]string, len(ids)) + for i, id := range ids { + idStrSlice[i] = strconv.FormatUint(id, 10) + } + + idStr := strings.Join(idStrSlice, ",") + + resp, err := g.Request(constant.IGDBGameURL, fmt.Sprintf(`where id = (%s); fields *, age_ratings.*, alternative_names.*, artworks.*, collection.*, cover.*, external_games.*, external_games.platform.* , franchise.*, game_engines.*, game_engines.logo.*, game_engines.companies.* , game_modes.*, genres.*, involved_companies.*, involved_companies.company.* , keywords.*, multiplayer_modes.*, multiplayer_modes.platform.*, platforms.*, platforms.platform_logo.*, platforms.platform_family.*, platforms.versions.*, platforms.websites.* , player_perspectives.*, release_dates.*, release_dates.platform.*, release_dates.status.* , screenshots.*, themes.*, videos.*, websites.*, language_supports.*, language_supports.language.*, language_supports.language_support_type.* , game_localizations.*, game_localizations.region.* , collections.*, collections.type.*, collections.as_parent_relations.child_collection.*, collections.as_parent_relations.parent_collection.*, collections.as_parent_relations.type.*,collections.as_child_relations.child_collection.*, collections.as_child_relations.parent_collection.*, collections.as_child_relations.type.*, age_ratings.content_descriptions.*, cover.game_localization.*;`, idStr)) + if err != nil { + return nil, fmt.Errorf("failed to fetch IGDB games detail for ID %s: %w", idStr, err) + } + + res := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB games detail response: %w", err) + } + + if len(res.Games) == 0 { + return nil, fmt.Errorf("failed to fetch IGDB games detail for ID %s", idStr) + } + + if res.Games[0].Name == "" { + return g.GetGames(ids) + } + + return res.Games, nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..677a621 --- /dev/null +++ b/go.mod @@ -0,0 +1,27 @@ +module github/bestnite/go-igdb + +go 1.24.1 + +require ( + git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71 + github.com/PuerkitoBio/goquery v1.10.2 + github.com/go-resty/resty/v2 v2.16.5 + google.golang.org/protobuf v1.36.6 +) + +require ( + github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 // indirect + github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/andybalholm/cascadia v1.3.3 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/quic-go/quic-go v0.41.0 // indirect + github.com/refraction-networking/utls v1.6.2 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + h12.io/socks v1.0.3 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e4299f3 --- /dev/null +++ b/go.sum @@ -0,0 +1,441 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71 h1:4ZzG8XRZoXYSQ74lt8U3Pp15DwM6jEt6zk/UyRn48j0= +git.nite07.com/nite/flaresolverr v0.0.0-20250227023456-fd3b5ce79e71/go.mod h1:wwYYMzRwWc92OanTg1UBPLiddFZjGHJWXDTvDkW9N8Q= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 h1:6fexoGmvzoXMSk14BZ0AirapVm5c3KUsEjE0jLlVKi8= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26/go.mod h1:QFi/EVO7qqru3Ftxz1LR+96jIc91Tifv0DnskF/gWQ8= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 h1:/lqhaiz7xdPr6kuaW1tQ/8DdpWdxkdyd9W/6EHz4oRw= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1/go.mod h1:Hvab/V/YKCDXsEpKYKHjAXH5IFOmoq9FsfxjztEqvDc= +github.com/PuerkitoBio/goquery v1.10.2 h1:7fh2BdHcG6VFZsK7toXBT/Bh1z5Wmy8Q9MV9HqT2AM8= +github.com/PuerkitoBio/goquery v1.10.2/go.mod h1:0guWGjcLu9AYC7C1GHnpysHy056u9aEkUHwhdnePMCU= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= +github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.3.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.37.4/go.mod h1:YsbH1r4mSHPJcLF4k4zruUkLBqctEMBDR6VPvcYjIsU= +github.com/quic-go/quic-go v0.41.0 h1:aD8MmHfgqTURWNJy48IYFg2OnxwHT3JL7ahGs73lb4k= +github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB++CNOh9hA= +github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw= +github.com/refraction-networking/utls v1.6.2 h1:iTeeGY0o6nMNcGyirxkD5bFIsVctP5InGZ3E0HrzS7k= +github.com/refraction-networking/utls v1.6.2/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo= +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/id.go b/id.go new file mode 100644 index 0000000..808599c --- /dev/null +++ b/id.go @@ -0,0 +1,49 @@ +package igdb + +import ( + "errors" + "fmt" + "github/bestnite/go-igdb/constant" + pb "github/bestnite/go-igdb/proto" + "strconv" + + "google.golang.org/protobuf/proto" +) + +func (g *igdb) GetGameIDBySteamAppID(id uint64) (uint64, error) { + query := fmt.Sprintf(`where game_type.id = 0 & uid = "%d"; fields game;`, id) + resp, err := g.Request(constant.IGDBExternalGameURL, query) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB ID by Steam App ID %d: %w", id, err) + } + + res := pb.ExternalGameResult{} + if err = proto.Unmarshal(resp.Body(), &res); err != nil { + return 0, fmt.Errorf("failed to unmarshal IGDB response for Steam App ID %d: %w", id, err) + } + + if len(res.Externalgames) == 0 || res.Externalgames[0].Game.Id == 0 { + return 0, errors.New("no matching IGDB game found") + } + + return res.Externalgames[0].Game.Id, nil +} + +func (g *igdb) GetSteamIDByGameID(id uint64) (uint64, error) { + query := fmt.Sprintf(`where game = %v & game_type.id = 0; fields *;`, id) + resp, err := g.Request(constant.IGDBExternalGameURL, query) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB websites for IGDB ID %d: %w", id, err) + } + + res := pb.ExternalGameResult{} + if err := proto.Unmarshal(resp.Body(), &res); err != nil { + return 0, fmt.Errorf("failed to unmarshal IGDB websites response for IGDB ID %d: %w", id, err) + } + + if len(res.Externalgames) == 0 { + return 0, errors.New("steam ID not found") + } + + return strconv.ParseUint(res.Externalgames[0].Uid, 10, 64) +} diff --git a/igdb.go b/igdb.go new file mode 100644 index 0000000..0bb7daf --- /dev/null +++ b/igdb.go @@ -0,0 +1,54 @@ +package igdb + +import ( + "fmt" + + "git.nite07.com/nite/flaresolverr" + "github.com/go-resty/resty/v2" +) + +type igdb struct { + clientID string + token *twitchToken + flaresolverr *flaresolverr.Flaresolverr +} + +func NewIGDB(clientID, clientSecret string) *igdb { + return &igdb{ + token: NewTwitchToken(clientID, clientSecret), + flaresolverr: nil, + } +} + +func NewIGDBWithFlaresolverr(clientID, clientSecret string, f *flaresolverr.Flaresolverr) *igdb { + return &igdb{ + token: NewTwitchToken(clientID, clientSecret), + flaresolverr: f, + } +} + +func (g *igdb) Request(URL string, dataBody any) (*resty.Response, error) { + t, err := g.token.getToken() + if err != nil { + return nil, fmt.Errorf("failed to get Twitch token: %w", err) + } + + resp, err := request().SetBody(dataBody).SetHeaders(map[string]string{ + "Client-ID": g.clientID, + "Authorization": "Bearer " + t, + "User-Agent": "", + "Content-Type": "text/plain", + }).Post(URL) + + if err != nil { + return nil, fmt.Errorf("failed to make request: %s: %w", URL, err) + } + return resp, nil +} + +func (g *igdb) getFlaresolverr() (*flaresolverr.Flaresolverr, error) { + if g.flaresolverr == nil { + return nil, fmt.Errorf("flaresolverr is not initialized") + } + return g.flaresolverr, nil +} diff --git a/parent.go b/parent.go new file mode 100644 index 0000000..a04faac --- /dev/null +++ b/parent.go @@ -0,0 +1,33 @@ +package igdb + +import ( + "fmt" +) + +func (g *igdb) GetParentGameID(id uint64) (uint64, error) { + detail, err := g.GetGame(id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB app detail for parent: %d: %w", id, err) + } + hasParent := false + if detail.ParentGame != nil && detail.ParentGame.Id != 0 { + hasParent = true + detail, err = g.GetGame(detail.ParentGame.Id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB version parent: %d: %w", detail.VersionParent.Id, err) + } + } + for detail.VersionParent != nil && detail.VersionParent.Id != 0 { + hasParent = true + detail, err = g.GetGame(detail.VersionParent.Id) + if err != nil { + return 0, fmt.Errorf("failed to fetch IGDB version parent: %d: %w", detail.VersionParent.Id, err) + } + } + + if hasParent { + return detail.Id, nil + } + + return id, nil +} diff --git a/popular.go b/popular.go new file mode 100644 index 0000000..dddebf8 --- /dev/null +++ b/popular.go @@ -0,0 +1,33 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + pb "github/bestnite/go-igdb/proto" + + "google.golang.org/protobuf/proto" +) + +// GetPopularGameIDs retrieves popular IGDB game IDs based on a given popularity type. +// popularity_type = 1 IGDB Visits: Game page visits on IGDB.com. +// popularity_type = 2 IGDB Want to Play: Additions to IGDB.com users’ “Want to Play” lists. +// popularity_type = 3 IGDB Playing: Additions to IGDB.com users’ “Playing” lists. +// popularity_type = 4 IGDB Played: Additions to IGDB.com users’ “Played” lists. +func (g *igdb) GetPopularGameIDs(popularityType, offset, limit int) ([]uint64, error) { + query := fmt.Sprintf("fields game_id,value,popularity_type; sort value desc; limit %d; offset %d; where popularity_type = %d;", limit, offset, popularityType) + resp, err := g.Request(constant.IGDBPopularityURL, query) + if err != nil { + return nil, fmt.Errorf("failed to fetch popular IGDB game IDs for type %d: %w", popularityType, err) + } + data := pb.PopularityPrimitiveResult{} + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB popular games response: %w", err) + } + + gameIDs := make([]uint64, 0, len(data.Popularityprimitives)) + for _, game := range data.Popularityprimitives { + gameIDs = append(gameIDs, uint64(game.GameId)) + } + + return gameIDs, nil +} diff --git a/proto/igdbapi.pb.go b/proto/igdbapi.pb.go new file mode 100644 index 0000000..51d6c9b --- /dev/null +++ b/proto/igdbapi.pb.go @@ -0,0 +1,15680 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v6.30.1 +// source: proto/igdbapi.proto + +package proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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) +) + +type AgeRatingCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL AgeRatingCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_ESRB AgeRatingCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_PEGI AgeRatingCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_CERO AgeRatingCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_USK AgeRatingCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_GRAC AgeRatingCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_CLASS_IND AgeRatingCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingCategoryEnum_ACB AgeRatingCategoryEnum = 7 +) + +// Enum value maps for AgeRatingCategoryEnum. +var ( + AgeRatingCategoryEnum_name = map[int32]string{ + 0: "AGERATING_CATEGORY_NULL", + 1: "ESRB", + 2: "PEGI", + 3: "CERO", + 4: "USK", + 5: "GRAC", + 6: "CLASS_IND", + 7: "ACB", + } + AgeRatingCategoryEnum_value = map[string]int32{ + "AGERATING_CATEGORY_NULL": 0, + "ESRB": 1, + "PEGI": 2, + "CERO": 3, + "USK": 4, + "GRAC": 5, + "CLASS_IND": 6, + "ACB": 7, + } +) + +func (x AgeRatingCategoryEnum) Enum() *AgeRatingCategoryEnum { + p := new(AgeRatingCategoryEnum) + *p = x + return p +} + +func (x AgeRatingCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[0].Descriptor() +} + +func (AgeRatingCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[0] +} + +func (x AgeRatingCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingCategoryEnum.Descriptor instead. +func (AgeRatingCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} +} + +type AgeRatingRatingEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_AGERATING_RATING_NULL AgeRatingRatingEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_THREE AgeRatingRatingEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_SEVEN AgeRatingRatingEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_TWELVE AgeRatingRatingEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_SIXTEEN AgeRatingRatingEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_EIGHTEEN AgeRatingRatingEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_RP AgeRatingRatingEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_EC AgeRatingRatingEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_E AgeRatingRatingEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_E10 AgeRatingRatingEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_T AgeRatingRatingEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_M AgeRatingRatingEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_AO AgeRatingRatingEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_A AgeRatingRatingEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_B AgeRatingRatingEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_C AgeRatingRatingEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_D AgeRatingRatingEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CERO_Z AgeRatingRatingEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_0 AgeRatingRatingEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_6 AgeRatingRatingEnum = 19 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_12 AgeRatingRatingEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_16 AgeRatingRatingEnum = 21 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_USK_18 AgeRatingRatingEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_ALL AgeRatingRatingEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_TWELVE AgeRatingRatingEnum = 24 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_FIFTEEN AgeRatingRatingEnum = 25 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_EIGHTEEN AgeRatingRatingEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_GRAC_TESTING AgeRatingRatingEnum = 27 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_L AgeRatingRatingEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_TEN AgeRatingRatingEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_TWELVE AgeRatingRatingEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_FOURTEEN AgeRatingRatingEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_SIXTEEN AgeRatingRatingEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_CLASS_IND_EIGHTEEN AgeRatingRatingEnum = 33 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_G AgeRatingRatingEnum = 34 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_PG AgeRatingRatingEnum = 35 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_M AgeRatingRatingEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_MA15 AgeRatingRatingEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_R18 AgeRatingRatingEnum = 38 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingRatingEnum_ACB_RC AgeRatingRatingEnum = 39 +) + +// Enum value maps for AgeRatingRatingEnum. +var ( + AgeRatingRatingEnum_name = map[int32]string{ + 0: "AGERATING_RATING_NULL", + 1: "THREE", + 2: "SEVEN", + 3: "TWELVE", + 4: "SIXTEEN", + 5: "EIGHTEEN", + 6: "RP", + 7: "EC", + 8: "E", + 9: "E10", + 10: "T", + 11: "M", + 12: "AO", + 13: "CERO_A", + 14: "CERO_B", + 15: "CERO_C", + 16: "CERO_D", + 17: "CERO_Z", + 18: "USK_0", + 19: "USK_6", + 20: "USK_12", + 21: "USK_16", + 22: "USK_18", + 23: "GRAC_ALL", + 24: "GRAC_TWELVE", + 25: "GRAC_FIFTEEN", + 26: "GRAC_EIGHTEEN", + 27: "GRAC_TESTING", + 28: "CLASS_IND_L", + 29: "CLASS_IND_TEN", + 30: "CLASS_IND_TWELVE", + 31: "CLASS_IND_FOURTEEN", + 32: "CLASS_IND_SIXTEEN", + 33: "CLASS_IND_EIGHTEEN", + 34: "ACB_G", + 35: "ACB_PG", + 36: "ACB_M", + 37: "ACB_MA15", + 38: "ACB_R18", + 39: "ACB_RC", + } + AgeRatingRatingEnum_value = map[string]int32{ + "AGERATING_RATING_NULL": 0, + "THREE": 1, + "SEVEN": 2, + "TWELVE": 3, + "SIXTEEN": 4, + "EIGHTEEN": 5, + "RP": 6, + "EC": 7, + "E": 8, + "E10": 9, + "T": 10, + "M": 11, + "AO": 12, + "CERO_A": 13, + "CERO_B": 14, + "CERO_C": 15, + "CERO_D": 16, + "CERO_Z": 17, + "USK_0": 18, + "USK_6": 19, + "USK_12": 20, + "USK_16": 21, + "USK_18": 22, + "GRAC_ALL": 23, + "GRAC_TWELVE": 24, + "GRAC_FIFTEEN": 25, + "GRAC_EIGHTEEN": 26, + "GRAC_TESTING": 27, + "CLASS_IND_L": 28, + "CLASS_IND_TEN": 29, + "CLASS_IND_TWELVE": 30, + "CLASS_IND_FOURTEEN": 31, + "CLASS_IND_SIXTEEN": 32, + "CLASS_IND_EIGHTEEN": 33, + "ACB_G": 34, + "ACB_PG": 35, + "ACB_M": 36, + "ACB_MA15": 37, + "ACB_R18": 38, + "ACB_RC": 39, + } +) + +func (x AgeRatingRatingEnum) Enum() *AgeRatingRatingEnum { + p := new(AgeRatingRatingEnum) + *p = x + return p +} + +func (x AgeRatingRatingEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingRatingEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[1].Descriptor() +} + +func (AgeRatingRatingEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[1] +} + +func (x AgeRatingRatingEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingRatingEnum.Descriptor instead. +func (AgeRatingRatingEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} +} + +type AgeRatingContentDescriptionCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL AgeRatingContentDescriptionCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD AgeRatingContentDescriptionCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD AgeRatingContentDescriptionCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_COMIC_MISCHIEF AgeRatingContentDescriptionCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_CRUDE_HUMOR AgeRatingContentDescriptionCategoryEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_REFERENCE AgeRatingContentDescriptionCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_INTENSE_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_LYRICS AgeRatingContentDescriptionCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_HUMOR AgeRatingContentDescriptionCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_NUDITY AgeRatingContentDescriptionCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_PARTIAL_NUDITY AgeRatingContentDescriptionCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REAL_GAMBLING AgeRatingContentDescriptionCategoryEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 19 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SIMULATED_GAMBLING AgeRatingContentDescriptionCategoryEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 21 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LYRICS AgeRatingContentDescriptionCategoryEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 24 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 25 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS AgeRatingContentDescriptionCategoryEnum = 27 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_TOBACCO AgeRatingContentDescriptionCategoryEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENT_REFERENCES AgeRatingContentDescriptionCategoryEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 33 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS_AND_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 34 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_AND_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 35 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_BLOOD AgeRatingContentDescriptionCategoryEnum = 38 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 39 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 40 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_AND_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 41 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 42 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 43 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 44 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL_AND_TOBACCO AgeRatingContentDescriptionCategoryEnum = 45 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 46 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 47 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LYRICS AgeRatingContentDescriptionCategoryEnum = 48 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD AgeRatingContentDescriptionCategoryEnum = 49 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 50 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_SEX AgeRatingContentDescriptionCategoryEnum = 51 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_DRUGS AgeRatingContentDescriptionCategoryEnum = 52 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_FEAR AgeRatingContentDescriptionCategoryEnum = 53 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_DISCRIMINATION AgeRatingContentDescriptionCategoryEnum = 54 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_BAD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 55 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_GAMBLING AgeRatingContentDescriptionCategoryEnum = 56 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_ONLINE_GAMEPLAY AgeRatingContentDescriptionCategoryEnum = 57 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_PEGI_IN_GAME_PURCHASES AgeRatingContentDescriptionCategoryEnum = 58 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_LOVE AgeRatingContentDescriptionCategoryEnum = 59 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 60 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 61 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_HORROR AgeRatingContentDescriptionCategoryEnum = 62 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_DRINKING_SMOKING AgeRatingContentDescriptionCategoryEnum = 63 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_GAMBLING AgeRatingContentDescriptionCategoryEnum = 64 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_CRIME AgeRatingContentDescriptionCategoryEnum = 65 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_CONTROLLED_SUBSTANCES AgeRatingContentDescriptionCategoryEnum = 66 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CERO_LANGUAGES_AND_OTHERS AgeRatingContentDescriptionCategoryEnum = 67 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_SEXUALITY AgeRatingContentDescriptionCategoryEnum = 68 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 69 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_FEAR_HORROR_THREATENING AgeRatingContentDescriptionCategoryEnum = 70 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 71 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_ALCOHOL_TOBACCO_DRUG AgeRatingContentDescriptionCategoryEnum = 72 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_CRIME_ANTI_SOCIAL AgeRatingContentDescriptionCategoryEnum = 73 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_GRAC_GAMBLING AgeRatingContentDescriptionCategoryEnum = 74 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA AgeRatingContentDescriptionCategoryEnum = 75 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA_EXTREMA AgeRatingContentDescriptionCategoryEnum = 76 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_CONTEUDO_SEXUAL AgeRatingContentDescriptionCategoryEnum = 77 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_NUDEZ AgeRatingContentDescriptionCategoryEnum = 78 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO AgeRatingContentDescriptionCategoryEnum = 79 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO_EXPLICITO AgeRatingContentDescriptionCategoryEnum = 80 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS AgeRatingContentDescriptionCategoryEnum = 81 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_LICITAS AgeRatingContentDescriptionCategoryEnum = 82 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_ILICITAS AgeRatingContentDescriptionCategoryEnum = 83 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_LINGUAGEM_IMPROPRIA AgeRatingContentDescriptionCategoryEnum = 84 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + AgeRatingContentDescriptionCategoryEnum_CLASS_IND_ATOS_CRIMINOSOS AgeRatingContentDescriptionCategoryEnum = 85 +) + +// Enum value maps for AgeRatingContentDescriptionCategoryEnum. +var ( + AgeRatingContentDescriptionCategoryEnum_name = map[int32]string{ + 0: "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL", + 1: "ESRB_ALCOHOL_REFERENCE", + 2: "ESRB_ANIMATED_BLOOD", + 3: "ESRB_BLOOD", + 4: "ESRB_BLOOD_AND_GORE", + 5: "ESRB_CARTOON_VIOLENCE", + 6: "ESRB_COMIC_MISCHIEF", + 7: "ESRB_CRUDE_HUMOR", + 8: "ESRB_DRUG_REFERENCE", + 9: "ESRB_FANTASY_VIOLENCE", + 10: "ESRB_INTENSE_VIOLENCE", + 11: "ESRB_LANGUAGE", + 12: "ESRB_LYRICS", + 13: "ESRB_MATURE_HUMOR", + 14: "ESRB_NUDITY", + 15: "ESRB_PARTIAL_NUDITY", + 16: "ESRB_REAL_GAMBLING", + 17: "ESRB_SEXUAL_CONTENT", + 18: "ESRB_SEXUAL_THEMES", + 19: "ESRB_SEXUAL_VIOLENCE", + 20: "ESRB_SIMULATED_GAMBLING", + 21: "ESRB_STRONG_LANGUAGE", + 22: "ESRB_STRONG_LYRICS", + 23: "ESRB_STRONG_SEXUAL_CONTENT", + 24: "ESRB_SUGGESTIVE_THEMES", + 25: "ESRB_TOBACCO_REFERENCE", + 26: "ESRB_USE_OF_ALCOHOL", + 27: "ESRB_USE_OF_DRUGS", + 28: "ESRB_USE_OF_TOBACCO", + 29: "ESRB_VIOLENCE", + 30: "ESRB_VIOLENT_REFERENCES", + 31: "ESRB_ANIMATED_VIOLENCE", + 32: "ESRB_MILD_LANGUAGE", + 33: "ESRB_MILD_VIOLENCE", + 34: "ESRB_USE_OF_DRUGS_AND_ALCOHOL", + 35: "ESRB_DRUG_AND_ALCOHOL_REFERENCE", + 36: "ESRB_MILD_SUGGESTIVE_THEMES", + 37: "ESRB_MILD_CARTOON_VIOLENCE", + 38: "ESRB_MILD_BLOOD", + 39: "ESRB_REALISTIC_BLOOD_AND_GORE", + 40: "ESRB_REALISTIC_VIOLENCE", + 41: "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE", + 42: "ESRB_MATURE_SEXUAL_THEMES", + 43: "ESRB_MILD_ANIMATED_VIOLENCE", + 44: "ESRB_MILD_SEXUAL_THEMES", + 45: "ESRB_USE_OF_ALCOHOL_AND_TOBACCO", + 46: "ESRB_ANIMATED_BLOOD_AND_GORE", + 47: "ESRB_MILD_FANTASY_VIOLENCE", + 48: "ESRB_MILD_LYRICS", + 49: "ESRB_REALISTIC_BLOOD", + 50: "PEGI_VIOLENCE", + 51: "PEGI_SEX", + 52: "PEGI_DRUGS", + 53: "PEGI_FEAR", + 54: "PEGI_DISCRIMINATION", + 55: "PEGI_BAD_LANGUAGE", + 56: "PEGI_GAMBLING", + 57: "PEGI_ONLINE_GAMEPLAY", + 58: "PEGI_IN_GAME_PURCHASES", + 59: "CERO_LOVE", + 60: "CERO_SEXUAL_CONTENT", + 61: "CERO_VIOLENCE", + 62: "CERO_HORROR", + 63: "CERO_DRINKING_SMOKING", + 64: "CERO_GAMBLING", + 65: "CERO_CRIME", + 66: "CERO_CONTROLLED_SUBSTANCES", + 67: "CERO_LANGUAGES_AND_OTHERS", + 68: "GRAC_SEXUALITY", + 69: "GRAC_VIOLENCE", + 70: "GRAC_FEAR_HORROR_THREATENING", + 71: "GRAC_LANGUAGE", + 72: "GRAC_ALCOHOL_TOBACCO_DRUG", + 73: "GRAC_CRIME_ANTI_SOCIAL", + 74: "GRAC_GAMBLING", + 75: "CLASS_IND_VIOLENCIA", + 76: "CLASS_IND_VIOLENCIA_EXTREMA", + 77: "CLASS_IND_CONTEUDO_SEXUAL", + 78: "CLASS_IND_NUDEZ", + 79: "CLASS_IND_SEXO", + 80: "CLASS_IND_SEXO_EXPLICITO", + 81: "CLASS_IND_DROGAS", + 82: "CLASS_IND_DROGAS_LICITAS", + 83: "CLASS_IND_DROGAS_ILICITAS", + 84: "CLASS_IND_LINGUAGEM_IMPROPRIA", + 85: "CLASS_IND_ATOS_CRIMINOSOS", + } + AgeRatingContentDescriptionCategoryEnum_value = map[string]int32{ + "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL": 0, + "ESRB_ALCOHOL_REFERENCE": 1, + "ESRB_ANIMATED_BLOOD": 2, + "ESRB_BLOOD": 3, + "ESRB_BLOOD_AND_GORE": 4, + "ESRB_CARTOON_VIOLENCE": 5, + "ESRB_COMIC_MISCHIEF": 6, + "ESRB_CRUDE_HUMOR": 7, + "ESRB_DRUG_REFERENCE": 8, + "ESRB_FANTASY_VIOLENCE": 9, + "ESRB_INTENSE_VIOLENCE": 10, + "ESRB_LANGUAGE": 11, + "ESRB_LYRICS": 12, + "ESRB_MATURE_HUMOR": 13, + "ESRB_NUDITY": 14, + "ESRB_PARTIAL_NUDITY": 15, + "ESRB_REAL_GAMBLING": 16, + "ESRB_SEXUAL_CONTENT": 17, + "ESRB_SEXUAL_THEMES": 18, + "ESRB_SEXUAL_VIOLENCE": 19, + "ESRB_SIMULATED_GAMBLING": 20, + "ESRB_STRONG_LANGUAGE": 21, + "ESRB_STRONG_LYRICS": 22, + "ESRB_STRONG_SEXUAL_CONTENT": 23, + "ESRB_SUGGESTIVE_THEMES": 24, + "ESRB_TOBACCO_REFERENCE": 25, + "ESRB_USE_OF_ALCOHOL": 26, + "ESRB_USE_OF_DRUGS": 27, + "ESRB_USE_OF_TOBACCO": 28, + "ESRB_VIOLENCE": 29, + "ESRB_VIOLENT_REFERENCES": 30, + "ESRB_ANIMATED_VIOLENCE": 31, + "ESRB_MILD_LANGUAGE": 32, + "ESRB_MILD_VIOLENCE": 33, + "ESRB_USE_OF_DRUGS_AND_ALCOHOL": 34, + "ESRB_DRUG_AND_ALCOHOL_REFERENCE": 35, + "ESRB_MILD_SUGGESTIVE_THEMES": 36, + "ESRB_MILD_CARTOON_VIOLENCE": 37, + "ESRB_MILD_BLOOD": 38, + "ESRB_REALISTIC_BLOOD_AND_GORE": 39, + "ESRB_REALISTIC_VIOLENCE": 40, + "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE": 41, + "ESRB_MATURE_SEXUAL_THEMES": 42, + "ESRB_MILD_ANIMATED_VIOLENCE": 43, + "ESRB_MILD_SEXUAL_THEMES": 44, + "ESRB_USE_OF_ALCOHOL_AND_TOBACCO": 45, + "ESRB_ANIMATED_BLOOD_AND_GORE": 46, + "ESRB_MILD_FANTASY_VIOLENCE": 47, + "ESRB_MILD_LYRICS": 48, + "ESRB_REALISTIC_BLOOD": 49, + "PEGI_VIOLENCE": 50, + "PEGI_SEX": 51, + "PEGI_DRUGS": 52, + "PEGI_FEAR": 53, + "PEGI_DISCRIMINATION": 54, + "PEGI_BAD_LANGUAGE": 55, + "PEGI_GAMBLING": 56, + "PEGI_ONLINE_GAMEPLAY": 57, + "PEGI_IN_GAME_PURCHASES": 58, + "CERO_LOVE": 59, + "CERO_SEXUAL_CONTENT": 60, + "CERO_VIOLENCE": 61, + "CERO_HORROR": 62, + "CERO_DRINKING_SMOKING": 63, + "CERO_GAMBLING": 64, + "CERO_CRIME": 65, + "CERO_CONTROLLED_SUBSTANCES": 66, + "CERO_LANGUAGES_AND_OTHERS": 67, + "GRAC_SEXUALITY": 68, + "GRAC_VIOLENCE": 69, + "GRAC_FEAR_HORROR_THREATENING": 70, + "GRAC_LANGUAGE": 71, + "GRAC_ALCOHOL_TOBACCO_DRUG": 72, + "GRAC_CRIME_ANTI_SOCIAL": 73, + "GRAC_GAMBLING": 74, + "CLASS_IND_VIOLENCIA": 75, + "CLASS_IND_VIOLENCIA_EXTREMA": 76, + "CLASS_IND_CONTEUDO_SEXUAL": 77, + "CLASS_IND_NUDEZ": 78, + "CLASS_IND_SEXO": 79, + "CLASS_IND_SEXO_EXPLICITO": 80, + "CLASS_IND_DROGAS": 81, + "CLASS_IND_DROGAS_LICITAS": 82, + "CLASS_IND_DROGAS_ILICITAS": 83, + "CLASS_IND_LINGUAGEM_IMPROPRIA": 84, + "CLASS_IND_ATOS_CRIMINOSOS": 85, + } +) + +func (x AgeRatingContentDescriptionCategoryEnum) Enum() *AgeRatingContentDescriptionCategoryEnum { + p := new(AgeRatingContentDescriptionCategoryEnum) + *p = x + return p +} + +func (x AgeRatingContentDescriptionCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AgeRatingContentDescriptionCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[2].Descriptor() +} + +func (AgeRatingContentDescriptionCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[2] +} + +func (x AgeRatingContentDescriptionCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AgeRatingContentDescriptionCategoryEnum.Descriptor instead. +func (AgeRatingContentDescriptionCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} +} + +type GenderGenderEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_MALE GenderGenderEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_FEMALE GenderGenderEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GenderGenderEnum_OTHER GenderGenderEnum = 2 +) + +// Enum value maps for GenderGenderEnum. +var ( + GenderGenderEnum_name = map[int32]string{ + 0: "MALE", + 1: "FEMALE", + 2: "OTHER", + } + GenderGenderEnum_value = map[string]int32{ + "MALE": 0, + "FEMALE": 1, + "OTHER": 2, + } +) + +func (x GenderGenderEnum) Enum() *GenderGenderEnum { + p := new(GenderGenderEnum) + *p = x + return p +} + +func (x GenderGenderEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenderGenderEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[3].Descriptor() +} + +func (GenderGenderEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[3] +} + +func (x GenderGenderEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenderGenderEnum.Descriptor instead. +func (GenderGenderEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} +} + +type CharacterSpeciesEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_CHARACTER_SPECIES_NULL CharacterSpeciesEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_HUMAN CharacterSpeciesEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ALIEN CharacterSpeciesEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ANIMAL CharacterSpeciesEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_ANDROID CharacterSpeciesEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + CharacterSpeciesEnum_UNKNOWN CharacterSpeciesEnum = 5 +) + +// Enum value maps for CharacterSpeciesEnum. +var ( + CharacterSpeciesEnum_name = map[int32]string{ + 0: "CHARACTER_SPECIES_NULL", + 1: "HUMAN", + 2: "ALIEN", + 3: "ANIMAL", + 4: "ANDROID", + 5: "UNKNOWN", + } + CharacterSpeciesEnum_value = map[string]int32{ + "CHARACTER_SPECIES_NULL": 0, + "HUMAN": 1, + "ALIEN": 2, + "ANIMAL": 3, + "ANDROID": 4, + "UNKNOWN": 5, + } +) + +func (x CharacterSpeciesEnum) Enum() *CharacterSpeciesEnum { + p := new(CharacterSpeciesEnum) + *p = x + return p +} + +func (x CharacterSpeciesEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CharacterSpeciesEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[4].Descriptor() +} + +func (CharacterSpeciesEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[4] +} + +func (x CharacterSpeciesEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CharacterSpeciesEnum.Descriptor instead. +func (CharacterSpeciesEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} +} + +type DateFormatChangeDateCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYMMMMDD DateFormatChangeDateCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYMMMM DateFormatChangeDateCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYY DateFormatChangeDateCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ1 DateFormatChangeDateCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ2 DateFormatChangeDateCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ3 DateFormatChangeDateCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_YYYYQ4 DateFormatChangeDateCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + DateFormatChangeDateCategoryEnum_TBD DateFormatChangeDateCategoryEnum = 7 +) + +// Enum value maps for DateFormatChangeDateCategoryEnum. +var ( + DateFormatChangeDateCategoryEnum_name = map[int32]string{ + 0: "YYYYMMMMDD", + 1: "YYYYMMMM", + 2: "YYYY", + 3: "YYYYQ1", + 4: "YYYYQ2", + 5: "YYYYQ3", + 6: "YYYYQ4", + 7: "TBD", + } + DateFormatChangeDateCategoryEnum_value = map[string]int32{ + "YYYYMMMMDD": 0, + "YYYYMMMM": 1, + "YYYY": 2, + "YYYYQ1": 3, + "YYYYQ2": 4, + "YYYYQ3": 5, + "YYYYQ4": 6, + "TBD": 7, + } +) + +func (x DateFormatChangeDateCategoryEnum) Enum() *DateFormatChangeDateCategoryEnum { + p := new(DateFormatChangeDateCategoryEnum) + *p = x + return p +} + +func (x DateFormatChangeDateCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DateFormatChangeDateCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[5].Descriptor() +} + +func (DateFormatChangeDateCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[5] +} + +func (x DateFormatChangeDateCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DateFormatChangeDateCategoryEnum.Descriptor instead. +func (DateFormatChangeDateCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} +} + +type WebsiteCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL WebsiteCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_OFFICIAL WebsiteCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_WIKIA WebsiteCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_WIKIPEDIA WebsiteCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_FACEBOOK WebsiteCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_TWITTER WebsiteCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_TWITCH WebsiteCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_INSTAGRAM WebsiteCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_YOUTUBE WebsiteCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_IPHONE WebsiteCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_IPAD WebsiteCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_ANDROID WebsiteCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_STEAM WebsiteCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_REDDIT WebsiteCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_ITCH WebsiteCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_EPICGAMES WebsiteCategoryEnum = 16 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_GOG WebsiteCategoryEnum = 17 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_DISCORD WebsiteCategoryEnum = 18 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + WebsiteCategoryEnum_WEBSITE_BLUESKY WebsiteCategoryEnum = 19 +) + +// Enum value maps for WebsiteCategoryEnum. +var ( + WebsiteCategoryEnum_name = map[int32]string{ + 0: "WEBSITE_CATEGORY_NULL", + 1: "WEBSITE_OFFICIAL", + 2: "WEBSITE_WIKIA", + 3: "WEBSITE_WIKIPEDIA", + 4: "WEBSITE_FACEBOOK", + 5: "WEBSITE_TWITTER", + 6: "WEBSITE_TWITCH", + 8: "WEBSITE_INSTAGRAM", + 9: "WEBSITE_YOUTUBE", + 10: "WEBSITE_IPHONE", + 11: "WEBSITE_IPAD", + 12: "WEBSITE_ANDROID", + 13: "WEBSITE_STEAM", + 14: "WEBSITE_REDDIT", + 15: "WEBSITE_ITCH", + 16: "WEBSITE_EPICGAMES", + 17: "WEBSITE_GOG", + 18: "WEBSITE_DISCORD", + 19: "WEBSITE_BLUESKY", + } + WebsiteCategoryEnum_value = map[string]int32{ + "WEBSITE_CATEGORY_NULL": 0, + "WEBSITE_OFFICIAL": 1, + "WEBSITE_WIKIA": 2, + "WEBSITE_WIKIPEDIA": 3, + "WEBSITE_FACEBOOK": 4, + "WEBSITE_TWITTER": 5, + "WEBSITE_TWITCH": 6, + "WEBSITE_INSTAGRAM": 8, + "WEBSITE_YOUTUBE": 9, + "WEBSITE_IPHONE": 10, + "WEBSITE_IPAD": 11, + "WEBSITE_ANDROID": 12, + "WEBSITE_STEAM": 13, + "WEBSITE_REDDIT": 14, + "WEBSITE_ITCH": 15, + "WEBSITE_EPICGAMES": 16, + "WEBSITE_GOG": 17, + "WEBSITE_DISCORD": 18, + "WEBSITE_BLUESKY": 19, + } +) + +func (x WebsiteCategoryEnum) Enum() *WebsiteCategoryEnum { + p := new(WebsiteCategoryEnum) + *p = x + return p +} + +func (x WebsiteCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WebsiteCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[6].Descriptor() +} + +func (WebsiteCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[6] +} + +func (x WebsiteCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WebsiteCategoryEnum.Descriptor instead. +func (WebsiteCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} +} + +type ExternalGameCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL ExternalGameCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_STEAM ExternalGameCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_GOG ExternalGameCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_YOUTUBE ExternalGameCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_MICROSOFT ExternalGameCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_APPLE ExternalGameCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_TWITCH ExternalGameCategoryEnum = 14 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_ANDROID ExternalGameCategoryEnum = 15 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ASIN ExternalGameCategoryEnum = 20 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_LUNA ExternalGameCategoryEnum = 22 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ADG ExternalGameCategoryEnum = 23 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_EPIC_GAME_STORE ExternalGameCategoryEnum = 26 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_OCULUS ExternalGameCategoryEnum = 28 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_UTOMIK ExternalGameCategoryEnum = 29 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_ITCH_IO ExternalGameCategoryEnum = 30 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_XBOX_MARKETPLACE ExternalGameCategoryEnum = 31 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_KARTRIDGE ExternalGameCategoryEnum = 32 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_PLAYSTATION_STORE_US ExternalGameCategoryEnum = 36 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_FOCUS_ENTERTAINMENT ExternalGameCategoryEnum = 37 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD ExternalGameCategoryEnum = 54 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameCategoryEnum_EXTERNALGAME_GAMEJOLT ExternalGameCategoryEnum = 55 +) + +// Enum value maps for ExternalGameCategoryEnum. +var ( + ExternalGameCategoryEnum_name = map[int32]string{ + 0: "EXTERNALGAME_CATEGORY_NULL", + 1: "EXTERNALGAME_STEAM", + 5: "EXTERNALGAME_GOG", + 10: "EXTERNALGAME_YOUTUBE", + 11: "EXTERNALGAME_MICROSOFT", + 13: "EXTERNALGAME_APPLE", + 14: "EXTERNALGAME_TWITCH", + 15: "EXTERNALGAME_ANDROID", + 20: "EXTERNALGAME_AMAZON_ASIN", + 22: "EXTERNALGAME_AMAZON_LUNA", + 23: "EXTERNALGAME_AMAZON_ADG", + 26: "EXTERNALGAME_EPIC_GAME_STORE", + 28: "EXTERNALGAME_OCULUS", + 29: "EXTERNALGAME_UTOMIK", + 30: "EXTERNALGAME_ITCH_IO", + 31: "EXTERNALGAME_XBOX_MARKETPLACE", + 32: "EXTERNALGAME_KARTRIDGE", + 36: "EXTERNALGAME_PLAYSTATION_STORE_US", + 37: "EXTERNALGAME_FOCUS_ENTERTAINMENT", + 54: "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD", + 55: "EXTERNALGAME_GAMEJOLT", + } + ExternalGameCategoryEnum_value = map[string]int32{ + "EXTERNALGAME_CATEGORY_NULL": 0, + "EXTERNALGAME_STEAM": 1, + "EXTERNALGAME_GOG": 5, + "EXTERNALGAME_YOUTUBE": 10, + "EXTERNALGAME_MICROSOFT": 11, + "EXTERNALGAME_APPLE": 13, + "EXTERNALGAME_TWITCH": 14, + "EXTERNALGAME_ANDROID": 15, + "EXTERNALGAME_AMAZON_ASIN": 20, + "EXTERNALGAME_AMAZON_LUNA": 22, + "EXTERNALGAME_AMAZON_ADG": 23, + "EXTERNALGAME_EPIC_GAME_STORE": 26, + "EXTERNALGAME_OCULUS": 28, + "EXTERNALGAME_UTOMIK": 29, + "EXTERNALGAME_ITCH_IO": 30, + "EXTERNALGAME_XBOX_MARKETPLACE": 31, + "EXTERNALGAME_KARTRIDGE": 32, + "EXTERNALGAME_PLAYSTATION_STORE_US": 36, + "EXTERNALGAME_FOCUS_ENTERTAINMENT": 37, + "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD": 54, + "EXTERNALGAME_GAMEJOLT": 55, + } +) + +func (x ExternalGameCategoryEnum) Enum() *ExternalGameCategoryEnum { + p := new(ExternalGameCategoryEnum) + *p = x + return p +} + +func (x ExternalGameCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalGameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[7].Descriptor() +} + +func (ExternalGameCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[7] +} + +func (x ExternalGameCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalGameCategoryEnum.Descriptor instead. +func (ExternalGameCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} +} + +type ExternalGameMediaEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL ExternalGameMediaEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_DIGITAL ExternalGameMediaEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ExternalGameMediaEnum_EXTERNALGAME_PHYSICAL ExternalGameMediaEnum = 2 +) + +// Enum value maps for ExternalGameMediaEnum. +var ( + ExternalGameMediaEnum_name = map[int32]string{ + 0: "EXTERNALGAME_MEDIA_NULL", + 1: "EXTERNALGAME_DIGITAL", + 2: "EXTERNALGAME_PHYSICAL", + } + ExternalGameMediaEnum_value = map[string]int32{ + "EXTERNALGAME_MEDIA_NULL": 0, + "EXTERNALGAME_DIGITAL": 1, + "EXTERNALGAME_PHYSICAL": 2, + } +) + +func (x ExternalGameMediaEnum) Enum() *ExternalGameMediaEnum { + p := new(ExternalGameMediaEnum) + *p = x + return p +} + +func (x ExternalGameMediaEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ExternalGameMediaEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[8].Descriptor() +} + +func (ExternalGameMediaEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[8] +} + +func (x ExternalGameMediaEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ExternalGameMediaEnum.Descriptor instead. +func (ExternalGameMediaEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} +} + +type GameCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_MAIN_GAME GameCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_DLC_ADDON GameCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EXPANSION GameCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_BUNDLE GameCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_STANDALONE_EXPANSION GameCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_MOD GameCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EPISODE GameCategoryEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_SEASON GameCategoryEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_REMAKE GameCategoryEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_REMASTER GameCategoryEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_EXPANDED_GAME GameCategoryEnum = 10 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_PORT GameCategoryEnum = 11 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_FORK GameCategoryEnum = 12 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_PACK GameCategoryEnum = 13 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameCategoryEnum_UPDATE GameCategoryEnum = 14 +) + +// Enum value maps for GameCategoryEnum. +var ( + GameCategoryEnum_name = map[int32]string{ + 0: "MAIN_GAME", + 1: "DLC_ADDON", + 2: "EXPANSION", + 3: "BUNDLE", + 4: "STANDALONE_EXPANSION", + 5: "MOD", + 6: "EPISODE", + 7: "SEASON", + 8: "REMAKE", + 9: "REMASTER", + 10: "EXPANDED_GAME", + 11: "PORT", + 12: "FORK", + 13: "PACK", + 14: "UPDATE", + } + GameCategoryEnum_value = map[string]int32{ + "MAIN_GAME": 0, + "DLC_ADDON": 1, + "EXPANSION": 2, + "BUNDLE": 3, + "STANDALONE_EXPANSION": 4, + "MOD": 5, + "EPISODE": 6, + "SEASON": 7, + "REMAKE": 8, + "REMASTER": 9, + "EXPANDED_GAME": 10, + "PORT": 11, + "FORK": 12, + "PACK": 13, + "UPDATE": 14, + } +) + +func (x GameCategoryEnum) Enum() *GameCategoryEnum { + p := new(GameCategoryEnum) + *p = x + return p +} + +func (x GameCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[9].Descriptor() +} + +func (GameCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[9] +} + +func (x GameCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameCategoryEnum.Descriptor instead. +func (GameCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} +} + +type GameStatusEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_RELEASED GameStatusEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_ALPHA GameStatusEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_BETA GameStatusEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_EARLY_ACCESS GameStatusEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_OFFLINE GameStatusEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_CANCELLED GameStatusEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_RUMORED GameStatusEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + GameStatusEnum_DELISTED GameStatusEnum = 8 +) + +// Enum value maps for GameStatusEnum. +var ( + GameStatusEnum_name = map[int32]string{ + 0: "RELEASED", + 2: "ALPHA", + 3: "BETA", + 4: "EARLY_ACCESS", + 5: "OFFLINE", + 6: "CANCELLED", + 7: "RUMORED", + 8: "DELISTED", + } + GameStatusEnum_value = map[string]int32{ + "RELEASED": 0, + "ALPHA": 2, + "BETA": 3, + "EARLY_ACCESS": 4, + "OFFLINE": 5, + "CANCELLED": 6, + "RUMORED": 7, + "DELISTED": 8, + } +) + +func (x GameStatusEnum) Enum() *GameStatusEnum { + p := new(GameStatusEnum) + *p = x + return p +} + +func (x GameStatusEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameStatusEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[10].Descriptor() +} + +func (GameStatusEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[10] +} + +func (x GameStatusEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameStatusEnum.Descriptor instead. +func (GameStatusEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} +} + +type GameVersionFeatureCategoryEnum int32 + +const ( + GameVersionFeatureCategoryEnum_BOOLEAN GameVersionFeatureCategoryEnum = 0 + GameVersionFeatureCategoryEnum_DESCRIPTION GameVersionFeatureCategoryEnum = 1 +) + +// Enum value maps for GameVersionFeatureCategoryEnum. +var ( + GameVersionFeatureCategoryEnum_name = map[int32]string{ + 0: "BOOLEAN", + 1: "DESCRIPTION", + } + GameVersionFeatureCategoryEnum_value = map[string]int32{ + "BOOLEAN": 0, + "DESCRIPTION": 1, + } +) + +func (x GameVersionFeatureCategoryEnum) Enum() *GameVersionFeatureCategoryEnum { + p := new(GameVersionFeatureCategoryEnum) + *p = x + return p +} + +func (x GameVersionFeatureCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameVersionFeatureCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[11].Descriptor() +} + +func (GameVersionFeatureCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[11] +} + +func (x GameVersionFeatureCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameVersionFeatureCategoryEnum.Descriptor instead. +func (GameVersionFeatureCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} +} + +type GameVersionFeatureValueIncludedFeatureEnum int32 + +const ( + GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 0 + GameVersionFeatureValueIncludedFeatureEnum_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 1 + GameVersionFeatureValueIncludedFeatureEnum_PRE_ORDER_ONLY GameVersionFeatureValueIncludedFeatureEnum = 2 +) + +// Enum value maps for GameVersionFeatureValueIncludedFeatureEnum. +var ( + GameVersionFeatureValueIncludedFeatureEnum_name = map[int32]string{ + 0: "NOT_INCLUDED", + 1: "INCLUDED", + 2: "PRE_ORDER_ONLY", + } + GameVersionFeatureValueIncludedFeatureEnum_value = map[string]int32{ + "NOT_INCLUDED": 0, + "INCLUDED": 1, + "PRE_ORDER_ONLY": 2, + } +) + +func (x GameVersionFeatureValueIncludedFeatureEnum) Enum() *GameVersionFeatureValueIncludedFeatureEnum { + p := new(GameVersionFeatureValueIncludedFeatureEnum) + *p = x + return p +} + +func (x GameVersionFeatureValueIncludedFeatureEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GameVersionFeatureValueIncludedFeatureEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[12].Descriptor() +} + +func (GameVersionFeatureValueIncludedFeatureEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[12] +} + +func (x GameVersionFeatureValueIncludedFeatureEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GameVersionFeatureValueIncludedFeatureEnum.Descriptor instead. +func (GameVersionFeatureValueIncludedFeatureEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} +} + +type PlatformCategoryEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PLATFORM_CATEGORY_NULL PlatformCategoryEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_CONSOLE PlatformCategoryEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_ARCADE PlatformCategoryEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PLATFORM PlatformCategoryEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_OPERATING_SYSTEM PlatformCategoryEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_PORTABLE_CONSOLE PlatformCategoryEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PlatformCategoryEnum_COMPUTER PlatformCategoryEnum = 6 +) + +// Enum value maps for PlatformCategoryEnum. +var ( + PlatformCategoryEnum_name = map[int32]string{ + 0: "PLATFORM_CATEGORY_NULL", + 1: "CONSOLE", + 2: "ARCADE", + 3: "PLATFORM", + 4: "OPERATING_SYSTEM", + 5: "PORTABLE_CONSOLE", + 6: "COMPUTER", + } + PlatformCategoryEnum_value = map[string]int32{ + "PLATFORM_CATEGORY_NULL": 0, + "CONSOLE": 1, + "ARCADE": 2, + "PLATFORM": 3, + "OPERATING_SYSTEM": 4, + "PORTABLE_CONSOLE": 5, + "COMPUTER": 6, + } +) + +func (x PlatformCategoryEnum) Enum() *PlatformCategoryEnum { + p := new(PlatformCategoryEnum) + *p = x + return p +} + +func (x PlatformCategoryEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PlatformCategoryEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[13].Descriptor() +} + +func (PlatformCategoryEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[13] +} + +func (x PlatformCategoryEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PlatformCategoryEnum.Descriptor instead. +func (PlatformCategoryEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} +} + +type RegionRegionEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_REGION_REGION_NULL RegionRegionEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_EUROPE RegionRegionEnum = 1 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_NORTH_AMERICA RegionRegionEnum = 2 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_AUSTRALIA RegionRegionEnum = 3 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_NEW_ZEALAND RegionRegionEnum = 4 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_JAPAN RegionRegionEnum = 5 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_CHINA RegionRegionEnum = 6 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_ASIA RegionRegionEnum = 7 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_WORLDWIDE RegionRegionEnum = 8 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_KOREA RegionRegionEnum = 9 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + RegionRegionEnum_BRAZIL RegionRegionEnum = 10 +) + +// Enum value maps for RegionRegionEnum. +var ( + RegionRegionEnum_name = map[int32]string{ + 0: "REGION_REGION_NULL", + 1: "EUROPE", + 2: "NORTH_AMERICA", + 3: "AUSTRALIA", + 4: "NEW_ZEALAND", + 5: "JAPAN", + 6: "CHINA", + 7: "ASIA", + 8: "WORLDWIDE", + 9: "KOREA", + 10: "BRAZIL", + } + RegionRegionEnum_value = map[string]int32{ + "REGION_REGION_NULL": 0, + "EUROPE": 1, + "NORTH_AMERICA": 2, + "AUSTRALIA": 3, + "NEW_ZEALAND": 4, + "JAPAN": 5, + "CHINA": 6, + "ASIA": 7, + "WORLDWIDE": 8, + "KOREA": 9, + "BRAZIL": 10, + } +) + +func (x RegionRegionEnum) Enum() *RegionRegionEnum { + p := new(RegionRegionEnum) + *p = x + return p +} + +func (x RegionRegionEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RegionRegionEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[14].Descriptor() +} + +func (RegionRegionEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[14] +} + +func (x RegionRegionEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RegionRegionEnum.Descriptor instead. +func (RegionRegionEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} +} + +type PopularitySourcePopularitySourceEnum int32 + +const ( + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL PopularitySourcePopularitySourceEnum = 0 + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySourcePopularitySourceEnum_IGDB PopularitySourcePopularitySourceEnum = 121 +) + +// Enum value maps for PopularitySourcePopularitySourceEnum. +var ( + PopularitySourcePopularitySourceEnum_name = map[int32]string{ + 0: "POPULARITYSOURCE_POPULARITY_SOURCE_NULL", + 121: "IGDB", + } + PopularitySourcePopularitySourceEnum_value = map[string]int32{ + "POPULARITYSOURCE_POPULARITY_SOURCE_NULL": 0, + "IGDB": 121, + } +) + +func (x PopularitySourcePopularitySourceEnum) Enum() *PopularitySourcePopularitySourceEnum { + p := new(PopularitySourcePopularitySourceEnum) + *p = x + return p +} + +func (x PopularitySourcePopularitySourceEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PopularitySourcePopularitySourceEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[15].Descriptor() +} + +func (PopularitySourcePopularitySourceEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[15] +} + +func (x PopularitySourcePopularitySourceEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PopularitySourcePopularitySourceEnum.Descriptor instead. +func (PopularitySourcePopularitySourceEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} +} + +type TestDummyEnumTestEnum int32 + +const ( + TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL TestDummyEnumTestEnum = 0 + TestDummyEnumTestEnum_ENUM1 TestDummyEnumTestEnum = 1 + TestDummyEnumTestEnum_ENUM2 TestDummyEnumTestEnum = 2 +) + +// Enum value maps for TestDummyEnumTestEnum. +var ( + TestDummyEnumTestEnum_name = map[int32]string{ + 0: "TESTDUMMY_ENUM_TEST_NULL", + 1: "ENUM1", + 2: "ENUM2", + } + TestDummyEnumTestEnum_value = map[string]int32{ + "TESTDUMMY_ENUM_TEST_NULL": 0, + "ENUM1": 1, + "ENUM2": 2, + } +) + +func (x TestDummyEnumTestEnum) Enum() *TestDummyEnumTestEnum { + p := new(TestDummyEnumTestEnum) + *p = x + return p +} + +func (x TestDummyEnumTestEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TestDummyEnumTestEnum) Descriptor() protoreflect.EnumDescriptor { + return file_proto_igdbapi_proto_enumTypes[16].Descriptor() +} + +func (TestDummyEnumTestEnum) Type() protoreflect.EnumType { + return &file_proto_igdbapi_proto_enumTypes[16] +} + +func (x TestDummyEnumTestEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TestDummyEnumTestEnum.Descriptor instead. +func (TestDummyEnumTestEnum) EnumDescriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} +} + +type Count struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Count) Reset() { + *x = Count{} + mi := &file_proto_igdbapi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Count) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Count) ProtoMessage() {} + +func (x *Count) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Count.ProtoReflect.Descriptor instead. +func (*Count) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} +} + +func (x *Count) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type MultiQueryResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Results [][]byte `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` + Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiQueryResult) Reset() { + *x = MultiQueryResult{} + mi := &file_proto_igdbapi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiQueryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiQueryResult) ProtoMessage() {} + +func (x *MultiQueryResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiQueryResult.ProtoReflect.Descriptor instead. +func (*MultiQueryResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} +} + +func (x *MultiQueryResult) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MultiQueryResult) GetResults() [][]byte { + if x != nil { + return x.Results + } + return nil +} + +func (x *MultiQueryResult) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type MultiQueryResultArray struct { + state protoimpl.MessageState `protogen:"open.v1"` + Result []*MultiQueryResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiQueryResultArray) Reset() { + *x = MultiQueryResultArray{} + mi := &file_proto_igdbapi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiQueryResultArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiQueryResultArray) ProtoMessage() {} + +func (x *MultiQueryResultArray) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiQueryResultArray.ProtoReflect.Descriptor instead. +func (*MultiQueryResultArray) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} +} + +func (x *MultiQueryResultArray) GetResult() []*MultiQueryResult { + if x != nil { + return x.Result + } + return nil +} + +type AgeRatingResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratings []*AgeRating `protobuf:"bytes,1,rep,name=ageratings,proto3" json:"ageratings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingResult) Reset() { + *x = AgeRatingResult{} + mi := &file_proto_igdbapi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingResult) ProtoMessage() {} + +func (x *AgeRatingResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingResult.ProtoReflect.Descriptor instead. +func (*AgeRatingResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} +} + +func (x *AgeRatingResult) GetAgeratings() []*AgeRating { + if x != nil { + return x.Ageratings + } + return nil +} + +type AgeRating struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category AgeRatingCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingCategoryEnum" json:"category,omitempty"` + ContentDescriptions []*AgeRatingContentDescription `protobuf:"bytes,3,rep,name=content_descriptions,json=contentDescriptions,proto3" json:"content_descriptions,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Rating AgeRatingRatingEnum `protobuf:"varint,4,opt,name=rating,proto3,enum=proto.AgeRatingRatingEnum" json:"rating,omitempty"` + RatingCoverUrl string `protobuf:"bytes,5,opt,name=rating_cover_url,json=ratingCoverUrl,proto3" json:"rating_cover_url,omitempty"` + Synopsis string `protobuf:"bytes,6,opt,name=synopsis,proto3" json:"synopsis,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,8,opt,name=organization,proto3" json:"organization,omitempty"` + RatingCategory *AgeRatingCategory `protobuf:"bytes,9,opt,name=rating_category,json=ratingCategory,proto3" json:"rating_category,omitempty"` + RatingContentDescriptions []*AgeRatingContentDescriptionV2 `protobuf:"bytes,10,rep,name=rating_content_descriptions,json=ratingContentDescriptions,proto3" json:"rating_content_descriptions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRating) Reset() { + *x = AgeRating{} + mi := &file_proto_igdbapi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRating) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRating) ProtoMessage() {} + +func (x *AgeRating) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRating.ProtoReflect.Descriptor instead. +func (*AgeRating) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} +} + +func (x *AgeRating) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRating) GetCategory() AgeRatingCategoryEnum { + if x != nil { + return x.Category + } + return AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL +} + +func (x *AgeRating) GetContentDescriptions() []*AgeRatingContentDescription { + if x != nil { + return x.ContentDescriptions + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRating) GetRating() AgeRatingRatingEnum { + if x != nil { + return x.Rating + } + return AgeRatingRatingEnum_AGERATING_RATING_NULL +} + +func (x *AgeRating) GetRatingCoverUrl() string { + if x != nil { + return x.RatingCoverUrl + } + return "" +} + +func (x *AgeRating) GetSynopsis() string { + if x != nil { + return x.Synopsis + } + return "" +} + +func (x *AgeRating) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *AgeRating) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRating) GetRatingCategory() *AgeRatingCategory { + if x != nil { + return x.RatingCategory + } + return nil +} + +func (x *AgeRating) GetRatingContentDescriptions() []*AgeRatingContentDescriptionV2 { + if x != nil { + return x.RatingContentDescriptions + } + return nil +} + +type AgeRatingCategoryResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcategories []*AgeRatingCategory `protobuf:"bytes,1,rep,name=ageratingcategories,proto3" json:"ageratingcategories,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingCategoryResult) Reset() { + *x = AgeRatingCategoryResult{} + mi := &file_proto_igdbapi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingCategoryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingCategoryResult) ProtoMessage() {} + +func (x *AgeRatingCategoryResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingCategoryResult.ProtoReflect.Descriptor instead. +func (*AgeRatingCategoryResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} +} + +func (x *AgeRatingCategoryResult) GetAgeratingcategories() []*AgeRatingCategory { + if x != nil { + return x.Ageratingcategories + } + return nil +} + +type AgeRatingCategory struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Rating string `protobuf:"bytes,2,opt,name=rating,proto3" json:"rating,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingCategory) Reset() { + *x = AgeRatingCategory{} + mi := &file_proto_igdbapi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingCategory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingCategory) ProtoMessage() {} + +func (x *AgeRatingCategory) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingCategory.ProtoReflect.Descriptor instead. +func (*AgeRatingCategory) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} +} + +func (x *AgeRatingCategory) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingCategory) GetRating() string { + if x != nil { + return x.Rating + } + return "" +} + +func (x *AgeRatingCategory) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRatingCategory) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingCategory) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingCategory) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingContentDescriptionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcontentdescriptions []*AgeRatingContentDescription `protobuf:"bytes,1,rep,name=ageratingcontentdescriptions,proto3" json:"ageratingcontentdescriptions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionResult) Reset() { + *x = AgeRatingContentDescriptionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionResult) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionResult.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} +} + +func (x *AgeRatingContentDescriptionResult) GetAgeratingcontentdescriptions() []*AgeRatingContentDescription { + if x != nil { + return x.Ageratingcontentdescriptions + } + return nil +} + +type AgeRatingContentDescription struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category AgeRatingContentDescriptionCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingContentDescriptionCategoryEnum" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescription) Reset() { + *x = AgeRatingContentDescription{} + mi := &file_proto_igdbapi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescription) ProtoMessage() {} + +func (x *AgeRatingContentDescription) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescription.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescription) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} +} + +func (x *AgeRatingContentDescription) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *AgeRatingContentDescription) GetCategory() AgeRatingContentDescriptionCategoryEnum { + if x != nil { + return x.Category + } + return AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL +} + +func (x *AgeRatingContentDescription) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *AgeRatingContentDescription) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingContentDescriptionV2Result struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingcontentdescriptionsv2 []*AgeRatingContentDescriptionV2 `protobuf:"bytes,1,rep,name=ageratingcontentdescriptionsv2,proto3" json:"ageratingcontentdescriptionsv2,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionV2Result) Reset() { + *x = AgeRatingContentDescriptionV2Result{} + mi := &file_proto_igdbapi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionV2Result) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionV2Result) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionV2Result) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionV2Result.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionV2Result) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} +} + +func (x *AgeRatingContentDescriptionV2Result) GetAgeratingcontentdescriptionsv2() []*AgeRatingContentDescriptionV2 { + if x != nil { + return x.Ageratingcontentdescriptionsv2 + } + return nil +} + +type AgeRatingContentDescriptionV2 struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingContentDescriptionV2) Reset() { + *x = AgeRatingContentDescriptionV2{} + mi := &file_proto_igdbapi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingContentDescriptionV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingContentDescriptionV2) ProtoMessage() {} + +func (x *AgeRatingContentDescriptionV2) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingContentDescriptionV2.ProtoReflect.Descriptor instead. +func (*AgeRatingContentDescriptionV2) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} +} + +func (x *AgeRatingContentDescriptionV2) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingContentDescriptionV2) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *AgeRatingContentDescriptionV2) GetOrganization() *AgeRatingOrganization { + if x != nil { + return x.Organization + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingContentDescriptionV2) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AgeRatingOrganizationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ageratingorganizations []*AgeRatingOrganization `protobuf:"bytes,1,rep,name=ageratingorganizations,proto3" json:"ageratingorganizations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingOrganizationResult) Reset() { + *x = AgeRatingOrganizationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingOrganizationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingOrganizationResult) ProtoMessage() {} + +func (x *AgeRatingOrganizationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingOrganizationResult.ProtoReflect.Descriptor instead. +func (*AgeRatingOrganizationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} +} + +func (x *AgeRatingOrganizationResult) GetAgeratingorganizations() []*AgeRatingOrganization { + if x != nil { + return x.Ageratingorganizations + } + return nil +} + +type AgeRatingOrganization struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AgeRatingOrganization) Reset() { + *x = AgeRatingOrganization{} + mi := &file_proto_igdbapi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AgeRatingOrganization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgeRatingOrganization) ProtoMessage() {} + +func (x *AgeRatingOrganization) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgeRatingOrganization.ProtoReflect.Descriptor instead. +func (*AgeRatingOrganization) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} +} + +func (x *AgeRatingOrganization) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AgeRatingOrganization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AgeRatingOrganization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AgeRatingOrganization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *AgeRatingOrganization) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type AlternativeNameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Alternativenames []*AlternativeName `protobuf:"bytes,1,rep,name=alternativenames,proto3" json:"alternativenames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlternativeNameResult) Reset() { + *x = AlternativeNameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlternativeNameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeNameResult) ProtoMessage() {} + +func (x *AlternativeNameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeNameResult.ProtoReflect.Descriptor instead. +func (*AlternativeNameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} +} + +func (x *AlternativeNameResult) GetAlternativenames() []*AlternativeName { + if x != nil { + return x.Alternativenames + } + return nil +} + +type AlternativeName struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlternativeName) Reset() { + *x = AlternativeName{} + mi := &file_proto_igdbapi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlternativeName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeName) ProtoMessage() {} + +func (x *AlternativeName) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeName.ProtoReflect.Descriptor instead. +func (*AlternativeName) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} +} + +func (x *AlternativeName) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *AlternativeName) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *AlternativeName) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *AlternativeName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlternativeName) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ArtworkResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artworks []*Artwork `protobuf:"bytes,1,rep,name=artworks,proto3" json:"artworks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtworkResult) Reset() { + *x = ArtworkResult{} + mi := &file_proto_igdbapi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtworkResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtworkResult) ProtoMessage() {} + +func (x *ArtworkResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtworkResult.ProtoReflect.Descriptor instead. +func (*ArtworkResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} +} + +func (x *ArtworkResult) GetArtworks() []*Artwork { + if x != nil { + return x.Artworks + } + return nil +} + +type Artwork struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Artwork) Reset() { + *x = Artwork{} + mi := &file_proto_igdbapi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Artwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Artwork) ProtoMessage() {} + +func (x *Artwork) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Artwork.ProtoReflect.Descriptor instead. +func (*Artwork) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} +} + +func (x *Artwork) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Artwork) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Artwork) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Artwork) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Artwork) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Artwork) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Artwork) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Artwork) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Artwork) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Characters []*Character `protobuf:"bytes,1,rep,name=characters,proto3" json:"characters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterResult) Reset() { + *x = CharacterResult{} + mi := &file_proto_igdbapi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterResult) ProtoMessage() {} + +func (x *CharacterResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterResult.ProtoReflect.Descriptor instead. +func (*CharacterResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{17} +} + +func (x *CharacterResult) GetCharacters() []*Character { + if x != nil { + return x.Characters + } + return nil +} + +type Character struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Akas []string `protobuf:"bytes,2,rep,name=akas,proto3" json:"akas,omitempty"` + CountryName string `protobuf:"bytes,3,opt,name=country_name,json=countryName,proto3" json:"country_name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Games []*Game `protobuf:"bytes,6,rep,name=games,proto3" json:"games,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Gender GenderGenderEnum `protobuf:"varint,7,opt,name=gender,proto3,enum=proto.GenderGenderEnum" json:"gender,omitempty"` + MugShot *CharacterMugShot `protobuf:"bytes,8,opt,name=mug_shot,json=mugShot,proto3" json:"mug_shot,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Species CharacterSpeciesEnum `protobuf:"varint,11,opt,name=species,proto3,enum=proto.CharacterSpeciesEnum" json:"species,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,14,opt,name=checksum,proto3" json:"checksum,omitempty"` + CharacterGender *CharacterGender `protobuf:"bytes,15,opt,name=character_gender,json=characterGender,proto3" json:"character_gender,omitempty"` + CharacterSpecies *CharacterSpecie `protobuf:"bytes,16,opt,name=character_species,json=characterSpecies,proto3" json:"character_species,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Character) Reset() { + *x = Character{} + mi := &file_proto_igdbapi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Character) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Character) ProtoMessage() {} + +func (x *Character) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Character.ProtoReflect.Descriptor instead. +func (*Character) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{18} +} + +func (x *Character) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Character) GetAkas() []string { + if x != nil { + return x.Akas + } + return nil +} + +func (x *Character) GetCountryName() string { + if x != nil { + return x.CountryName + } + return "" +} + +func (x *Character) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Character) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Character) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Character) GetGender() GenderGenderEnum { + if x != nil { + return x.Gender + } + return GenderGenderEnum_MALE +} + +func (x *Character) GetMugShot() *CharacterMugShot { + if x != nil { + return x.MugShot + } + return nil +} + +func (x *Character) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Character) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Character) GetSpecies() CharacterSpeciesEnum { + if x != nil { + return x.Species + } + return CharacterSpeciesEnum_CHARACTER_SPECIES_NULL +} + +func (x *Character) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Character) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Character) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Character) GetCharacterGender() *CharacterGender { + if x != nil { + return x.CharacterGender + } + return nil +} + +func (x *Character) GetCharacterSpecies() *CharacterSpecie { + if x != nil { + return x.CharacterSpecies + } + return nil +} + +type CharacterGenderResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Charactergenders []*CharacterGender `protobuf:"bytes,1,rep,name=charactergenders,proto3" json:"charactergenders,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterGenderResult) Reset() { + *x = CharacterGenderResult{} + mi := &file_proto_igdbapi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterGenderResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterGenderResult) ProtoMessage() {} + +func (x *CharacterGenderResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterGenderResult.ProtoReflect.Descriptor instead. +func (*CharacterGenderResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{19} +} + +func (x *CharacterGenderResult) GetCharactergenders() []*CharacterGender { + if x != nil { + return x.Charactergenders + } + return nil +} + +type CharacterGender struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterGender) Reset() { + *x = CharacterGender{} + mi := &file_proto_igdbapi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterGender) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterGender) ProtoMessage() {} + +func (x *CharacterGender) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterGender.ProtoReflect.Descriptor instead. +func (*CharacterGender) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{20} +} + +func (x *CharacterGender) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterGender) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CharacterGender) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CharacterGender) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CharacterGender) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterMugShotResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Charactermugshots []*CharacterMugShot `protobuf:"bytes,1,rep,name=charactermugshots,proto3" json:"charactermugshots,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterMugShotResult) Reset() { + *x = CharacterMugShotResult{} + mi := &file_proto_igdbapi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterMugShotResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterMugShotResult) ProtoMessage() {} + +func (x *CharacterMugShotResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterMugShotResult.ProtoReflect.Descriptor instead. +func (*CharacterMugShotResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{21} +} + +func (x *CharacterMugShotResult) GetCharactermugshots() []*CharacterMugShot { + if x != nil { + return x.Charactermugshots + } + return nil +} + +type CharacterMugShot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterMugShot) Reset() { + *x = CharacterMugShot{} + mi := &file_proto_igdbapi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterMugShot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterMugShot) ProtoMessage() {} + +func (x *CharacterMugShot) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterMugShot.ProtoReflect.Descriptor instead. +func (*CharacterMugShot) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{22} +} + +func (x *CharacterMugShot) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterMugShot) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *CharacterMugShot) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *CharacterMugShot) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *CharacterMugShot) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CharacterMugShot) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CharacterMugShot) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *CharacterMugShot) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CharacterSpecieResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Characterspecies []*CharacterSpecie `protobuf:"bytes,1,rep,name=characterspecies,proto3" json:"characterspecies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterSpecieResult) Reset() { + *x = CharacterSpecieResult{} + mi := &file_proto_igdbapi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterSpecieResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterSpecieResult) ProtoMessage() {} + +func (x *CharacterSpecieResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterSpecieResult.ProtoReflect.Descriptor instead. +func (*CharacterSpecieResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{23} +} + +func (x *CharacterSpecieResult) GetCharacterspecies() []*CharacterSpecie { + if x != nil { + return x.Characterspecies + } + return nil +} + +type CharacterSpecie struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CharacterSpecie) Reset() { + *x = CharacterSpecie{} + mi := &file_proto_igdbapi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CharacterSpecie) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CharacterSpecie) ProtoMessage() {} + +func (x *CharacterSpecie) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CharacterSpecie.ProtoReflect.Descriptor instead. +func (*CharacterSpecie) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{24} +} + +func (x *CharacterSpecie) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CharacterSpecie) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CharacterSpecie) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CharacterSpecie) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CharacterSpecie) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collections []*Collection `protobuf:"bytes,1,rep,name=collections,proto3" json:"collections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionResult) Reset() { + *x = CollectionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionResult) ProtoMessage() {} + +func (x *CollectionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionResult.ProtoReflect.Descriptor instead. +func (*CollectionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{25} +} + +func (x *CollectionResult) GetCollections() []*Collection { + if x != nil { + return x.Collections + } + return nil +} + +type Collection struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *CollectionType `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"` + AsParentRelations []*CollectionRelation `protobuf:"bytes,10,rep,name=as_parent_relations,json=asParentRelations,proto3" json:"as_parent_relations,omitempty"` + AsChildRelations []*CollectionRelation `protobuf:"bytes,11,rep,name=as_child_relations,json=asChildRelations,proto3" json:"as_child_relations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Collection) Reset() { + *x = Collection{} + mi := &file_proto_igdbapi_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Collection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Collection) ProtoMessage() {} + +func (x *Collection) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Collection.ProtoReflect.Descriptor instead. +func (*Collection) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{26} +} + +func (x *Collection) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Collection) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Collection) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Collection) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Collection) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Collection) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Collection) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Collection) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Collection) GetType() *CollectionType { + if x != nil { + return x.Type + } + return nil +} + +func (x *Collection) GetAsParentRelations() []*CollectionRelation { + if x != nil { + return x.AsParentRelations + } + return nil +} + +func (x *Collection) GetAsChildRelations() []*CollectionRelation { + if x != nil { + return x.AsChildRelations + } + return nil +} + +type CollectionMembershipResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionmemberships []*CollectionMembership `protobuf:"bytes,1,rep,name=collectionmemberships,proto3" json:"collectionmemberships,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipResult) Reset() { + *x = CollectionMembershipResult{} + mi := &file_proto_igdbapi_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipResult) ProtoMessage() {} + +func (x *CollectionMembershipResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipResult.ProtoReflect.Descriptor instead. +func (*CollectionMembershipResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{27} +} + +func (x *CollectionMembershipResult) GetCollectionmemberships() []*CollectionMembership { + if x != nil { + return x.Collectionmemberships + } + return nil +} + +type CollectionMembership struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Collection *Collection `protobuf:"bytes,3,opt,name=collection,proto3" json:"collection,omitempty"` + Type *CollectionMembershipType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembership) Reset() { + *x = CollectionMembership{} + mi := &file_proto_igdbapi_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembership) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembership) ProtoMessage() {} + +func (x *CollectionMembership) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembership.ProtoReflect.Descriptor instead. +func (*CollectionMembership) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{28} +} + +func (x *CollectionMembership) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionMembership) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *CollectionMembership) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *CollectionMembership) GetType() *CollectionMembershipType { + if x != nil { + return x.Type + } + return nil +} + +func (x *CollectionMembership) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionMembership) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionMembership) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionMembershipTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionmembershiptypes []*CollectionMembershipType `protobuf:"bytes,1,rep,name=collectionmembershiptypes,proto3" json:"collectionmembershiptypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipTypeResult) Reset() { + *x = CollectionMembershipTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipTypeResult) ProtoMessage() {} + +func (x *CollectionMembershipTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionMembershipTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{29} +} + +func (x *CollectionMembershipTypeResult) GetCollectionmembershiptypes() []*CollectionMembershipType { + if x != nil { + return x.Collectionmembershiptypes + } + return nil +} + +type CollectionMembershipType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + AllowedCollectionType *CollectionType `protobuf:"bytes,4,opt,name=allowed_collection_type,json=allowedCollectionType,proto3" json:"allowed_collection_type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionMembershipType) Reset() { + *x = CollectionMembershipType{} + mi := &file_proto_igdbapi_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionMembershipType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionMembershipType) ProtoMessage() {} + +func (x *CollectionMembershipType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionMembershipType.ProtoReflect.Descriptor instead. +func (*CollectionMembershipType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{30} +} + +func (x *CollectionMembershipType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionMembershipType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionMembershipType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionMembershipType) GetAllowedCollectionType() *CollectionType { + if x != nil { + return x.AllowedCollectionType + } + return nil +} + +func (x *CollectionMembershipType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionMembershipType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionMembershipType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionRelationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionrelations []*CollectionRelation `protobuf:"bytes,1,rep,name=collectionrelations,proto3" json:"collectionrelations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationResult) Reset() { + *x = CollectionRelationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationResult) ProtoMessage() {} + +func (x *CollectionRelationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationResult.ProtoReflect.Descriptor instead. +func (*CollectionRelationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{31} +} + +func (x *CollectionRelationResult) GetCollectionrelations() []*CollectionRelation { + if x != nil { + return x.Collectionrelations + } + return nil +} + +type CollectionRelation struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ChildCollection *Collection `protobuf:"bytes,2,opt,name=child_collection,json=childCollection,proto3" json:"child_collection,omitempty"` + ParentCollection *Collection `protobuf:"bytes,3,opt,name=parent_collection,json=parentCollection,proto3" json:"parent_collection,omitempty"` + Type *CollectionRelationType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelation) Reset() { + *x = CollectionRelation{} + mi := &file_proto_igdbapi_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelation) ProtoMessage() {} + +func (x *CollectionRelation) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelation.ProtoReflect.Descriptor instead. +func (*CollectionRelation) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{32} +} + +func (x *CollectionRelation) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionRelation) GetChildCollection() *Collection { + if x != nil { + return x.ChildCollection + } + return nil +} + +func (x *CollectionRelation) GetParentCollection() *Collection { + if x != nil { + return x.ParentCollection + } + return nil +} + +func (x *CollectionRelation) GetType() *CollectionRelationType { + if x != nil { + return x.Type + } + return nil +} + +func (x *CollectionRelation) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionRelation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionRelation) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionRelationTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectionrelationtypes []*CollectionRelationType `protobuf:"bytes,1,rep,name=collectionrelationtypes,proto3" json:"collectionrelationtypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationTypeResult) Reset() { + *x = CollectionRelationTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationTypeResult) ProtoMessage() {} + +func (x *CollectionRelationTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionRelationTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{33} +} + +func (x *CollectionRelationTypeResult) GetCollectionrelationtypes() []*CollectionRelationType { + if x != nil { + return x.Collectionrelationtypes + } + return nil +} + +type CollectionRelationType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + AllowedChildType *CollectionType `protobuf:"bytes,4,opt,name=allowed_child_type,json=allowedChildType,proto3" json:"allowed_child_type,omitempty"` + AllowedParentType *CollectionType `protobuf:"bytes,5,opt,name=allowed_parent_type,json=allowedParentType,proto3" json:"allowed_parent_type,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionRelationType) Reset() { + *x = CollectionRelationType{} + mi := &file_proto_igdbapi_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionRelationType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionRelationType) ProtoMessage() {} + +func (x *CollectionRelationType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionRelationType.ProtoReflect.Descriptor instead. +func (*CollectionRelationType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{34} +} + +func (x *CollectionRelationType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionRelationType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionRelationType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionRelationType) GetAllowedChildType() *CollectionType { + if x != nil { + return x.AllowedChildType + } + return nil +} + +func (x *CollectionRelationType) GetAllowedParentType() *CollectionType { + if x != nil { + return x.AllowedParentType + } + return nil +} + +func (x *CollectionRelationType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionRelationType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionRelationType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CollectionTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collectiontypes []*CollectionType `protobuf:"bytes,1,rep,name=collectiontypes,proto3" json:"collectiontypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionTypeResult) Reset() { + *x = CollectionTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionTypeResult) ProtoMessage() {} + +func (x *CollectionTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionTypeResult.ProtoReflect.Descriptor instead. +func (*CollectionTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{35} +} + +func (x *CollectionTypeResult) GetCollectiontypes() []*CollectionType { + if x != nil { + return x.Collectiontypes + } + return nil +} + +type CollectionType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollectionType) Reset() { + *x = CollectionType{} + mi := &file_proto_igdbapi_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollectionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectionType) ProtoMessage() {} + +func (x *CollectionType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectionType.ProtoReflect.Descriptor instead. +func (*CollectionType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{36} +} + +func (x *CollectionType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CollectionType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CollectionType) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CollectionType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CollectionType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CollectionType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companies []*Company `protobuf:"bytes,1,rep,name=companies,proto3" json:"companies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyResult) Reset() { + *x = CompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyResult) ProtoMessage() {} + +func (x *CompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyResult.ProtoReflect.Descriptor instead. +func (*CompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{37} +} + +func (x *CompanyResult) GetCompanies() []*Company { + if x != nil { + return x.Companies + } + return nil +} + +type Company struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ChangeDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + ChangeDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,3,opt,name=change_date_category,json=changeDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"change_date_category,omitempty"` + ChangedCompanyId *Company `protobuf:"bytes,4,opt,name=changed_company_id,json=changedCompanyId,proto3" json:"changed_company_id,omitempty"` + Country int32 `protobuf:"varint,5,opt,name=country,proto3" json:"country,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` + Developed []*Game `protobuf:"bytes,8,rep,name=developed,proto3" json:"developed,omitempty"` + Logo *CompanyLogo `protobuf:"bytes,9,opt,name=logo,proto3" json:"logo,omitempty"` + Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` + Parent *Company `protobuf:"bytes,11,opt,name=parent,proto3" json:"parent,omitempty"` + Published []*Game `protobuf:"bytes,12,rep,name=published,proto3" json:"published,omitempty"` + Slug string `protobuf:"bytes,13,opt,name=slug,proto3" json:"slug,omitempty"` + StartDate *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + StartDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,15,opt,name=start_date_category,json=startDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"start_date_category,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` + Websites []*CompanyWebsite `protobuf:"bytes,18,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,19,opt,name=checksum,proto3" json:"checksum,omitempty"` + Status *CompanyStatus `protobuf:"bytes,20,opt,name=status,proto3" json:"status,omitempty"` + StartDateFormat *DateFormat `protobuf:"bytes,21,opt,name=start_date_format,json=startDateFormat,proto3" json:"start_date_format,omitempty"` + ChangeDateFormat *DateFormat `protobuf:"bytes,22,opt,name=change_date_format,json=changeDateFormat,proto3" json:"change_date_format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Company) Reset() { + *x = Company{} + mi := &file_proto_igdbapi_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Company) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Company) ProtoMessage() {} + +func (x *Company) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Company.ProtoReflect.Descriptor instead. +func (*Company) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{38} +} + +func (x *Company) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Company) GetChangeDate() *timestamppb.Timestamp { + if x != nil { + return x.ChangeDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Company) GetChangeDateCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.ChangeDateCategory + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *Company) GetChangedCompanyId() *Company { + if x != nil { + return x.ChangedCompanyId + } + return nil +} + +func (x *Company) GetCountry() int32 { + if x != nil { + return x.Country + } + return 0 +} + +func (x *Company) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Company) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Company) GetDeveloped() []*Game { + if x != nil { + return x.Developed + } + return nil +} + +func (x *Company) GetLogo() *CompanyLogo { + if x != nil { + return x.Logo + } + return nil +} + +func (x *Company) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Company) GetParent() *Company { + if x != nil { + return x.Parent + } + return nil +} + +func (x *Company) GetPublished() []*Game { + if x != nil { + return x.Published + } + return nil +} + +func (x *Company) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Company) GetStartDate() *timestamppb.Timestamp { + if x != nil { + return x.StartDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Company) GetStartDateCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.StartDateCategory + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *Company) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Company) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Company) GetWebsites() []*CompanyWebsite { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Company) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Company) GetStatus() *CompanyStatus { + if x != nil { + return x.Status + } + return nil +} + +func (x *Company) GetStartDateFormat() *DateFormat { + if x != nil { + return x.StartDateFormat + } + return nil +} + +func (x *Company) GetChangeDateFormat() *DateFormat { + if x != nil { + return x.ChangeDateFormat + } + return nil +} + +type CompanyLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companylogos []*CompanyLogo `protobuf:"bytes,1,rep,name=companylogos,proto3" json:"companylogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyLogoResult) Reset() { + *x = CompanyLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyLogoResult) ProtoMessage() {} + +func (x *CompanyLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyLogoResult.ProtoReflect.Descriptor instead. +func (*CompanyLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{39} +} + +func (x *CompanyLogoResult) GetCompanylogos() []*CompanyLogo { + if x != nil { + return x.Companylogos + } + return nil +} + +type CompanyLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyLogo) Reset() { + *x = CompanyLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyLogo) ProtoMessage() {} + +func (x *CompanyLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyLogo.ProtoReflect.Descriptor instead. +func (*CompanyLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{40} +} + +func (x *CompanyLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CompanyLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *CompanyLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *CompanyLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *CompanyLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *CompanyLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CompanyLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *CompanyLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companystatuses []*CompanyStatus `protobuf:"bytes,1,rep,name=companystatuses,proto3" json:"companystatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyStatusResult) Reset() { + *x = CompanyStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyStatusResult) ProtoMessage() {} + +func (x *CompanyStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyStatusResult.ProtoReflect.Descriptor instead. +func (*CompanyStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{41} +} + +func (x *CompanyStatusResult) GetCompanystatuses() []*CompanyStatus { + if x != nil { + return x.Companystatuses + } + return nil +} + +type CompanyStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyStatus) Reset() { + *x = CompanyStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyStatus) ProtoMessage() {} + +func (x *CompanyStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyStatus.ProtoReflect.Descriptor instead. +func (*CompanyStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{42} +} + +func (x *CompanyStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CompanyStatus) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CompanyStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CompanyStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *CompanyStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type CompanyWebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Companywebsites []*CompanyWebsite `protobuf:"bytes,1,rep,name=companywebsites,proto3" json:"companywebsites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyWebsiteResult) Reset() { + *x = CompanyWebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyWebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyWebsiteResult) ProtoMessage() {} + +func (x *CompanyWebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyWebsiteResult.ProtoReflect.Descriptor instead. +func (*CompanyWebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{43} +} + +func (x *CompanyWebsiteResult) GetCompanywebsites() []*CompanyWebsite { + if x != nil { + return x.Companywebsites + } + return nil +} + +type CompanyWebsite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompanyWebsite) Reset() { + *x = CompanyWebsite{} + mi := &file_proto_igdbapi_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompanyWebsite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompanyWebsite) ProtoMessage() {} + +func (x *CompanyWebsite) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompanyWebsite.ProtoReflect.Descriptor instead. +func (*CompanyWebsite) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{44} +} + +func (x *CompanyWebsite) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *CompanyWebsite) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *CompanyWebsite) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *CompanyWebsite) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *CompanyWebsite) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *CompanyWebsite) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type CoverResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Covers []*Cover `protobuf:"bytes,1,rep,name=covers,proto3" json:"covers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoverResult) Reset() { + *x = CoverResult{} + mi := &file_proto_igdbapi_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoverResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoverResult) ProtoMessage() {} + +func (x *CoverResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoverResult.ProtoReflect.Descriptor instead. +func (*CoverResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{45} +} + +func (x *CoverResult) GetCovers() []*Cover { + if x != nil { + return x.Covers + } + return nil +} + +type Cover struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + GameLocalization *GameLocalization `protobuf:"bytes,10,opt,name=game_localization,json=gameLocalization,proto3" json:"game_localization,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Cover) Reset() { + *x = Cover{} + mi := &file_proto_igdbapi_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Cover) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cover) ProtoMessage() {} + +func (x *Cover) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cover.ProtoReflect.Descriptor instead. +func (*Cover) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{46} +} + +func (x *Cover) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Cover) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Cover) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Cover) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Cover) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Cover) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Cover) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Cover) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Cover) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Cover) GetGameLocalization() *GameLocalization { + if x != nil { + return x.GameLocalization + } + return nil +} + +type DateFormatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dateformats []*DateFormat `protobuf:"bytes,1,rep,name=dateformats,proto3" json:"dateformats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DateFormatResult) Reset() { + *x = DateFormatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DateFormatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DateFormatResult) ProtoMessage() {} + +func (x *DateFormatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DateFormatResult.ProtoReflect.Descriptor instead. +func (*DateFormatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{47} +} + +func (x *DateFormatResult) GetDateformats() []*DateFormat { + if x != nil { + return x.Dateformats + } + return nil +} + +type DateFormat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DateFormat) Reset() { + *x = DateFormat{} + mi := &file_proto_igdbapi_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DateFormat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DateFormat) ProtoMessage() {} + +func (x *DateFormat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DateFormat.ProtoReflect.Descriptor instead. +func (*DateFormat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{48} +} + +func (x *DateFormat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DateFormat) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *DateFormat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *DateFormat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *DateFormat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventResult) Reset() { + *x = EventResult{} + mi := &file_proto_igdbapi_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventResult) ProtoMessage() {} + +func (x *EventResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventResult.ProtoReflect.Descriptor instead. +func (*EventResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{49} +} + +func (x *EventResult) GetEvents() []*Event { + if x != nil { + return x.Events + } + return nil +} + +type Event struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + EventLogo *EventLogo `protobuf:"bytes,5,opt,name=event_logo,json=eventLogo,proto3" json:"event_logo,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + TimeZone string `protobuf:"bytes,7,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"` + EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + LiveStreamUrl string `protobuf:"bytes,9,opt,name=live_stream_url,json=liveStreamUrl,proto3" json:"live_stream_url,omitempty"` + Games []*Game `protobuf:"bytes,10,rep,name=games,proto3" json:"games,omitempty"` + Videos []*GameVideo `protobuf:"bytes,11,rep,name=videos,proto3" json:"videos,omitempty"` + EventNetworks []*EventNetwork `protobuf:"bytes,12,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Event) Reset() { + *x = Event{} + mi := &file_proto_igdbapi_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{50} +} + +func (x *Event) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Event) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Event) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Event) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Event) GetEventLogo() *EventLogo { + if x != nil { + return x.EventLogo + } + return nil +} + +func (x *Event) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *Event) GetTimeZone() string { + if x != nil { + return x.TimeZone + } + return "" +} + +func (x *Event) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *Event) GetLiveStreamUrl() string { + if x != nil { + return x.LiveStreamUrl + } + return "" +} + +func (x *Event) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Event) GetVideos() []*GameVideo { + if x != nil { + return x.Videos + } + return nil +} + +func (x *Event) GetEventNetworks() []*EventNetwork { + if x != nil { + return x.EventNetworks + } + return nil +} + +func (x *Event) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Event) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Event) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Eventlogos []*EventLogo `protobuf:"bytes,1,rep,name=eventlogos,proto3" json:"eventlogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventLogoResult) Reset() { + *x = EventLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventLogoResult) ProtoMessage() {} + +func (x *EventLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventLogoResult.ProtoReflect.Descriptor instead. +func (*EventLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{51} +} + +func (x *EventLogoResult) GetEventlogos() []*EventLogo { + if x != nil { + return x.Eventlogos + } + return nil +} + +type EventLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + AlphaChannel bool `protobuf:"varint,3,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,4,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventLogo) Reset() { + *x = EventLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventLogo) ProtoMessage() {} + +func (x *EventLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventLogo.ProtoReflect.Descriptor instead. +func (*EventLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{52} +} + +func (x *EventLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EventLogo) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *EventLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *EventLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *EventLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *EventLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *EventLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *EventLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *EventLogo) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EventLogo) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EventLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type EventNetworkResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Eventnetworks []*EventNetwork `protobuf:"bytes,1,rep,name=eventnetworks,proto3" json:"eventnetworks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventNetworkResult) Reset() { + *x = EventNetworkResult{} + mi := &file_proto_igdbapi_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventNetworkResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventNetworkResult) ProtoMessage() {} + +func (x *EventNetworkResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventNetworkResult.ProtoReflect.Descriptor instead. +func (*EventNetworkResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{53} +} + +func (x *EventNetworkResult) GetEventnetworks() []*EventNetwork { + if x != nil { + return x.Eventnetworks + } + return nil +} + +type EventNetwork struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + NetworkType *NetworkType `protobuf:"bytes,4,opt,name=network_type,json=networkType,proto3" json:"network_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventNetwork) Reset() { + *x = EventNetwork{} + mi := &file_proto_igdbapi_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventNetwork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventNetwork) ProtoMessage() {} + +func (x *EventNetwork) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventNetwork.ProtoReflect.Descriptor instead. +func (*EventNetwork) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{54} +} + +func (x *EventNetwork) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EventNetwork) GetEvent() *Event { + if x != nil { + return x.Event + } + return nil +} + +func (x *EventNetwork) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *EventNetwork) GetNetworkType() *NetworkType { + if x != nil { + return x.NetworkType + } + return nil +} + +func (x *EventNetwork) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *EventNetwork) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *EventNetwork) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ExternalGameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Externalgames []*ExternalGame `protobuf:"bytes,1,rep,name=externalgames,proto3" json:"externalgames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameResult) Reset() { + *x = ExternalGameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameResult) ProtoMessage() {} + +func (x *ExternalGameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameResult.ProtoReflect.Descriptor instead. +func (*ExternalGameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{55} +} + +func (x *ExternalGameResult) GetExternalgames() []*ExternalGame { + if x != nil { + return x.Externalgames + } + return nil +} + +type ExternalGame struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category ExternalGameCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.ExternalGameCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Uid string `protobuf:"bytes,6,opt,name=uid,proto3" json:"uid,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url,omitempty"` + Year int32 `protobuf:"varint,9,opt,name=year,proto3" json:"year,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Media ExternalGameMediaEnum `protobuf:"varint,10,opt,name=media,proto3,enum=proto.ExternalGameMediaEnum" json:"media,omitempty"` + Platform *Platform `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform,omitempty"` + Countries []int32 `protobuf:"varint,12,rep,packed,name=countries,proto3" json:"countries,omitempty"` + Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalGameSource *ExternalGameSource `protobuf:"bytes,14,opt,name=external_game_source,json=externalGameSource,proto3" json:"external_game_source,omitempty"` + GameReleaseFormat *GameReleaseFormat `protobuf:"bytes,15,opt,name=game_release_format,json=gameReleaseFormat,proto3" json:"game_release_format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGame) Reset() { + *x = ExternalGame{} + mi := &file_proto_igdbapi_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGame) ProtoMessage() {} + +func (x *ExternalGame) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGame.ProtoReflect.Descriptor instead. +func (*ExternalGame) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{56} +} + +func (x *ExternalGame) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ExternalGame) GetCategory() ExternalGameCategoryEnum { + if x != nil { + return x.Category + } + return ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL +} + +func (x *ExternalGame) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ExternalGame) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *ExternalGame) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExternalGame) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *ExternalGame) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ExternalGame) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ExternalGame) GetYear() int32 { + if x != nil { + return x.Year + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ExternalGame) GetMedia() ExternalGameMediaEnum { + if x != nil { + return x.Media + } + return ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL +} + +func (x *ExternalGame) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *ExternalGame) GetCountries() []int32 { + if x != nil { + return x.Countries + } + return nil +} + +func (x *ExternalGame) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *ExternalGame) GetExternalGameSource() *ExternalGameSource { + if x != nil { + return x.ExternalGameSource + } + return nil +} + +func (x *ExternalGame) GetGameReleaseFormat() *GameReleaseFormat { + if x != nil { + return x.GameReleaseFormat + } + return nil +} + +type ExternalGameSourceResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Externalgamesources []*ExternalGameSource `protobuf:"bytes,1,rep,name=externalgamesources,proto3" json:"externalgamesources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameSourceResult) Reset() { + *x = ExternalGameSourceResult{} + mi := &file_proto_igdbapi_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameSourceResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameSourceResult) ProtoMessage() {} + +func (x *ExternalGameSourceResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameSourceResult.ProtoReflect.Descriptor instead. +func (*ExternalGameSourceResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{57} +} + +func (x *ExternalGameSourceResult) GetExternalgamesources() []*ExternalGameSource { + if x != nil { + return x.Externalgamesources + } + return nil +} + +type ExternalGameSource struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalGameSource) Reset() { + *x = ExternalGameSource{} + mi := &file_proto_igdbapi_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalGameSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalGameSource) ProtoMessage() {} + +func (x *ExternalGameSource) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalGameSource.ProtoReflect.Descriptor instead. +func (*ExternalGameSource) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{58} +} + +func (x *ExternalGameSource) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExternalGameSource) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExternalGameSource) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ExternalGameSource) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ExternalGameSource) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type FranchiseResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Franchises []*Franchise `protobuf:"bytes,1,rep,name=franchises,proto3" json:"franchises,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FranchiseResult) Reset() { + *x = FranchiseResult{} + mi := &file_proto_igdbapi_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FranchiseResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FranchiseResult) ProtoMessage() {} + +func (x *FranchiseResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FranchiseResult.ProtoReflect.Descriptor instead. +func (*FranchiseResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{59} +} + +func (x *FranchiseResult) GetFranchises() []*Franchise { + if x != nil { + return x.Franchises + } + return nil +} + +type Franchise struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Franchise) Reset() { + *x = Franchise{} + mi := &file_proto_igdbapi_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Franchise) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Franchise) ProtoMessage() {} + +func (x *Franchise) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[60] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Franchise.ProtoReflect.Descriptor instead. +func (*Franchise) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{60} +} + +func (x *Franchise) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Franchise) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Franchise) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *Franchise) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Franchise) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Franchise) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Franchise) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Franchise) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Games []*Game `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameResult) Reset() { + *x = GameResult{} + mi := &file_proto_igdbapi_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameResult) ProtoMessage() {} + +func (x *GameResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameResult.ProtoReflect.Descriptor instead. +func (*GameResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{61} +} + +func (x *GameResult) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +type Game struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AgeRatings []*AgeRating `protobuf:"bytes,2,rep,name=age_ratings,json=ageRatings,proto3" json:"age_ratings,omitempty"` + AggregatedRating float64 `protobuf:"fixed64,3,opt,name=aggregated_rating,json=aggregatedRating,proto3" json:"aggregated_rating,omitempty"` + AggregatedRatingCount int32 `protobuf:"varint,4,opt,name=aggregated_rating_count,json=aggregatedRatingCount,proto3" json:"aggregated_rating_count,omitempty"` + AlternativeNames []*AlternativeName `protobuf:"bytes,5,rep,name=alternative_names,json=alternativeNames,proto3" json:"alternative_names,omitempty"` + Artworks []*Artwork `protobuf:"bytes,6,rep,name=artworks,proto3" json:"artworks,omitempty"` + Bundles []*Game `protobuf:"bytes,7,rep,name=bundles,proto3" json:"bundles,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category GameCategoryEnum `protobuf:"varint,8,opt,name=category,proto3,enum=proto.GameCategoryEnum" json:"category,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Collection *Collection `protobuf:"bytes,9,opt,name=collection,proto3" json:"collection,omitempty"` + Cover *Cover `protobuf:"bytes,10,opt,name=cover,proto3" json:"cover,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Dlcs []*Game `protobuf:"bytes,12,rep,name=dlcs,proto3" json:"dlcs,omitempty"` + Expansions []*Game `protobuf:"bytes,13,rep,name=expansions,proto3" json:"expansions,omitempty"` + ExternalGames []*ExternalGame `protobuf:"bytes,14,rep,name=external_games,json=externalGames,proto3" json:"external_games,omitempty"` + FirstReleaseDate *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=first_release_date,json=firstReleaseDate,proto3" json:"first_release_date,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Follows int32 `protobuf:"varint,16,opt,name=follows,proto3" json:"follows,omitempty"` + Franchise *Franchise `protobuf:"bytes,17,opt,name=franchise,proto3" json:"franchise,omitempty"` + Franchises []*Franchise `protobuf:"bytes,18,rep,name=franchises,proto3" json:"franchises,omitempty"` + GameEngines []*GameEngine `protobuf:"bytes,19,rep,name=game_engines,json=gameEngines,proto3" json:"game_engines,omitempty"` + GameModes []*GameMode `protobuf:"bytes,20,rep,name=game_modes,json=gameModes,proto3" json:"game_modes,omitempty"` + Genres []*Genre `protobuf:"bytes,21,rep,name=genres,proto3" json:"genres,omitempty"` + Hypes int32 `protobuf:"varint,22,opt,name=hypes,proto3" json:"hypes,omitempty"` + InvolvedCompanies []*InvolvedCompany `protobuf:"bytes,23,rep,name=involved_companies,json=involvedCompanies,proto3" json:"involved_companies,omitempty"` + Keywords []*Keyword `protobuf:"bytes,24,rep,name=keywords,proto3" json:"keywords,omitempty"` + MultiplayerModes []*MultiplayerMode `protobuf:"bytes,25,rep,name=multiplayer_modes,json=multiplayerModes,proto3" json:"multiplayer_modes,omitempty"` + Name string `protobuf:"bytes,26,opt,name=name,proto3" json:"name,omitempty"` + ParentGame *Game `protobuf:"bytes,27,opt,name=parent_game,json=parentGame,proto3" json:"parent_game,omitempty"` + Platforms []*Platform `protobuf:"bytes,28,rep,name=platforms,proto3" json:"platforms,omitempty"` + PlayerPerspectives []*PlayerPerspective `protobuf:"bytes,29,rep,name=player_perspectives,json=playerPerspectives,proto3" json:"player_perspectives,omitempty"` + Rating float64 `protobuf:"fixed64,30,opt,name=rating,proto3" json:"rating,omitempty"` + RatingCount int32 `protobuf:"varint,31,opt,name=rating_count,json=ratingCount,proto3" json:"rating_count,omitempty"` + ReleaseDates []*ReleaseDate `protobuf:"bytes,32,rep,name=release_dates,json=releaseDates,proto3" json:"release_dates,omitempty"` + Screenshots []*Screenshot `protobuf:"bytes,33,rep,name=screenshots,proto3" json:"screenshots,omitempty"` + SimilarGames []*Game `protobuf:"bytes,34,rep,name=similar_games,json=similarGames,proto3" json:"similar_games,omitempty"` + Slug string `protobuf:"bytes,35,opt,name=slug,proto3" json:"slug,omitempty"` + StandaloneExpansions []*Game `protobuf:"bytes,36,rep,name=standalone_expansions,json=standaloneExpansions,proto3" json:"standalone_expansions,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Status GameStatusEnum `protobuf:"varint,37,opt,name=status,proto3,enum=proto.GameStatusEnum" json:"status,omitempty"` + Storyline string `protobuf:"bytes,38,opt,name=storyline,proto3" json:"storyline,omitempty"` + Summary string `protobuf:"bytes,39,opt,name=summary,proto3" json:"summary,omitempty"` + Tags []int32 `protobuf:"varint,40,rep,packed,name=tags,proto3" json:"tags,omitempty"` + Themes []*Theme `protobuf:"bytes,41,rep,name=themes,proto3" json:"themes,omitempty"` + TotalRating float64 `protobuf:"fixed64,42,opt,name=total_rating,json=totalRating,proto3" json:"total_rating,omitempty"` + TotalRatingCount int32 `protobuf:"varint,43,opt,name=total_rating_count,json=totalRatingCount,proto3" json:"total_rating_count,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,44,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,45,opt,name=url,proto3" json:"url,omitempty"` + VersionParent *Game `protobuf:"bytes,46,opt,name=version_parent,json=versionParent,proto3" json:"version_parent,omitempty"` + VersionTitle string `protobuf:"bytes,47,opt,name=version_title,json=versionTitle,proto3" json:"version_title,omitempty"` + Videos []*GameVideo `protobuf:"bytes,48,rep,name=videos,proto3" json:"videos,omitempty"` + Websites []*Website `protobuf:"bytes,49,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,50,opt,name=checksum,proto3" json:"checksum,omitempty"` + Remakes []*Game `protobuf:"bytes,51,rep,name=remakes,proto3" json:"remakes,omitempty"` + Remasters []*Game `protobuf:"bytes,52,rep,name=remasters,proto3" json:"remasters,omitempty"` + ExpandedGames []*Game `protobuf:"bytes,53,rep,name=expanded_games,json=expandedGames,proto3" json:"expanded_games,omitempty"` + Ports []*Game `protobuf:"bytes,54,rep,name=ports,proto3" json:"ports,omitempty"` + Forks []*Game `protobuf:"bytes,55,rep,name=forks,proto3" json:"forks,omitempty"` + LanguageSupports []*LanguageSupport `protobuf:"bytes,56,rep,name=language_supports,json=languageSupports,proto3" json:"language_supports,omitempty"` + GameLocalizations []*GameLocalization `protobuf:"bytes,57,rep,name=game_localizations,json=gameLocalizations,proto3" json:"game_localizations,omitempty"` + Collections []*Collection `protobuf:"bytes,58,rep,name=collections,proto3" json:"collections,omitempty"` + GameStatus *GameStatus `protobuf:"bytes,59,opt,name=game_status,json=gameStatus,proto3" json:"game_status,omitempty"` + GameType *GameType `protobuf:"bytes,60,opt,name=game_type,json=gameType,proto3" json:"game_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Game) Reset() { + *x = Game{} + mi := &file_proto_igdbapi_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Game) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Game) ProtoMessage() {} + +func (x *Game) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Game.ProtoReflect.Descriptor instead. +func (*Game) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{62} +} + +func (x *Game) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Game) GetAgeRatings() []*AgeRating { + if x != nil { + return x.AgeRatings + } + return nil +} + +func (x *Game) GetAggregatedRating() float64 { + if x != nil { + return x.AggregatedRating + } + return 0 +} + +func (x *Game) GetAggregatedRatingCount() int32 { + if x != nil { + return x.AggregatedRatingCount + } + return 0 +} + +func (x *Game) GetAlternativeNames() []*AlternativeName { + if x != nil { + return x.AlternativeNames + } + return nil +} + +func (x *Game) GetArtworks() []*Artwork { + if x != nil { + return x.Artworks + } + return nil +} + +func (x *Game) GetBundles() []*Game { + if x != nil { + return x.Bundles + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetCategory() GameCategoryEnum { + if x != nil { + return x.Category + } + return GameCategoryEnum_MAIN_GAME +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *Game) GetCover() *Cover { + if x != nil { + return x.Cover + } + return nil +} + +func (x *Game) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Game) GetDlcs() []*Game { + if x != nil { + return x.Dlcs + } + return nil +} + +func (x *Game) GetExpansions() []*Game { + if x != nil { + return x.Expansions + } + return nil +} + +func (x *Game) GetExternalGames() []*ExternalGame { + if x != nil { + return x.ExternalGames + } + return nil +} + +func (x *Game) GetFirstReleaseDate() *timestamppb.Timestamp { + if x != nil { + return x.FirstReleaseDate + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetFollows() int32 { + if x != nil { + return x.Follows + } + return 0 +} + +func (x *Game) GetFranchise() *Franchise { + if x != nil { + return x.Franchise + } + return nil +} + +func (x *Game) GetFranchises() []*Franchise { + if x != nil { + return x.Franchises + } + return nil +} + +func (x *Game) GetGameEngines() []*GameEngine { + if x != nil { + return x.GameEngines + } + return nil +} + +func (x *Game) GetGameModes() []*GameMode { + if x != nil { + return x.GameModes + } + return nil +} + +func (x *Game) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +func (x *Game) GetHypes() int32 { + if x != nil { + return x.Hypes + } + return 0 +} + +func (x *Game) GetInvolvedCompanies() []*InvolvedCompany { + if x != nil { + return x.InvolvedCompanies + } + return nil +} + +func (x *Game) GetKeywords() []*Keyword { + if x != nil { + return x.Keywords + } + return nil +} + +func (x *Game) GetMultiplayerModes() []*MultiplayerMode { + if x != nil { + return x.MultiplayerModes + } + return nil +} + +func (x *Game) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Game) GetParentGame() *Game { + if x != nil { + return x.ParentGame + } + return nil +} + +func (x *Game) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *Game) GetPlayerPerspectives() []*PlayerPerspective { + if x != nil { + return x.PlayerPerspectives + } + return nil +} + +func (x *Game) GetRating() float64 { + if x != nil { + return x.Rating + } + return 0 +} + +func (x *Game) GetRatingCount() int32 { + if x != nil { + return x.RatingCount + } + return 0 +} + +func (x *Game) GetReleaseDates() []*ReleaseDate { + if x != nil { + return x.ReleaseDates + } + return nil +} + +func (x *Game) GetScreenshots() []*Screenshot { + if x != nil { + return x.Screenshots + } + return nil +} + +func (x *Game) GetSimilarGames() []*Game { + if x != nil { + return x.SimilarGames + } + return nil +} + +func (x *Game) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Game) GetStandaloneExpansions() []*Game { + if x != nil { + return x.StandaloneExpansions + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Game) GetStatus() GameStatusEnum { + if x != nil { + return x.Status + } + return GameStatusEnum_RELEASED +} + +func (x *Game) GetStoryline() string { + if x != nil { + return x.Storyline + } + return "" +} + +func (x *Game) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Game) GetTags() []int32 { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Game) GetThemes() []*Theme { + if x != nil { + return x.Themes + } + return nil +} + +func (x *Game) GetTotalRating() float64 { + if x != nil { + return x.TotalRating + } + return 0 +} + +func (x *Game) GetTotalRatingCount() int32 { + if x != nil { + return x.TotalRatingCount + } + return 0 +} + +func (x *Game) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Game) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Game) GetVersionParent() *Game { + if x != nil { + return x.VersionParent + } + return nil +} + +func (x *Game) GetVersionTitle() string { + if x != nil { + return x.VersionTitle + } + return "" +} + +func (x *Game) GetVideos() []*GameVideo { + if x != nil { + return x.Videos + } + return nil +} + +func (x *Game) GetWebsites() []*Website { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Game) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Game) GetRemakes() []*Game { + if x != nil { + return x.Remakes + } + return nil +} + +func (x *Game) GetRemasters() []*Game { + if x != nil { + return x.Remasters + } + return nil +} + +func (x *Game) GetExpandedGames() []*Game { + if x != nil { + return x.ExpandedGames + } + return nil +} + +func (x *Game) GetPorts() []*Game { + if x != nil { + return x.Ports + } + return nil +} + +func (x *Game) GetForks() []*Game { + if x != nil { + return x.Forks + } + return nil +} + +func (x *Game) GetLanguageSupports() []*LanguageSupport { + if x != nil { + return x.LanguageSupports + } + return nil +} + +func (x *Game) GetGameLocalizations() []*GameLocalization { + if x != nil { + return x.GameLocalizations + } + return nil +} + +func (x *Game) GetCollections() []*Collection { + if x != nil { + return x.Collections + } + return nil +} + +func (x *Game) GetGameStatus() *GameStatus { + if x != nil { + return x.GameStatus + } + return nil +} + +func (x *Game) GetGameType() *GameType { + if x != nil { + return x.GameType + } + return nil +} + +type GameEngineResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameengines []*GameEngine `protobuf:"bytes,1,rep,name=gameengines,proto3" json:"gameengines,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineResult) Reset() { + *x = GameEngineResult{} + mi := &file_proto_igdbapi_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineResult) ProtoMessage() {} + +func (x *GameEngineResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineResult.ProtoReflect.Descriptor instead. +func (*GameEngineResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{63} +} + +func (x *GameEngineResult) GetGameengines() []*GameEngine { + if x != nil { + return x.Gameengines + } + return nil +} + +type GameEngine struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Companies []*Company `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Logo *GameEngineLogo `protobuf:"bytes,5,opt,name=logo,proto3" json:"logo,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Platforms []*Platform `protobuf:"bytes,7,rep,name=platforms,proto3" json:"platforms,omitempty"` + Slug string `protobuf:"bytes,8,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,10,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngine) Reset() { + *x = GameEngine{} + mi := &file_proto_igdbapi_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngine) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngine) ProtoMessage() {} + +func (x *GameEngine) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngine.ProtoReflect.Descriptor instead. +func (*GameEngine) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{64} +} + +func (x *GameEngine) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameEngine) GetCompanies() []*Company { + if x != nil { + return x.Companies + } + return nil +} + +func (x *GameEngine) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameEngine) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *GameEngine) GetLogo() *GameEngineLogo { + if x != nil { + return x.Logo + } + return nil +} + +func (x *GameEngine) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameEngine) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +func (x *GameEngine) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *GameEngine) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameEngine) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameEngine) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameEngineLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameenginelogos []*GameEngineLogo `protobuf:"bytes,1,rep,name=gameenginelogos,proto3" json:"gameenginelogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineLogoResult) Reset() { + *x = GameEngineLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineLogoResult) ProtoMessage() {} + +func (x *GameEngineLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[65] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineLogoResult.ProtoReflect.Descriptor instead. +func (*GameEngineLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{65} +} + +func (x *GameEngineLogoResult) GetGameenginelogos() []*GameEngineLogo { + if x != nil { + return x.Gameenginelogos + } + return nil +} + +type GameEngineLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameEngineLogo) Reset() { + *x = GameEngineLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameEngineLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameEngineLogo) ProtoMessage() {} + +func (x *GameEngineLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[66] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameEngineLogo.ProtoReflect.Descriptor instead. +func (*GameEngineLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{66} +} + +func (x *GameEngineLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameEngineLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *GameEngineLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *GameEngineLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GameEngineLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *GameEngineLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameEngineLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *GameEngineLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameLocalizationResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamelocalizations []*GameLocalization `protobuf:"bytes,1,rep,name=gamelocalizations,proto3" json:"gamelocalizations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameLocalizationResult) Reset() { + *x = GameLocalizationResult{} + mi := &file_proto_igdbapi_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameLocalizationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameLocalizationResult) ProtoMessage() {} + +func (x *GameLocalizationResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[67] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameLocalizationResult.ProtoReflect.Descriptor instead. +func (*GameLocalizationResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{67} +} + +func (x *GameLocalizationResult) GetGamelocalizations() []*GameLocalization { + if x != nil { + return x.Gamelocalizations + } + return nil +} + +type GameLocalization struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Cover *Cover `protobuf:"bytes,3,opt,name=cover,proto3" json:"cover,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Region *Region `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameLocalization) Reset() { + *x = GameLocalization{} + mi := &file_proto_igdbapi_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameLocalization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameLocalization) ProtoMessage() {} + +func (x *GameLocalization) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameLocalization.ProtoReflect.Descriptor instead. +func (*GameLocalization) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{68} +} + +func (x *GameLocalization) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameLocalization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameLocalization) GetCover() *Cover { + if x != nil { + return x.Cover + } + return nil +} + +func (x *GameLocalization) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameLocalization) GetRegion() *Region { + if x != nil { + return x.Region + } + return nil +} + +func (x *GameLocalization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameLocalization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameLocalization) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameModeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamemodes []*GameMode `protobuf:"bytes,1,rep,name=gamemodes,proto3" json:"gamemodes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameModeResult) Reset() { + *x = GameModeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameModeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameModeResult) ProtoMessage() {} + +func (x *GameModeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameModeResult.ProtoReflect.Descriptor instead. +func (*GameModeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{69} +} + +func (x *GameModeResult) GetGamemodes() []*GameMode { + if x != nil { + return x.Gamemodes + } + return nil +} + +type GameMode struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameMode) Reset() { + *x = GameMode{} + mi := &file_proto_igdbapi_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameMode) ProtoMessage() {} + +func (x *GameMode) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[70] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameMode.ProtoReflect.Descriptor instead. +func (*GameMode) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{70} +} + +func (x *GameMode) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameMode) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameMode) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameMode) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *GameMode) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameMode) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameMode) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameReleaseFormatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamereleaseformats []*GameReleaseFormat `protobuf:"bytes,1,rep,name=gamereleaseformats,proto3" json:"gamereleaseformats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameReleaseFormatResult) Reset() { + *x = GameReleaseFormatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameReleaseFormatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameReleaseFormatResult) ProtoMessage() {} + +func (x *GameReleaseFormatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameReleaseFormatResult.ProtoReflect.Descriptor instead. +func (*GameReleaseFormatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{71} +} + +func (x *GameReleaseFormatResult) GetGamereleaseformats() []*GameReleaseFormat { + if x != nil { + return x.Gamereleaseformats + } + return nil +} + +type GameReleaseFormat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameReleaseFormat) Reset() { + *x = GameReleaseFormat{} + mi := &file_proto_igdbapi_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameReleaseFormat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameReleaseFormat) ProtoMessage() {} + +func (x *GameReleaseFormat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[72] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameReleaseFormat.ProtoReflect.Descriptor instead. +func (*GameReleaseFormat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{72} +} + +func (x *GameReleaseFormat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameReleaseFormat) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *GameReleaseFormat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameReleaseFormat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameReleaseFormat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamestatuses []*GameStatus `protobuf:"bytes,1,rep,name=gamestatuses,proto3" json:"gamestatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameStatusResult) Reset() { + *x = GameStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameStatusResult) ProtoMessage() {} + +func (x *GameStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[73] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameStatusResult.ProtoReflect.Descriptor instead. +func (*GameStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{73} +} + +func (x *GameStatusResult) GetGamestatuses() []*GameStatus { + if x != nil { + return x.Gamestatuses + } + return nil +} + +type GameStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameStatus) Reset() { + *x = GameStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameStatus) ProtoMessage() {} + +func (x *GameStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[74] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameStatus.ProtoReflect.Descriptor instead. +func (*GameStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{74} +} + +func (x *GameStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameStatus) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GameStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameTimeToBeatResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gametimetobeats []*GameTimeToBeat `protobuf:"bytes,1,rep,name=gametimetobeats,proto3" json:"gametimetobeats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTimeToBeatResult) Reset() { + *x = GameTimeToBeatResult{} + mi := &file_proto_igdbapi_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTimeToBeatResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTimeToBeatResult) ProtoMessage() {} + +func (x *GameTimeToBeatResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[75] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTimeToBeatResult.ProtoReflect.Descriptor instead. +func (*GameTimeToBeatResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{75} +} + +func (x *GameTimeToBeatResult) GetGametimetobeats() []*GameTimeToBeat { + if x != nil { + return x.Gametimetobeats + } + return nil +} + +type GameTimeToBeat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + Hastily int32 `protobuf:"varint,3,opt,name=hastily,proto3" json:"hastily,omitempty"` + Normally int32 `protobuf:"varint,4,opt,name=normally,proto3" json:"normally,omitempty"` + Completely int32 `protobuf:"varint,5,opt,name=completely,proto3" json:"completely,omitempty"` + Count int32 `protobuf:"varint,6,opt,name=count,proto3" json:"count,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTimeToBeat) Reset() { + *x = GameTimeToBeat{} + mi := &file_proto_igdbapi_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTimeToBeat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTimeToBeat) ProtoMessage() {} + +func (x *GameTimeToBeat) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[76] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTimeToBeat.ProtoReflect.Descriptor instead. +func (*GameTimeToBeat) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{76} +} + +func (x *GameTimeToBeat) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameTimeToBeat) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *GameTimeToBeat) GetHastily() int32 { + if x != nil { + return x.Hastily + } + return 0 +} + +func (x *GameTimeToBeat) GetNormally() int32 { + if x != nil { + return x.Normally + } + return 0 +} + +func (x *GameTimeToBeat) GetCompletely() int32 { + if x != nil { + return x.Completely + } + return 0 +} + +func (x *GameTimeToBeat) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GameTimeToBeat) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameTimeToBeat) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameTimeToBeat) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gametypes []*GameType `protobuf:"bytes,1,rep,name=gametypes,proto3" json:"gametypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameTypeResult) Reset() { + *x = GameTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTypeResult) ProtoMessage() {} + +func (x *GameTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameTypeResult.ProtoReflect.Descriptor instead. +func (*GameTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{77} +} + +func (x *GameTypeResult) GetGametypes() []*GameType { + if x != nil { + return x.Gametypes + } + return nil +} + +type GameType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameType) Reset() { + *x = GameType{} + mi := &file_proto_igdbapi_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameType) ProtoMessage() {} + +func (x *GameType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameType.ProtoReflect.Descriptor instead. +func (*GameType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{78} +} + +func (x *GameType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameType) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *GameType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversions []*GameVersion `protobuf:"bytes,1,rep,name=gameversions,proto3" json:"gameversions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionResult) Reset() { + *x = GameVersionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionResult) ProtoMessage() {} + +func (x *GameVersionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionResult.ProtoReflect.Descriptor instead. +func (*GameVersionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{79} +} + +func (x *GameVersionResult) GetGameversions() []*GameVersion { + if x != nil { + return x.Gameversions + } + return nil +} + +type GameVersion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Features []*GameVersionFeature `protobuf:"bytes,3,rep,name=features,proto3" json:"features,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Games []*Game `protobuf:"bytes,5,rep,name=games,proto3" json:"games,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersion) Reset() { + *x = GameVersion{} + mi := &file_proto_igdbapi_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersion) ProtoMessage() {} + +func (x *GameVersion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[80] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersion.ProtoReflect.Descriptor instead. +func (*GameVersion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{80} +} + +func (x *GameVersion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersion) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GameVersion) GetFeatures() []*GameVersionFeature { + if x != nil { + return x.Features + } + return nil +} + +func (x *GameVersion) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVersion) GetGames() []*Game { + if x != nil { + return x.Games + } + return nil +} + +func (x *GameVersion) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *GameVersion) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GameVersion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionFeatureResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversionfeatures []*GameVersionFeature `protobuf:"bytes,1,rep,name=gameversionfeatures,proto3" json:"gameversionfeatures,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureResult) Reset() { + *x = GameVersionFeatureResult{} + mi := &file_proto_igdbapi_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureResult) ProtoMessage() {} + +func (x *GameVersionFeatureResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureResult.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{81} +} + +func (x *GameVersionFeatureResult) GetGameversionfeatures() []*GameVersionFeature { + if x != nil { + return x.Gameversionfeatures + } + return nil +} + +type GameVersionFeature struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Category GameVersionFeatureCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.GameVersionFeatureCategoryEnum" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` + Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` + Values []*GameVersionFeatureValue `protobuf:"bytes,6,rep,name=values,proto3" json:"values,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeature) Reset() { + *x = GameVersionFeature{} + mi := &file_proto_igdbapi_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeature) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeature) ProtoMessage() {} + +func (x *GameVersionFeature) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[82] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeature.ProtoReflect.Descriptor instead. +func (*GameVersionFeature) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{82} +} + +func (x *GameVersionFeature) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersionFeature) GetCategory() GameVersionFeatureCategoryEnum { + if x != nil { + return x.Category + } + return GameVersionFeatureCategoryEnum_BOOLEAN +} + +func (x *GameVersionFeature) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *GameVersionFeature) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *GameVersionFeature) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GameVersionFeature) GetValues() []*GameVersionFeatureValue { + if x != nil { + return x.Values + } + return nil +} + +func (x *GameVersionFeature) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVersionFeatureValueResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gameversionfeaturevalues []*GameVersionFeatureValue `protobuf:"bytes,1,rep,name=gameversionfeaturevalues,proto3" json:"gameversionfeaturevalues,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureValueResult) Reset() { + *x = GameVersionFeatureValueResult{} + mi := &file_proto_igdbapi_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureValueResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureValueResult) ProtoMessage() {} + +func (x *GameVersionFeatureValueResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureValueResult.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureValueResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{83} +} + +func (x *GameVersionFeatureValueResult) GetGameversionfeaturevalues() []*GameVersionFeatureValue { + if x != nil { + return x.Gameversionfeaturevalues + } + return nil +} + +type GameVersionFeatureValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + GameFeature *GameVersionFeature `protobuf:"bytes,3,opt,name=game_feature,json=gameFeature,proto3" json:"game_feature,omitempty"` + IncludedFeature GameVersionFeatureValueIncludedFeatureEnum `protobuf:"varint,4,opt,name=included_feature,json=includedFeature,proto3,enum=proto.GameVersionFeatureValueIncludedFeatureEnum" json:"included_feature,omitempty"` + Note string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVersionFeatureValue) Reset() { + *x = GameVersionFeatureValue{} + mi := &file_proto_igdbapi_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVersionFeatureValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVersionFeatureValue) ProtoMessage() {} + +func (x *GameVersionFeatureValue) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVersionFeatureValue.ProtoReflect.Descriptor instead. +func (*GameVersionFeatureValue) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{84} +} + +func (x *GameVersionFeatureValue) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVersionFeatureValue) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVersionFeatureValue) GetGameFeature() *GameVersionFeature { + if x != nil { + return x.GameFeature + } + return nil +} + +func (x *GameVersionFeatureValue) GetIncludedFeature() GameVersionFeatureValueIncludedFeatureEnum { + if x != nil { + return x.IncludedFeature + } + return GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED +} + +func (x *GameVersionFeatureValue) GetNote() string { + if x != nil { + return x.Note + } + return "" +} + +func (x *GameVersionFeatureValue) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GameVideoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Gamevideos []*GameVideo `protobuf:"bytes,1,rep,name=gamevideos,proto3" json:"gamevideos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVideoResult) Reset() { + *x = GameVideoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVideoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVideoResult) ProtoMessage() {} + +func (x *GameVideoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[85] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVideoResult.ProtoReflect.Descriptor instead. +func (*GameVideoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{85} +} + +func (x *GameVideoResult) GetGamevideos() []*GameVideo { + if x != nil { + return x.Gamevideos + } + return nil +} + +type GameVideo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + VideoId string `protobuf:"bytes,4,opt,name=video_id,json=videoId,proto3" json:"video_id,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameVideo) Reset() { + *x = GameVideo{} + mi := &file_proto_igdbapi_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameVideo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameVideo) ProtoMessage() {} + +func (x *GameVideo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[86] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameVideo.ProtoReflect.Descriptor instead. +func (*GameVideo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{86} +} + +func (x *GameVideo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameVideo) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *GameVideo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GameVideo) GetVideoId() string { + if x != nil { + return x.VideoId + } + return "" +} + +func (x *GameVideo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type GenreResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Genres []*Genre `protobuf:"bytes,1,rep,name=genres,proto3" json:"genres,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GenreResult) Reset() { + *x = GenreResult{} + mi := &file_proto_igdbapi_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenreResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenreResult) ProtoMessage() {} + +func (x *GenreResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[87] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenreResult.ProtoReflect.Descriptor instead. +func (*GenreResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{87} +} + +func (x *GenreResult) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +type Genre struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Genre) Reset() { + *x = Genre{} + mi := &file_proto_igdbapi_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Genre) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Genre) ProtoMessage() {} + +func (x *Genre) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[88] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Genre.ProtoReflect.Descriptor instead. +func (*Genre) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{88} +} + +func (x *Genre) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Genre) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Genre) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Genre) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Genre) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Genre) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Genre) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type InvolvedCompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Involvedcompanies []*InvolvedCompany `protobuf:"bytes,1,rep,name=involvedcompanies,proto3" json:"involvedcompanies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InvolvedCompanyResult) Reset() { + *x = InvolvedCompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InvolvedCompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvolvedCompanyResult) ProtoMessage() {} + +func (x *InvolvedCompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[89] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvolvedCompanyResult.ProtoReflect.Descriptor instead. +func (*InvolvedCompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{89} +} + +func (x *InvolvedCompanyResult) GetInvolvedcompanies() []*InvolvedCompany { + if x != nil { + return x.Involvedcompanies + } + return nil +} + +type InvolvedCompany struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Company *Company `protobuf:"bytes,2,opt,name=company,proto3" json:"company,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` + Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` + Porting bool `protobuf:"varint,6,opt,name=porting,proto3" json:"porting,omitempty"` + Publisher bool `protobuf:"varint,7,opt,name=publisher,proto3" json:"publisher,omitempty"` + Supporting bool `protobuf:"varint,8,opt,name=supporting,proto3" json:"supporting,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,10,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InvolvedCompany) Reset() { + *x = InvolvedCompany{} + mi := &file_proto_igdbapi_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InvolvedCompany) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InvolvedCompany) ProtoMessage() {} + +func (x *InvolvedCompany) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[90] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InvolvedCompany.ProtoReflect.Descriptor instead. +func (*InvolvedCompany) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{90} +} + +func (x *InvolvedCompany) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *InvolvedCompany) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *InvolvedCompany) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *InvolvedCompany) GetDeveloper() bool { + if x != nil { + return x.Developer + } + return false +} + +func (x *InvolvedCompany) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *InvolvedCompany) GetPorting() bool { + if x != nil { + return x.Porting + } + return false +} + +func (x *InvolvedCompany) GetPublisher() bool { + if x != nil { + return x.Publisher + } + return false +} + +func (x *InvolvedCompany) GetSupporting() bool { + if x != nil { + return x.Supporting + } + return false +} + +func (x *InvolvedCompany) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *InvolvedCompany) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type KeywordResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Keywords []*Keyword `protobuf:"bytes,1,rep,name=keywords,proto3" json:"keywords,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *KeywordResult) Reset() { + *x = KeywordResult{} + mi := &file_proto_igdbapi_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *KeywordResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeywordResult) ProtoMessage() {} + +func (x *KeywordResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[91] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeywordResult.ProtoReflect.Descriptor instead. +func (*KeywordResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{91} +} + +func (x *KeywordResult) GetKeywords() []*Keyword { + if x != nil { + return x.Keywords + } + return nil +} + +type Keyword struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Keyword) Reset() { + *x = Keyword{} + mi := &file_proto_igdbapi_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Keyword) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Keyword) ProtoMessage() {} + +func (x *Keyword) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[92] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Keyword.ProtoReflect.Descriptor instead. +func (*Keyword) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{92} +} + +func (x *Keyword) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Keyword) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Keyword) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Keyword) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Keyword) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Keyword) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Keyword) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languages []*Language `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageResult) Reset() { + *x = LanguageResult{} + mi := &file_proto_igdbapi_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageResult) ProtoMessage() {} + +func (x *LanguageResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[93] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageResult.ProtoReflect.Descriptor instead. +func (*LanguageResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{93} +} + +func (x *LanguageResult) GetLanguages() []*Language { + if x != nil { + return x.Languages + } + return nil +} + +type Language struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + NativeName string `protobuf:"bytes,3,opt,name=native_name,json=nativeName,proto3" json:"native_name,omitempty"` + Locale string `protobuf:"bytes,4,opt,name=locale,proto3" json:"locale,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Language) Reset() { + *x = Language{} + mi := &file_proto_igdbapi_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Language) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Language) ProtoMessage() {} + +func (x *Language) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[94] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Language.ProtoReflect.Descriptor instead. +func (*Language) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{94} +} + +func (x *Language) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Language) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Language) GetNativeName() string { + if x != nil { + return x.NativeName + } + return "" +} + +func (x *Language) GetLocale() string { + if x != nil { + return x.Locale + } + return "" +} + +func (x *Language) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Language) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Language) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageSupportResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languagesupports []*LanguageSupport `protobuf:"bytes,1,rep,name=languagesupports,proto3" json:"languagesupports,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportResult) Reset() { + *x = LanguageSupportResult{} + mi := &file_proto_igdbapi_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportResult) ProtoMessage() {} + +func (x *LanguageSupportResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[95] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportResult.ProtoReflect.Descriptor instead. +func (*LanguageSupportResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{95} +} + +func (x *LanguageSupportResult) GetLanguagesupports() []*LanguageSupport { + if x != nil { + return x.Languagesupports + } + return nil +} + +type LanguageSupport struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` + Language *Language `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + LanguageSupportType *LanguageSupportType `protobuf:"bytes,4,opt,name=language_support_type,json=languageSupportType,proto3" json:"language_support_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupport) Reset() { + *x = LanguageSupport{} + mi := &file_proto_igdbapi_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupport) ProtoMessage() {} + +func (x *LanguageSupport) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[96] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupport.ProtoReflect.Descriptor instead. +func (*LanguageSupport) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{96} +} + +func (x *LanguageSupport) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LanguageSupport) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *LanguageSupport) GetLanguage() *Language { + if x != nil { + return x.Language + } + return nil +} + +func (x *LanguageSupport) GetLanguageSupportType() *LanguageSupportType { + if x != nil { + return x.LanguageSupportType + } + return nil +} + +func (x *LanguageSupport) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *LanguageSupport) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *LanguageSupport) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type LanguageSupportTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Languagesupporttypes []*LanguageSupportType `protobuf:"bytes,1,rep,name=languagesupporttypes,proto3" json:"languagesupporttypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportTypeResult) Reset() { + *x = LanguageSupportTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportTypeResult) ProtoMessage() {} + +func (x *LanguageSupportTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[97] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportTypeResult.ProtoReflect.Descriptor instead. +func (*LanguageSupportTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{97} +} + +func (x *LanguageSupportTypeResult) GetLanguagesupporttypes() []*LanguageSupportType { + if x != nil { + return x.Languagesupporttypes + } + return nil +} + +type LanguageSupportType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LanguageSupportType) Reset() { + *x = LanguageSupportType{} + mi := &file_proto_igdbapi_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LanguageSupportType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageSupportType) ProtoMessage() {} + +func (x *LanguageSupportType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[98] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageSupportType.ProtoReflect.Descriptor instead. +func (*LanguageSupportType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{98} +} + +func (x *LanguageSupportType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LanguageSupportType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LanguageSupportType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *LanguageSupportType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *LanguageSupportType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type MultiplayerModeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Multiplayermodes []*MultiplayerMode `protobuf:"bytes,1,rep,name=multiplayermodes,proto3" json:"multiplayermodes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiplayerModeResult) Reset() { + *x = MultiplayerModeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiplayerModeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiplayerModeResult) ProtoMessage() {} + +func (x *MultiplayerModeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[99] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiplayerModeResult.ProtoReflect.Descriptor instead. +func (*MultiplayerModeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{99} +} + +func (x *MultiplayerModeResult) GetMultiplayermodes() []*MultiplayerMode { + if x != nil { + return x.Multiplayermodes + } + return nil +} + +type MultiplayerMode struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Campaigncoop bool `protobuf:"varint,2,opt,name=campaigncoop,proto3" json:"campaigncoop,omitempty"` + Dropin bool `protobuf:"varint,3,opt,name=dropin,proto3" json:"dropin,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Lancoop bool `protobuf:"varint,5,opt,name=lancoop,proto3" json:"lancoop,omitempty"` + Offlinecoop bool `protobuf:"varint,6,opt,name=offlinecoop,proto3" json:"offlinecoop,omitempty"` + Offlinecoopmax int32 `protobuf:"varint,7,opt,name=offlinecoopmax,proto3" json:"offlinecoopmax,omitempty"` + Offlinemax int32 `protobuf:"varint,8,opt,name=offlinemax,proto3" json:"offlinemax,omitempty"` + Onlinecoop bool `protobuf:"varint,9,opt,name=onlinecoop,proto3" json:"onlinecoop,omitempty"` + Onlinecoopmax int32 `protobuf:"varint,10,opt,name=onlinecoopmax,proto3" json:"onlinecoopmax,omitempty"` + Onlinemax int32 `protobuf:"varint,11,opt,name=onlinemax,proto3" json:"onlinemax,omitempty"` + Platform *Platform `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform,omitempty"` + Splitscreen bool `protobuf:"varint,13,opt,name=splitscreen,proto3" json:"splitscreen,omitempty"` + Splitscreenonline bool `protobuf:"varint,14,opt,name=splitscreenonline,proto3" json:"splitscreenonline,omitempty"` + Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiplayerMode) Reset() { + *x = MultiplayerMode{} + mi := &file_proto_igdbapi_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiplayerMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiplayerMode) ProtoMessage() {} + +func (x *MultiplayerMode) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[100] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiplayerMode.ProtoReflect.Descriptor instead. +func (*MultiplayerMode) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{100} +} + +func (x *MultiplayerMode) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *MultiplayerMode) GetCampaigncoop() bool { + if x != nil { + return x.Campaigncoop + } + return false +} + +func (x *MultiplayerMode) GetDropin() bool { + if x != nil { + return x.Dropin + } + return false +} + +func (x *MultiplayerMode) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *MultiplayerMode) GetLancoop() bool { + if x != nil { + return x.Lancoop + } + return false +} + +func (x *MultiplayerMode) GetOfflinecoop() bool { + if x != nil { + return x.Offlinecoop + } + return false +} + +func (x *MultiplayerMode) GetOfflinecoopmax() int32 { + if x != nil { + return x.Offlinecoopmax + } + return 0 +} + +func (x *MultiplayerMode) GetOfflinemax() int32 { + if x != nil { + return x.Offlinemax + } + return 0 +} + +func (x *MultiplayerMode) GetOnlinecoop() bool { + if x != nil { + return x.Onlinecoop + } + return false +} + +func (x *MultiplayerMode) GetOnlinecoopmax() int32 { + if x != nil { + return x.Onlinecoopmax + } + return 0 +} + +func (x *MultiplayerMode) GetOnlinemax() int32 { + if x != nil { + return x.Onlinemax + } + return 0 +} + +func (x *MultiplayerMode) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *MultiplayerMode) GetSplitscreen() bool { + if x != nil { + return x.Splitscreen + } + return false +} + +func (x *MultiplayerMode) GetSplitscreenonline() bool { + if x != nil { + return x.Splitscreenonline + } + return false +} + +func (x *MultiplayerMode) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type NetworkTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Networktypes []*NetworkType `protobuf:"bytes,1,rep,name=networktypes,proto3" json:"networktypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkTypeResult) Reset() { + *x = NetworkTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkTypeResult) ProtoMessage() {} + +func (x *NetworkTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[101] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkTypeResult.ProtoReflect.Descriptor instead. +func (*NetworkTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{101} +} + +func (x *NetworkTypeResult) GetNetworktypes() []*NetworkType { + if x != nil { + return x.Networktypes + } + return nil +} + +type NetworkType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + EventNetworks []*EventNetwork `protobuf:"bytes,3,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NetworkType) Reset() { + *x = NetworkType{} + mi := &file_proto_igdbapi_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkType) ProtoMessage() {} + +func (x *NetworkType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[102] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkType.ProtoReflect.Descriptor instead. +func (*NetworkType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{102} +} + +func (x *NetworkType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *NetworkType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NetworkType) GetEventNetworks() []*EventNetwork { + if x != nil { + return x.EventNetworks + } + return nil +} + +func (x *NetworkType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *NetworkType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *NetworkType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platforms []*Platform `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformResult) Reset() { + *x = PlatformResult{} + mi := &file_proto_igdbapi_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformResult) ProtoMessage() {} + +func (x *PlatformResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[103] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformResult.ProtoReflect.Descriptor instead. +func (*PlatformResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{103} +} + +func (x *PlatformResult) GetPlatforms() []*Platform { + if x != nil { + return x.Platforms + } + return nil +} + +type Platform struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Abbreviation string `protobuf:"bytes,2,opt,name=abbreviation,proto3" json:"abbreviation,omitempty"` + AlternativeName string `protobuf:"bytes,3,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category PlatformCategoryEnum `protobuf:"varint,4,opt,name=category,proto3,enum=proto.PlatformCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Generation int32 `protobuf:"varint,6,opt,name=generation,proto3" json:"generation,omitempty"` + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + PlatformLogo *PlatformLogo `protobuf:"bytes,8,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` + PlatformFamily *PlatformFamily `protobuf:"bytes,9,opt,name=platform_family,json=platformFamily,proto3" json:"platform_family,omitempty"` + Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` + Summary string `protobuf:"bytes,11,opt,name=summary,proto3" json:"summary,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` + Versions []*PlatformVersion `protobuf:"bytes,14,rep,name=versions,proto3" json:"versions,omitempty"` + Websites []*PlatformWebsite `protobuf:"bytes,15,rep,name=websites,proto3" json:"websites,omitempty"` + Checksum string `protobuf:"bytes,16,opt,name=checksum,proto3" json:"checksum,omitempty"` + PlatformType *PlatformType `protobuf:"bytes,17,opt,name=platform_type,json=platformType,proto3" json:"platform_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Platform) Reset() { + *x = Platform{} + mi := &file_proto_igdbapi_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Platform) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Platform) ProtoMessage() {} + +func (x *Platform) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[104] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Platform.ProtoReflect.Descriptor instead. +func (*Platform) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{104} +} + +func (x *Platform) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Platform) GetAbbreviation() string { + if x != nil { + return x.Abbreviation + } + return "" +} + +func (x *Platform) GetAlternativeName() string { + if x != nil { + return x.AlternativeName + } + return "" +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Platform) GetCategory() PlatformCategoryEnum { + if x != nil { + return x.Category + } + return PlatformCategoryEnum_PLATFORM_CATEGORY_NULL +} + +func (x *Platform) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Platform) GetGeneration() int32 { + if x != nil { + return x.Generation + } + return 0 +} + +func (x *Platform) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Platform) GetPlatformLogo() *PlatformLogo { + if x != nil { + return x.PlatformLogo + } + return nil +} + +func (x *Platform) GetPlatformFamily() *PlatformFamily { + if x != nil { + return x.PlatformFamily + } + return nil +} + +func (x *Platform) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Platform) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Platform) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Platform) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Platform) GetVersions() []*PlatformVersion { + if x != nil { + return x.Versions + } + return nil +} + +func (x *Platform) GetWebsites() []*PlatformWebsite { + if x != nil { + return x.Websites + } + return nil +} + +func (x *Platform) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Platform) GetPlatformType() *PlatformType { + if x != nil { + return x.PlatformType + } + return nil +} + +type PlatformFamilyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformfamilies []*PlatformFamily `protobuf:"bytes,1,rep,name=platformfamilies,proto3" json:"platformfamilies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformFamilyResult) Reset() { + *x = PlatformFamilyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformFamilyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformFamilyResult) ProtoMessage() {} + +func (x *PlatformFamilyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[105] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformFamilyResult.ProtoReflect.Descriptor instead. +func (*PlatformFamilyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{105} +} + +func (x *PlatformFamilyResult) GetPlatformfamilies() []*PlatformFamily { + if x != nil { + return x.Platformfamilies + } + return nil +} + +type PlatformFamily struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformFamily) Reset() { + *x = PlatformFamily{} + mi := &file_proto_igdbapi_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformFamily) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformFamily) ProtoMessage() {} + +func (x *PlatformFamily) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[106] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformFamily.ProtoReflect.Descriptor instead. +func (*PlatformFamily) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{106} +} + +func (x *PlatformFamily) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformFamily) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformFamily) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlatformFamily) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformLogoResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformlogos []*PlatformLogo `protobuf:"bytes,1,rep,name=platformlogos,proto3" json:"platformlogos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformLogoResult) Reset() { + *x = PlatformLogoResult{} + mi := &file_proto_igdbapi_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformLogoResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformLogoResult) ProtoMessage() {} + +func (x *PlatformLogoResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[107] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformLogoResult.ProtoReflect.Descriptor instead. +func (*PlatformLogoResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{107} +} + +func (x *PlatformLogoResult) GetPlatformlogos() []*PlatformLogo { + if x != nil { + return x.Platformlogos + } + return nil +} + +type PlatformLogo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformLogo) Reset() { + *x = PlatformLogo{} + mi := &file_proto_igdbapi_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformLogo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformLogo) ProtoMessage() {} + +func (x *PlatformLogo) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[108] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformLogo.ProtoReflect.Descriptor instead. +func (*PlatformLogo) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{108} +} + +func (x *PlatformLogo) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformLogo) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *PlatformLogo) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *PlatformLogo) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *PlatformLogo) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *PlatformLogo) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformLogo) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *PlatformLogo) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformtypes []*PlatformType `protobuf:"bytes,1,rep,name=platformtypes,proto3" json:"platformtypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformTypeResult) Reset() { + *x = PlatformTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformTypeResult) ProtoMessage() {} + +func (x *PlatformTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[109] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformTypeResult.ProtoReflect.Descriptor instead. +func (*PlatformTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{109} +} + +func (x *PlatformTypeResult) GetPlatformtypes() []*PlatformType { + if x != nil { + return x.Platformtypes + } + return nil +} + +type PlatformType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformType) Reset() { + *x = PlatformType{} + mi := &file_proto_igdbapi_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformType) ProtoMessage() {} + +func (x *PlatformType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[110] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformType.ProtoReflect.Descriptor instead. +func (*PlatformType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{110} +} + +func (x *PlatformType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlatformType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlatformType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversions []*PlatformVersion `protobuf:"bytes,1,rep,name=platformversions,proto3" json:"platformversions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionResult) Reset() { + *x = PlatformVersionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionResult) ProtoMessage() {} + +func (x *PlatformVersionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[111] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{111} +} + +func (x *PlatformVersionResult) GetPlatformversions() []*PlatformVersion { + if x != nil { + return x.Platformversions + } + return nil +} + +type PlatformVersion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Companies []*PlatformVersionCompany `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` + Connectivity string `protobuf:"bytes,3,opt,name=connectivity,proto3" json:"connectivity,omitempty"` + Cpu string `protobuf:"bytes,4,opt,name=cpu,proto3" json:"cpu,omitempty"` + Graphics string `protobuf:"bytes,5,opt,name=graphics,proto3" json:"graphics,omitempty"` + MainManufacturer *PlatformVersionCompany `protobuf:"bytes,6,opt,name=main_manufacturer,json=mainManufacturer,proto3" json:"main_manufacturer,omitempty"` + Media string `protobuf:"bytes,7,opt,name=media,proto3" json:"media,omitempty"` + Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + Os string `protobuf:"bytes,11,opt,name=os,proto3" json:"os,omitempty"` + Output string `protobuf:"bytes,12,opt,name=output,proto3" json:"output,omitempty"` + PlatformLogo *PlatformLogo `protobuf:"bytes,13,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` + PlatformVersionReleaseDates []*PlatformVersionReleaseDate `protobuf:"bytes,14,rep,name=platform_version_release_dates,json=platformVersionReleaseDates,proto3" json:"platform_version_release_dates,omitempty"` + Resolutions string `protobuf:"bytes,15,opt,name=resolutions,proto3" json:"resolutions,omitempty"` + Slug string `protobuf:"bytes,16,opt,name=slug,proto3" json:"slug,omitempty"` + Sound string `protobuf:"bytes,17,opt,name=sound,proto3" json:"sound,omitempty"` + Storage string `protobuf:"bytes,18,opt,name=storage,proto3" json:"storage,omitempty"` + Summary string `protobuf:"bytes,19,opt,name=summary,proto3" json:"summary,omitempty"` + Url string `protobuf:"bytes,20,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,21,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersion) Reset() { + *x = PlatformVersion{} + mi := &file_proto_igdbapi_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersion) ProtoMessage() {} + +func (x *PlatformVersion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[112] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersion.ProtoReflect.Descriptor instead. +func (*PlatformVersion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{112} +} + +func (x *PlatformVersion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformVersion) GetCompanies() []*PlatformVersionCompany { + if x != nil { + return x.Companies + } + return nil +} + +func (x *PlatformVersion) GetConnectivity() string { + if x != nil { + return x.Connectivity + } + return "" +} + +func (x *PlatformVersion) GetCpu() string { + if x != nil { + return x.Cpu + } + return "" +} + +func (x *PlatformVersion) GetGraphics() string { + if x != nil { + return x.Graphics + } + return "" +} + +func (x *PlatformVersion) GetMainManufacturer() *PlatformVersionCompany { + if x != nil { + return x.MainManufacturer + } + return nil +} + +func (x *PlatformVersion) GetMedia() string { + if x != nil { + return x.Media + } + return "" +} + +func (x *PlatformVersion) GetMemory() string { + if x != nil { + return x.Memory + } + return "" +} + +func (x *PlatformVersion) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlatformVersion) GetOs() string { + if x != nil { + return x.Os + } + return "" +} + +func (x *PlatformVersion) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *PlatformVersion) GetPlatformLogo() *PlatformLogo { + if x != nil { + return x.PlatformLogo + } + return nil +} + +func (x *PlatformVersion) GetPlatformVersionReleaseDates() []*PlatformVersionReleaseDate { + if x != nil { + return x.PlatformVersionReleaseDates + } + return nil +} + +func (x *PlatformVersion) GetResolutions() string { + if x != nil { + return x.Resolutions + } + return "" +} + +func (x *PlatformVersion) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlatformVersion) GetSound() string { + if x != nil { + return x.Sound + } + return "" +} + +func (x *PlatformVersion) GetStorage() string { + if x != nil { + return x.Storage + } + return "" +} + +func (x *PlatformVersion) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *PlatformVersion) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformVersion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionCompanyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversioncompanies []*PlatformVersionCompany `protobuf:"bytes,1,rep,name=platformversioncompanies,proto3" json:"platformversioncompanies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionCompanyResult) Reset() { + *x = PlatformVersionCompanyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionCompanyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionCompanyResult) ProtoMessage() {} + +func (x *PlatformVersionCompanyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[113] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionCompanyResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionCompanyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{113} +} + +func (x *PlatformVersionCompanyResult) GetPlatformversioncompanies() []*PlatformVersionCompany { + if x != nil { + return x.Platformversioncompanies + } + return nil +} + +type PlatformVersionCompany struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + Company *Company `protobuf:"bytes,3,opt,name=company,proto3" json:"company,omitempty"` + Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` + Manufacturer bool `protobuf:"varint,5,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionCompany) Reset() { + *x = PlatformVersionCompany{} + mi := &file_proto_igdbapi_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionCompany) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionCompany) ProtoMessage() {} + +func (x *PlatformVersionCompany) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[114] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionCompany.ProtoReflect.Descriptor instead. +func (*PlatformVersionCompany) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{114} +} + +func (x *PlatformVersionCompany) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlatformVersionCompany) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *PlatformVersionCompany) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *PlatformVersionCompany) GetDeveloper() bool { + if x != nil { + return x.Developer + } + return false +} + +func (x *PlatformVersionCompany) GetManufacturer() bool { + if x != nil { + return x.Manufacturer + } + return false +} + +func (x *PlatformVersionCompany) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PlatformVersionReleaseDateResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformversionreleasedates []*PlatformVersionReleaseDate `protobuf:"bytes,1,rep,name=platformversionreleasedates,proto3" json:"platformversionreleasedates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionReleaseDateResult) Reset() { + *x = PlatformVersionReleaseDateResult{} + mi := &file_proto_igdbapi_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionReleaseDateResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionReleaseDateResult) ProtoMessage() {} + +func (x *PlatformVersionReleaseDateResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[115] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionReleaseDateResult.ProtoReflect.Descriptor instead. +func (*PlatformVersionReleaseDateResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{115} +} + +func (x *PlatformVersionReleaseDateResult) GetPlatformversionreleasedates() []*PlatformVersionReleaseDate { + if x != nil { + return x.Platformversionreleasedates + } + return nil +} + +type PlatformVersionReleaseDate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` + Human string `protobuf:"bytes,5,opt,name=human,proto3" json:"human,omitempty"` + M int32 `protobuf:"varint,6,opt,name=m,proto3" json:"m,omitempty"` + PlatformVersion *PlatformVersion `protobuf:"bytes,7,opt,name=platform_version,json=platformVersion,proto3" json:"platform_version,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Region RegionRegionEnum `protobuf:"varint,8,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Y int32 `protobuf:"varint,10,opt,name=y,proto3" json:"y,omitempty"` + Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` + DateFormat *DateFormat `protobuf:"bytes,12,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` + ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,13,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformVersionReleaseDate) Reset() { + *x = PlatformVersionReleaseDate{} + mi := &file_proto_igdbapi_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformVersionReleaseDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformVersionReleaseDate) ProtoMessage() {} + +func (x *PlatformVersionReleaseDate) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[116] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformVersionReleaseDate.ProtoReflect.Descriptor instead. +func (*PlatformVersionReleaseDate) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{116} +} + +func (x *PlatformVersionReleaseDate) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformVersionReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.Category + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *PlatformVersionReleaseDate) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetDate() *timestamppb.Timestamp { + if x != nil { + return x.Date + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetHuman() string { + if x != nil { + return x.Human + } + return "" +} + +func (x *PlatformVersionReleaseDate) GetM() int32 { + if x != nil { + return x.M + } + return 0 +} + +func (x *PlatformVersionReleaseDate) GetPlatformVersion() *PlatformVersion { + if x != nil { + return x.PlatformVersion + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformVersionReleaseDate) GetRegion() RegionRegionEnum { + if x != nil { + return x.Region + } + return RegionRegionEnum_REGION_REGION_NULL +} + +func (x *PlatformVersionReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +func (x *PlatformVersionReleaseDate) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PlatformVersionReleaseDate) GetDateFormat() *DateFormat { + if x != nil { + return x.DateFormat + } + return nil +} + +func (x *PlatformVersionReleaseDate) GetReleaseRegion() *ReleaseDateRegion { + if x != nil { + return x.ReleaseRegion + } + return nil +} + +type PlatformWebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Platformwebsites []*PlatformWebsite `protobuf:"bytes,1,rep,name=platformwebsites,proto3" json:"platformwebsites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformWebsiteResult) Reset() { + *x = PlatformWebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformWebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformWebsiteResult) ProtoMessage() {} + +func (x *PlatformWebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[117] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformWebsiteResult.ProtoReflect.Descriptor instead. +func (*PlatformWebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{117} +} + +func (x *PlatformWebsiteResult) GetPlatformwebsites() []*PlatformWebsite { + if x != nil { + return x.Platformwebsites + } + return nil +} + +type PlatformWebsite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlatformWebsite) Reset() { + *x = PlatformWebsite{} + mi := &file_proto_igdbapi_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlatformWebsite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformWebsite) ProtoMessage() {} + +func (x *PlatformWebsite) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[118] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformWebsite.ProtoReflect.Descriptor instead. +func (*PlatformWebsite) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{118} +} + +func (x *PlatformWebsite) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PlatformWebsite) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *PlatformWebsite) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *PlatformWebsite) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlatformWebsite) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PlatformWebsite) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type PlayerPerspectiveResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playerperspectives []*PlayerPerspective `protobuf:"bytes,1,rep,name=playerperspectives,proto3" json:"playerperspectives,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlayerPerspectiveResult) Reset() { + *x = PlayerPerspectiveResult{} + mi := &file_proto_igdbapi_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlayerPerspectiveResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayerPerspectiveResult) ProtoMessage() {} + +func (x *PlayerPerspectiveResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[119] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlayerPerspectiveResult.ProtoReflect.Descriptor instead. +func (*PlayerPerspectiveResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{119} +} + +func (x *PlayerPerspectiveResult) GetPlayerperspectives() []*PlayerPerspective { + if x != nil { + return x.Playerperspectives + } + return nil +} + +type PlayerPerspective struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlayerPerspective) Reset() { + *x = PlayerPerspective{} + mi := &file_proto_igdbapi_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlayerPerspective) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayerPerspective) ProtoMessage() {} + +func (x *PlayerPerspective) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[120] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlayerPerspective.ProtoReflect.Descriptor instead. +func (*PlayerPerspective) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{120} +} + +func (x *PlayerPerspective) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PlayerPerspective) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PlayerPerspective) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlayerPerspective) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *PlayerPerspective) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PlayerPerspective) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *PlayerPerspective) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type PopularityPrimitiveResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Popularityprimitives []*PopularityPrimitive `protobuf:"bytes,1,rep,name=popularityprimitives,proto3" json:"popularityprimitives,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityPrimitiveResult) Reset() { + *x = PopularityPrimitiveResult{} + mi := &file_proto_igdbapi_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityPrimitiveResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityPrimitiveResult) ProtoMessage() {} + +func (x *PopularityPrimitiveResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[121] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityPrimitiveResult.ProtoReflect.Descriptor instead. +func (*PopularityPrimitiveResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{121} +} + +func (x *PopularityPrimitiveResult) GetPopularityprimitives() []*PopularityPrimitive { + if x != nil { + return x.Popularityprimitives + } + return nil +} + +type PopularityPrimitive struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + PopularityType *PopularityType `protobuf:"bytes,3,opt,name=popularity_type,json=popularityType,proto3" json:"popularity_type,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,4,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` + Value float64 `protobuf:"fixed64,5,opt,name=value,proto3" json:"value,omitempty"` + CalculatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=calculated_at,json=calculatedAt,proto3" json:"calculated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,10,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityPrimitive) Reset() { + *x = PopularityPrimitive{} + mi := &file_proto_igdbapi_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityPrimitive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityPrimitive) ProtoMessage() {} + +func (x *PopularityPrimitive) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[122] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityPrimitive.ProtoReflect.Descriptor instead. +func (*PopularityPrimitive) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{122} +} + +func (x *PopularityPrimitive) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PopularityPrimitive) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *PopularityPrimitive) GetPopularityType() *PopularityType { + if x != nil { + return x.PopularityType + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PopularityPrimitive) GetPopularitySource() PopularitySourcePopularitySourceEnum { + if x != nil { + return x.PopularitySource + } + return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL +} + +func (x *PopularityPrimitive) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *PopularityPrimitive) GetCalculatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CalculatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PopularityPrimitive) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PopularityPrimitive) GetExternalPopularitySource() *ExternalGameSource { + if x != nil { + return x.ExternalPopularitySource + } + return nil +} + +type PopularityTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Popularitytypes []*PopularityType `protobuf:"bytes,1,rep,name=popularitytypes,proto3" json:"popularitytypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityTypeResult) Reset() { + *x = PopularityTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityTypeResult) ProtoMessage() {} + +func (x *PopularityTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[123] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityTypeResult.ProtoReflect.Descriptor instead. +func (*PopularityTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{123} +} + +func (x *PopularityTypeResult) GetPopularitytypes() []*PopularityType { + if x != nil { + return x.Popularitytypes + } + return nil +} + +type PopularityType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,2,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,7,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PopularityType) Reset() { + *x = PopularityType{} + mi := &file_proto_igdbapi_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PopularityType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PopularityType) ProtoMessage() {} + +func (x *PopularityType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[124] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PopularityType.ProtoReflect.Descriptor instead. +func (*PopularityType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{124} +} + +func (x *PopularityType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *PopularityType) GetPopularitySource() PopularitySourcePopularitySourceEnum { + if x != nil { + return x.PopularitySource + } + return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL +} + +func (x *PopularityType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PopularityType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PopularityType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *PopularityType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PopularityType) GetExternalPopularitySource() *ExternalGameSource { + if x != nil { + return x.ExternalPopularitySource + } + return nil +} + +type RegionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Regions []*Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegionResult) Reset() { + *x = RegionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegionResult) ProtoMessage() {} + +func (x *RegionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[125] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegionResult.ProtoReflect.Descriptor instead. +func (*RegionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{125} +} + +func (x *RegionResult) GetRegions() []*Region { + if x != nil { + return x.Regions + } + return nil +} + +type Region struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` + Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Region) Reset() { + *x = Region{} + mi := &file_proto_igdbapi_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Region) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Region) ProtoMessage() {} + +func (x *Region) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[126] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Region.ProtoReflect.Descriptor instead. +func (*Region) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{126} +} + +func (x *Region) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Region) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Region) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *Region) GetIdentifier() string { + if x != nil { + return x.Identifier + } + return "" +} + +func (x *Region) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Region) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Region) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ReleaseDateResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedates []*ReleaseDate `protobuf:"bytes,1,rep,name=releasedates,proto3" json:"releasedates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateResult) Reset() { + *x = ReleaseDateResult{} + mi := &file_proto_igdbapi_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateResult) ProtoMessage() {} + +func (x *ReleaseDateResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[127] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{127} +} + +func (x *ReleaseDateResult) GetReleasedates() []*ReleaseDate { + if x != nil { + return x.Releasedates + } + return nil +} + +type ReleaseDate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` + Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` + Human string `protobuf:"bytes,6,opt,name=human,proto3" json:"human,omitempty"` + M int32 `protobuf:"varint,7,opt,name=m,proto3" json:"m,omitempty"` + Platform *Platform `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Region RegionRegionEnum `protobuf:"varint,9,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Y int32 `protobuf:"varint,11,opt,name=y,proto3" json:"y,omitempty"` + Checksum string `protobuf:"bytes,12,opt,name=checksum,proto3" json:"checksum,omitempty"` + Status *ReleaseDateStatus `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"` + DateFormat *DateFormat `protobuf:"bytes,14,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` + ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,15,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDate) Reset() { + *x = ReleaseDate{} + mi := &file_proto_igdbapi_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDate) ProtoMessage() {} + +func (x *ReleaseDate) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[128] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDate.ProtoReflect.Descriptor instead. +func (*ReleaseDate) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{128} +} + +func (x *ReleaseDate) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { + if x != nil { + return x.Category + } + return DateFormatChangeDateCategoryEnum_YYYYMMMMDD +} + +func (x *ReleaseDate) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDate) GetDate() *timestamppb.Timestamp { + if x != nil { + return x.Date + } + return nil +} + +func (x *ReleaseDate) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *ReleaseDate) GetHuman() string { + if x != nil { + return x.Human + } + return "" +} + +func (x *ReleaseDate) GetM() int32 { + if x != nil { + return x.M + } + return 0 +} + +func (x *ReleaseDate) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *ReleaseDate) GetRegion() RegionRegionEnum { + if x != nil { + return x.Region + } + return RegionRegionEnum_REGION_REGION_NULL +} + +func (x *ReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDate) GetY() int32 { + if x != nil { + return x.Y + } + return 0 +} + +func (x *ReleaseDate) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *ReleaseDate) GetStatus() *ReleaseDateStatus { + if x != nil { + return x.Status + } + return nil +} + +func (x *ReleaseDate) GetDateFormat() *DateFormat { + if x != nil { + return x.DateFormat + } + return nil +} + +func (x *ReleaseDate) GetReleaseRegion() *ReleaseDateRegion { + if x != nil { + return x.ReleaseRegion + } + return nil +} + +type ReleaseDateRegionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedateregions []*ReleaseDateRegion `protobuf:"bytes,1,rep,name=releasedateregions,proto3" json:"releasedateregions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateRegionResult) Reset() { + *x = ReleaseDateRegionResult{} + mi := &file_proto_igdbapi_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateRegionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateRegionResult) ProtoMessage() {} + +func (x *ReleaseDateRegionResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[129] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateRegionResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateRegionResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{129} +} + +func (x *ReleaseDateRegionResult) GetReleasedateregions() []*ReleaseDateRegion { + if x != nil { + return x.Releasedateregions + } + return nil +} + +type ReleaseDateRegion struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateRegion) Reset() { + *x = ReleaseDateRegion{} + mi := &file_proto_igdbapi_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateRegion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateRegion) ProtoMessage() {} + +func (x *ReleaseDateRegion) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[130] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateRegion.ProtoReflect.Descriptor instead. +func (*ReleaseDateRegion) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{130} +} + +func (x *ReleaseDateRegion) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReleaseDateRegion) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *ReleaseDateRegion) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDateRegion) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDateRegion) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ReleaseDateStatusResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Releasedatestatuses []*ReleaseDateStatus `protobuf:"bytes,1,rep,name=releasedatestatuses,proto3" json:"releasedatestatuses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateStatusResult) Reset() { + *x = ReleaseDateStatusResult{} + mi := &file_proto_igdbapi_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateStatusResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateStatusResult) ProtoMessage() {} + +func (x *ReleaseDateStatusResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[131] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateStatusResult.ProtoReflect.Descriptor instead. +func (*ReleaseDateStatusResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{131} +} + +func (x *ReleaseDateStatusResult) GetReleasedatestatuses() []*ReleaseDateStatus { + if x != nil { + return x.Releasedatestatuses + } + return nil +} + +type ReleaseDateStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseDateStatus) Reset() { + *x = ReleaseDateStatus{} + mi := &file_proto_igdbapi_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseDateStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseDateStatus) ProtoMessage() {} + +func (x *ReleaseDateStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[132] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseDateStatus.ProtoReflect.Descriptor instead. +func (*ReleaseDateStatus) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{132} +} + +func (x *ReleaseDateStatus) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReleaseDateStatus) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReleaseDateStatus) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ReleaseDateStatus) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *ReleaseDateStatus) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *ReleaseDateStatus) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ScreenshotResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Screenshots []*Screenshot `protobuf:"bytes,1,rep,name=screenshots,proto3" json:"screenshots,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScreenshotResult) Reset() { + *x = ScreenshotResult{} + mi := &file_proto_igdbapi_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScreenshotResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScreenshotResult) ProtoMessage() {} + +func (x *ScreenshotResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[133] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScreenshotResult.ProtoReflect.Descriptor instead. +func (*ScreenshotResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{133} +} + +func (x *ScreenshotResult) GetScreenshots() []*Screenshot { + if x != nil { + return x.Screenshots + } + return nil +} + +type Screenshot struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` + Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` + Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` + Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` + Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` + Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Screenshot) Reset() { + *x = Screenshot{} + mi := &file_proto_igdbapi_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Screenshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Screenshot) ProtoMessage() {} + +func (x *Screenshot) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[134] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Screenshot.ProtoReflect.Descriptor instead. +func (*Screenshot) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{134} +} + +func (x *Screenshot) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Screenshot) GetAlphaChannel() bool { + if x != nil { + return x.AlphaChannel + } + return false +} + +func (x *Screenshot) GetAnimated() bool { + if x != nil { + return x.Animated + } + return false +} + +func (x *Screenshot) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Screenshot) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Screenshot) GetImageId() string { + if x != nil { + return x.ImageId + } + return "" +} + +func (x *Screenshot) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Screenshot) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *Screenshot) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type SearchResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Searches []*Search `protobuf:"bytes,1,rep,name=searches,proto3" json:"searches,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchResult) Reset() { + *x = SearchResult{} + mi := &file_proto_igdbapi_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResult) ProtoMessage() {} + +func (x *SearchResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[135] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResult.ProtoReflect.Descriptor instead. +func (*SearchResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{135} +} + +func (x *SearchResult) GetSearches() []*Search { + if x != nil { + return x.Searches + } + return nil +} + +type Search struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + AlternativeName string `protobuf:"bytes,2,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` + Character *Character `protobuf:"bytes,3,opt,name=character,proto3" json:"character,omitempty"` + Collection *Collection `protobuf:"bytes,4,opt,name=collection,proto3" json:"collection,omitempty"` + Company *Company `protobuf:"bytes,5,opt,name=company,proto3" json:"company,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Game *Game `protobuf:"bytes,7,opt,name=game,proto3" json:"game,omitempty"` + Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` + Platform *Platform `protobuf:"bytes,9,opt,name=platform,proto3" json:"platform,omitempty"` + PublishedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"` + TestDummy *TestDummy `protobuf:"bytes,11,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` + Theme *Theme `protobuf:"bytes,12,opt,name=theme,proto3" json:"theme,omitempty"` + Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Search) Reset() { + *x = Search{} + mi := &file_proto_igdbapi_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Search) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Search) ProtoMessage() {} + +func (x *Search) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[136] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Search.ProtoReflect.Descriptor instead. +func (*Search) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{136} +} + +func (x *Search) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Search) GetAlternativeName() string { + if x != nil { + return x.AlternativeName + } + return "" +} + +func (x *Search) GetCharacter() *Character { + if x != nil { + return x.Character + } + return nil +} + +func (x *Search) GetCollection() *Collection { + if x != nil { + return x.Collection + } + return nil +} + +func (x *Search) GetCompany() *Company { + if x != nil { + return x.Company + } + return nil +} + +func (x *Search) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Search) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Search) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Search) GetPlatform() *Platform { + if x != nil { + return x.Platform + } + return nil +} + +func (x *Search) GetPublishedAt() *timestamppb.Timestamp { + if x != nil { + return x.PublishedAt + } + return nil +} + +func (x *Search) GetTestDummy() *TestDummy { + if x != nil { + return x.TestDummy + } + return nil +} + +func (x *Search) GetTheme() *Theme { + if x != nil { + return x.Theme + } + return nil +} + +func (x *Search) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type TestDummyResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Testdummies []*TestDummy `protobuf:"bytes,1,rep,name=testdummies,proto3" json:"testdummies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TestDummyResult) Reset() { + *x = TestDummyResult{} + mi := &file_proto_igdbapi_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TestDummyResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestDummyResult) ProtoMessage() {} + +func (x *TestDummyResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[137] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestDummyResult.ProtoReflect.Descriptor instead. +func (*TestDummyResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{137} +} + +func (x *TestDummyResult) GetTestdummies() []*TestDummy { + if x != nil { + return x.Testdummies + } + return nil +} + +type TestDummy struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3" json:"bool_value,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + EnumTest TestDummyEnumTestEnum `protobuf:"varint,4,opt,name=enum_test,json=enumTest,proto3,enum=proto.TestDummyEnumTestEnum" json:"enum_test,omitempty"` + FloatValue float64 `protobuf:"fixed64,5,opt,name=float_value,json=floatValue,proto3" json:"float_value,omitempty"` + Game *Game `protobuf:"bytes,6,opt,name=game,proto3" json:"game,omitempty"` + IntegerArray []int32 `protobuf:"varint,7,rep,packed,name=integer_array,json=integerArray,proto3" json:"integer_array,omitempty"` + IntegerValue int32 `protobuf:"varint,8,opt,name=integer_value,json=integerValue,proto3" json:"integer_value,omitempty"` + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + NewIntegerValue int32 `protobuf:"varint,10,opt,name=new_integer_value,json=newIntegerValue,proto3" json:"new_integer_value,omitempty"` + Private bool `protobuf:"varint,11,opt,name=private,proto3" json:"private,omitempty"` + Slug string `protobuf:"bytes,12,opt,name=slug,proto3" json:"slug,omitempty"` + StringArray []string `protobuf:"bytes,13,rep,name=string_array,json=stringArray,proto3" json:"string_array,omitempty"` + TestDummies []*TestDummy `protobuf:"bytes,14,rep,name=test_dummies,json=testDummies,proto3" json:"test_dummies,omitempty"` + TestDummy *TestDummy `protobuf:"bytes,15,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,18,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TestDummy) Reset() { + *x = TestDummy{} + mi := &file_proto_igdbapi_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TestDummy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestDummy) ProtoMessage() {} + +func (x *TestDummy) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[138] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestDummy.ProtoReflect.Descriptor instead. +func (*TestDummy) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{138} +} + +func (x *TestDummy) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *TestDummy) GetBoolValue() bool { + if x != nil { + return x.BoolValue + } + return false +} + +func (x *TestDummy) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *TestDummy) GetEnumTest() TestDummyEnumTestEnum { + if x != nil { + return x.EnumTest + } + return TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL +} + +func (x *TestDummy) GetFloatValue() float64 { + if x != nil { + return x.FloatValue + } + return 0 +} + +func (x *TestDummy) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *TestDummy) GetIntegerArray() []int32 { + if x != nil { + return x.IntegerArray + } + return nil +} + +func (x *TestDummy) GetIntegerValue() int32 { + if x != nil { + return x.IntegerValue + } + return 0 +} + +func (x *TestDummy) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TestDummy) GetNewIntegerValue() int32 { + if x != nil { + return x.NewIntegerValue + } + return 0 +} + +func (x *TestDummy) GetPrivate() bool { + if x != nil { + return x.Private + } + return false +} + +func (x *TestDummy) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *TestDummy) GetStringArray() []string { + if x != nil { + return x.StringArray + } + return nil +} + +func (x *TestDummy) GetTestDummies() []*TestDummy { + if x != nil { + return x.TestDummies + } + return nil +} + +func (x *TestDummy) GetTestDummy() *TestDummy { + if x != nil { + return x.TestDummy + } + return nil +} + +func (x *TestDummy) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *TestDummy) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *TestDummy) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type ThemeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Themes []*Theme `protobuf:"bytes,1,rep,name=themes,proto3" json:"themes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ThemeResult) Reset() { + *x = ThemeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ThemeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ThemeResult) ProtoMessage() {} + +func (x *ThemeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[139] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ThemeResult.ProtoReflect.Descriptor instead. +func (*ThemeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{139} +} + +func (x *ThemeResult) GetThemes() []*Theme { + if x != nil { + return x.Themes + } + return nil +} + +type Theme struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Theme) Reset() { + *x = Theme{} + mi := &file_proto_igdbapi_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Theme) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Theme) ProtoMessage() {} + +func (x *Theme) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[140] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Theme.ProtoReflect.Descriptor instead. +func (*Theme) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{140} +} + +func (x *Theme) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Theme) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Theme) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Theme) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Theme) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Theme) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Theme) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +type WebsiteResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Websites []*Website `protobuf:"bytes,1,rep,name=websites,proto3" json:"websites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteResult) Reset() { + *x = WebsiteResult{} + mi := &file_proto_igdbapi_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteResult) ProtoMessage() {} + +func (x *WebsiteResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[141] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteResult.ProtoReflect.Descriptor instead. +func (*WebsiteResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{141} +} + +func (x *WebsiteResult) GetWebsites() []*Website { + if x != nil { + return x.Websites + } + return nil +} + +type Website struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Deprecated: Marked as deprecated in proto/igdbapi.proto. + Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` + Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` + Trusted bool `protobuf:"varint,4,opt,name=trusted,proto3" json:"trusted,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` + Type *WebsiteType `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Website) Reset() { + *x = Website{} + mi := &file_proto_igdbapi_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Website) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Website) ProtoMessage() {} + +func (x *Website) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[142] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Website.ProtoReflect.Descriptor instead. +func (*Website) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{142} +} + +func (x *Website) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// Deprecated: Marked as deprecated in proto/igdbapi.proto. +func (x *Website) GetCategory() WebsiteCategoryEnum { + if x != nil { + return x.Category + } + return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL +} + +func (x *Website) GetGame() *Game { + if x != nil { + return x.Game + } + return nil +} + +func (x *Website) GetTrusted() bool { + if x != nil { + return x.Trusted + } + return false +} + +func (x *Website) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Website) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *Website) GetType() *WebsiteType { + if x != nil { + return x.Type + } + return nil +} + +type WebsiteTypeResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Websitetypes []*WebsiteType `protobuf:"bytes,1,rep,name=websitetypes,proto3" json:"websitetypes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteTypeResult) Reset() { + *x = WebsiteTypeResult{} + mi := &file_proto_igdbapi_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteTypeResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteTypeResult) ProtoMessage() {} + +func (x *WebsiteTypeResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[143] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteTypeResult.ProtoReflect.Descriptor instead. +func (*WebsiteTypeResult) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{143} +} + +func (x *WebsiteTypeResult) GetWebsitetypes() []*WebsiteType { + if x != nil { + return x.Websitetypes + } + return nil +} + +type WebsiteType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WebsiteType) Reset() { + *x = WebsiteType{} + mi := &file_proto_igdbapi_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WebsiteType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebsiteType) ProtoMessage() {} + +func (x *WebsiteType) ProtoReflect() protoreflect.Message { + mi := &file_proto_igdbapi_proto_msgTypes[144] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebsiteType.ProtoReflect.Descriptor instead. +func (*WebsiteType) Descriptor() ([]byte, []int) { + return file_proto_igdbapi_proto_rawDescGZIP(), []int{144} +} + +func (x *WebsiteType) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *WebsiteType) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *WebsiteType) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *WebsiteType) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *WebsiteType) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +var File_proto_igdbapi_proto protoreflect.FileDescriptor + +var file_proto_igdbapi_proto_rawDesc = string([]byte{ + 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x67, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 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, 0x22, 0x1d, 0x0a, + 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x10, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x48, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2f, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x43, + 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, + 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0xb5, 0x04, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, + 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x55, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, + 0x0a, 0x10, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x6f, + 0x70, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x6e, 0x6f, + 0x70, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x64, 0x0a, 0x1b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x19, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x65, 0x0a, 0x17, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x61, + 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, + 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x8b, 0x01, 0x0a, 0x21, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x66, 0x0a, 0x1c, 0x61, 0x67, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x4e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x93, 0x01, 0x0a, 0x23, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6c, 0x0a, 0x1e, 0x61, 0x67, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x1e, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x22, 0xa5, 0x02, 0x0a, 0x1d, 0x41, 0x67, 0x65, 0x52, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x73, + 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x54, 0x0a, + 0x16, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x61, 0x67, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x22, 0x8c, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x3b, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xf2, 0x01, 0x0a, + 0x07, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0x8f, 0x05, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x67, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x75, 0x67, 0x5f, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x75, 0x67, + 0x53, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x07, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x41, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x72, + 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x5f, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x11, 0x63, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, + 0x22, 0xda, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, + 0x67, 0x53, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, + 0x15, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x47, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xca, 0x03, + 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, + 0x61, 0x73, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x47, 0x0a, 0x12, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x61, 0x73, 0x43, 0x68, 0x69, 0x6c, + 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6f, 0x0a, 0x1a, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x14, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x7f, 0x0a, 0x1e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x5d, 0x0a, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x22, 0xc1, 0x02, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x15, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x02, + 0x0a, 0x12, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x77, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x22, 0xfc, 0x02, 0x0a, 0x16, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x43, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x68, 0x69, + 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, + 0x65, 0x73, 0x22, 0x9a, 0x08, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, + 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 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, 0x5d, 0x0a, 0x14, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x12, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x29, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x6f, + 0x67, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, + 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x29, + 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0e, 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, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x10, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x3d, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, + 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x10, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x4b, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, + 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd5, 0x01, 0x0a, + 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x55, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x0f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x0d, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcc, 0x01, 0x0a, + 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x43, + 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x06, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, + 0x22, 0xb6, 0x02, 0x0a, 0x05, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x10, 0x44, 0x61, 0x74, + 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0xe4, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2f, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, + 0x67, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 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, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x07, 0x65, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, + 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x05, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0d, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, + 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, + 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xed, 0x02, 0x0a, + 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x9d, 0x02, + 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, + 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf8, + 0x04, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3f, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, + 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, + 0x65, 0x61, 0x72, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x2b, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, + 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x12, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x48, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x67, 0x0a, 0x18, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x43, 0x0a, 0x0f, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x69, 0x73, 0x65, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, + 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x2f, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x22, 0xae, 0x15, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x61, + 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x17, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x05, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x64, 0x6c, + 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x6c, 0x63, 0x73, 0x12, 0x2b, 0x0a, 0x0a, 0x65, + 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x65, 0x78, + 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 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, 0x10, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, + 0x0a, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2e, 0x0a, 0x09, + 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, + 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, + 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, + 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x12, 0x34, + 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, + 0x72, 0x65, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x79, + 0x70, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x45, 0x0a, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, + 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x1e, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, + 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x37, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, + 0x0d, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x22, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x6c, 0x75, 0x67, 0x12, 0x40, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x14, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x29, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, + 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, + 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2c, 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, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x2d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x2f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x18, 0x33, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x09, 0x72, 0x65, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, + 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x61, + 0x6e, 0x64, 0x65, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x05, + 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x12, + 0x43, 0x0a, 0x11, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, + 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x92, 0x03, 0x0a, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, + 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, + 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x65, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x47, + 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x45, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb4, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, + 0x67, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, + 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xe6, + 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0xcd, 0x01, 0x0a, + 0x11, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x10, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x35, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, 0x65, + 0x74, 0x69, 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x0e, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, + 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x35, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, + 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x4b, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, + 0x12, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x7b, + 0x0a, 0x1d, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x5a, 0x0a, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x96, 0x02, 0x0a, 0x17, + 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, + 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x5c, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, + 0x6e, 0x75, 0x6d, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x0a, 0x67, + 0x61, 0x6d, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x09, 0x47, 0x61, + 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x72, 0x65, + 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x6e, + 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5d, + 0x0a, 0x15, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, + 0x6c, 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x22, 0xf4, 0x02, + 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x4c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, + 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x08, 0x4c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x42, 0x0a, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x4e, 0x0a, 0x15, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x13, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x4c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x13, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, + 0xff, 0x03, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x63, + 0x6f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, 0x6e, 0x12, + 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x66, + 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x0e, + 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, + 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x6d, + 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, + 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, + 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, + 0x72, 0x65, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, + 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xff, + 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x3f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x22, 0xc8, 0x05, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, + 0x0a, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, + 0x6f, 0x67, 0x6f, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x0c, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, + 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0f, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x14, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, + 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x66, + 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, + 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, + 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, + 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd6, + 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, + 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb6, 0x05, 0x0a, + 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x63, 0x70, 0x75, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x12, + 0x4a, 0x0a, 0x11, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x69, 0x6e, 0x4d, + 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, + 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, + 0x66, 0x0a, 0x1e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x79, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, + 0x22, 0xca, 0x01, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x22, 0x0a, + 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x87, 0x01, + 0x0a, 0x20, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xd6, 0x04, 0x0a, 0x1a, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, + 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 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, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, + 0x6d, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, + 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x41, + 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcd, 0x01, + 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x63, 0x0a, + 0x17, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x12, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, + 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x14, 0x70, 0x6f, 0x70, + 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x73, 0x22, 0x9e, 0x04, 0x0a, 0x13, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, + 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x0c, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x08, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, + 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x70, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x0e, + 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5c, + 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x70, 0x6f, 0x70, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, + 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x0c, 0x52, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x84, + 0x05, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, + 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 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, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x01, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x30, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, + 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, + 0x61, 0x74, 0x65, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x11, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x65, 0x0a, 0x17, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, + 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0x47, 0x0a, 0x10, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0b, 0x73, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0a, 0x53, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x22, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x29, 0x0a, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x52, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x22, 0x84, 0x04, 0x0a, 0x06, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0a, 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, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, + 0x6d, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, + 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x22, 0x45, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x64, 0x75, 0x6d, + 0x6d, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x0b, 0x74, 0x65, + 0x73, 0x74, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x22, 0x9c, 0x05, 0x0a, 0x09, 0x54, 0x65, + 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x39, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, + 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, + 0x75, 0x6d, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, + 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x0c, 0x74, 0x65, 0x73, + 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, + 0x79, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x12, 0x2f, + 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, + 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x54, 0x68, 0x65, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x22, 0xe3, 0x01, + 0x0a, 0x05, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, + 0x22, 0xe6, 0x01, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x11, 0x57, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, + 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x73, 0x69, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2a, 0x9d, 0x01, 0x0a, + 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x45, 0x53, 0x52, 0x42, 0x10, + 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x45, 0x47, 0x49, 0x10, 0x02, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x55, 0x53, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, + 0x0a, 0x04, 0x47, 0x52, 0x41, 0x43, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0b, 0x0a, 0x03, 0x41, 0x43, 0x42, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xd9, 0x05, 0x0a, + 0x13, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, + 0x47, 0x5f, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x01, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x53, 0x49, 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x04, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x52, 0x50, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0a, 0x0a, 0x02, 0x45, 0x43, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, + 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x45, 0x31, 0x30, 0x10, 0x09, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, 0x54, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x09, 0x0a, 0x01, 0x4d, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x41, 0x4f, + 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x41, + 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x42, + 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, + 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x44, + 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x5a, + 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x30, 0x10, + 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x36, 0x10, 0x13, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x32, 0x10, 0x14, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x36, 0x10, 0x15, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x38, 0x10, 0x16, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, 0x4c, 0x4c, + 0x10, 0x17, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x54, + 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x18, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, + 0x52, 0x41, 0x43, 0x5f, 0x46, 0x49, 0x46, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x19, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, + 0x45, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, 0x52, 0x41, 0x43, + 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, + 0x0a, 0x0b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x10, 0x1c, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, + 0x5f, 0x54, 0x45, 0x4e, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, + 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x1e, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, + 0x44, 0x5f, 0x46, 0x4f, 0x55, 0x52, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x19, 0x0a, 0x11, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x49, + 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, + 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, + 0x4e, 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x47, + 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, 0x50, 0x47, + 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x10, + 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x41, 0x31, + 0x35, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x43, 0x42, 0x5f, 0x52, + 0x31, 0x38, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, + 0x52, 0x43, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xb6, 0x14, 0x0a, 0x27, 0x41, 0x67, 0x65, + 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x29, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, + 0x47, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x42, 0x4c, 0x4f, + 0x4f, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, + 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x41, + 0x52, 0x54, 0x4f, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x4f, 0x4d, + 0x49, 0x43, 0x5f, 0x4d, 0x49, 0x53, 0x43, 0x48, 0x49, 0x45, 0x46, 0x10, 0x06, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x52, 0x55, 0x44, 0x45, 0x5f, + 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, + 0x43, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, + 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, + 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x0c, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, + 0x45, 0x5f, 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, + 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0e, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, + 0x41, 0x4c, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x5f, 0x47, 0x41, 0x4d, + 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, + 0x4e, 0x54, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x12, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, + 0x55, 0x41, 0x4c, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x13, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x49, 0x4d, 0x55, 0x4c, + 0x41, 0x54, 0x45, 0x44, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, + 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x15, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, + 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x16, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, + 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x58, + 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x17, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x18, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, + 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x19, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, + 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, + 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, + 0x55, 0x47, 0x53, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, + 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, + 0x10, 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, + 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, + 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, + 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, + 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, + 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, + 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, + 0x55, 0x41, 0x47, 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, + 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, + 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, + 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, + 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, + 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, + 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, + 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, + 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, + 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x4f, 0x4f, 0x4e, + 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x17, 0x0a, 0x0f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x42, 0x4c, 0x4f, + 0x4f, 0x44, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, + 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x28, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x2a, 0x0a, 0x22, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x52, 0x45, 0x46, + 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x29, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, + 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x58, 0x55, + 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x2a, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x41, 0x4e, 0x49, + 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x2b, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, + 0x44, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, + 0x2c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, + 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x10, 0x2d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, + 0x0a, 0x1c, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, + 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x2e, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, + 0x44, 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, + 0x43, 0x45, 0x10, 0x2f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, + 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x30, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, + 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x31, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, + 0x45, 0x10, 0x32, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x50, 0x45, 0x47, 0x49, 0x5f, + 0x53, 0x45, 0x58, 0x10, 0x33, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x50, 0x45, 0x47, + 0x49, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x10, 0x34, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, + 0x09, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x10, 0x35, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, + 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, + 0x11, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, + 0x47, 0x45, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, + 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x38, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1c, 0x0a, 0x14, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x47, + 0x41, 0x4d, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x10, 0x39, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, + 0x16, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x55, + 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x53, 0x10, 0x3a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, + 0x09, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x4c, 0x4f, 0x56, 0x45, 0x10, 0x3b, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x3c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, + 0x0d, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x3d, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x48, 0x4f, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x3e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x43, 0x45, 0x52, + 0x4f, 0x5f, 0x44, 0x52, 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4d, 0x4f, 0x4b, 0x49, + 0x4e, 0x47, 0x10, 0x3f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x45, 0x52, 0x4f, + 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x40, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x12, 0x0a, 0x0a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x10, 0x41, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, + 0x53, 0x10, 0x42, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x45, 0x52, 0x4f, 0x5f, + 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x53, 0x10, 0x43, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x47, 0x52, + 0x41, 0x43, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x44, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, + 0x4e, 0x43, 0x45, 0x10, 0x45, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x5f, 0x48, 0x4f, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x48, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x46, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, + 0x10, 0x47, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, + 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x44, + 0x52, 0x55, 0x47, 0x10, 0x48, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x5f, 0x53, 0x4f, 0x43, + 0x49, 0x41, 0x4c, 0x10, 0x49, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, + 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x4a, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, + 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x49, 0x41, 0x10, 0x4b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, + 0x1b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, + 0x4e, 0x43, 0x49, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x52, 0x45, 0x4d, 0x41, 0x10, 0x4c, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x55, 0x44, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x10, + 0x4d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, + 0x4e, 0x44, 0x5f, 0x4e, 0x55, 0x44, 0x45, 0x5a, 0x10, 0x4e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, + 0x0a, 0x0e, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, + 0x10, 0x4f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, + 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, + 0x54, 0x4f, 0x10, 0x50, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x53, + 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x10, 0x51, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, + 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x53, 0x10, 0x52, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, + 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x49, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, + 0x53, 0x10, 0x53, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x43, 0x4c, 0x41, 0x53, 0x53, + 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x4d, 0x5f, 0x49, + 0x4d, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x41, 0x10, 0x54, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, + 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x54, 0x4f, 0x53, + 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x4f, 0x53, 0x4f, 0x53, 0x10, 0x55, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x04, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x00, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x46, 0x45, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x02, + 0x08, 0x01, 0x2a, 0x86, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x16, 0x43, + 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x45, 0x53, + 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x48, + 0x55, 0x4d, 0x41, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, + 0x49, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x4e, 0x49, + 0x4d, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x4e, 0x44, + 0x52, 0x4f, 0x49, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xa3, 0x01, 0x0a, 0x20, + 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x12, 0x0a, 0x0a, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, 0x44, 0x44, 0x10, 0x00, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, + 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x59, 0x59, 0x59, 0x59, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x31, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x32, 0x10, 0x04, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x33, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x34, 0x10, 0x06, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x54, 0x42, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0xed, 0x03, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, + 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, + 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x49, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, + 0x4b, 0x49, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, 0x4b, 0x49, 0x50, 0x45, 0x44, 0x49, 0x41, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, + 0x46, 0x41, 0x43, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, + 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x54, 0x45, + 0x52, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, + 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, + 0x47, 0x52, 0x41, 0x4d, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x09, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, + 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, + 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x50, 0x41, 0x44, 0x10, 0x0b, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, + 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x0d, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x44, + 0x44, 0x49, 0x54, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, 0x45, 0x42, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x47, + 0x41, 0x4d, 0x45, 0x53, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x57, 0x45, + 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x4f, 0x47, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, + 0x52, 0x44, 0x10, 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, + 0x49, 0x54, 0x45, 0x5f, 0x42, 0x4c, 0x55, 0x45, 0x53, 0x4b, 0x59, 0x10, 0x13, 0x1a, 0x02, 0x08, + 0x01, 0x2a, 0xdb, 0x05, 0x0a, 0x18, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x1a, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x43, + 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, + 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x47, + 0x4f, 0x47, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, + 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, + 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, + 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, + 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x10, 0x0d, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, + 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, + 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4d, + 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x49, 0x4e, 0x10, 0x14, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x20, 0x0a, 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, + 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x4c, 0x55, 0x4e, 0x41, 0x10, 0x16, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, + 0x45, 0x5f, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x47, 0x10, 0x17, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x4f, + 0x52, 0x45, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4f, 0x43, 0x55, 0x4c, 0x55, 0x53, 0x10, + 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x55, 0x54, 0x4f, 0x4d, 0x49, 0x4b, 0x10, 0x1d, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x4f, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, + 0x5f, 0x58, 0x42, 0x4f, 0x58, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x43, + 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x54, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x29, 0x0a, 0x21, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x53, 0x10, 0x24, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x28, 0x0a, 0x20, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, + 0x4d, 0x45, 0x5f, 0x46, 0x4f, 0x43, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x41, + 0x49, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x32, 0x0a, 0x2a, + 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x58, 0x42, 0x4f, + 0x58, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4c, 0x54, 0x49, + 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, + 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x4f, 0x4c, 0x54, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x2a, + 0x75, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x47, 0x49, 0x54, 0x41, + 0x4c, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, + 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x9a, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x11, 0x0a, 0x09, 0x4d, + 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, + 0x0a, 0x09, 0x44, 0x4c, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x4f, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x11, 0x0a, 0x09, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x03, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, + 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x4d, 0x4f, 0x44, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0f, 0x0a, 0x07, 0x45, 0x50, 0x49, 0x53, 0x4f, 0x44, 0x45, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0e, 0x0a, 0x06, 0x53, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x0e, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x41, 0x4b, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x09, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x46, 0x4f, 0x52, 0x4b, 0x10, + 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x41, 0x43, 0x4b, 0x10, 0x0d, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0e, 0x1a, + 0x02, 0x08, 0x01, 0x2a, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, + 0x45, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, 0x50, 0x48, + 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x42, 0x45, 0x54, 0x41, 0x10, + 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x5f, 0x41, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x4f, + 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, + 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, + 0x0f, 0x0a, 0x07, 0x52, 0x55, 0x4d, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x10, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x02, + 0x08, 0x01, 0x2a, 0x3e, 0x0a, 0x1e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x01, 0x2a, 0x60, 0x0a, 0x2a, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, + 0x4c, 0x59, 0x10, 0x02, 0x2a, 0xaf, 0x01, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, + 0x16, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, + 0x07, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, + 0x0a, 0x06, 0x41, 0x52, 0x43, 0x41, 0x44, 0x45, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, + 0x0a, 0x08, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, + 0x12, 0x18, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, + 0x53, 0x54, 0x45, 0x4d, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x50, 0x4f, + 0x52, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x55, 0x54, 0x45, 0x52, + 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xdb, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x12, 0x52, + 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, + 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x45, 0x55, 0x52, 0x4f, 0x50, + 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x4e, 0x4f, 0x52, 0x54, 0x48, + 0x5f, 0x41, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, + 0x0a, 0x09, 0x41, 0x55, 0x53, 0x54, 0x52, 0x41, 0x4c, 0x49, 0x41, 0x10, 0x03, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x4e, 0x45, 0x57, 0x5f, 0x5a, 0x45, 0x41, 0x4c, 0x41, 0x4e, 0x44, + 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4a, 0x41, 0x50, 0x41, 0x4e, 0x10, + 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4e, 0x41, 0x10, 0x06, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x41, 0x53, 0x49, 0x41, 0x10, 0x07, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x57, 0x4f, 0x52, 0x4c, 0x44, 0x57, 0x49, 0x44, 0x45, 0x10, + 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4b, 0x4f, 0x52, 0x45, 0x41, 0x10, 0x09, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x52, 0x41, 0x5a, 0x49, 0x4c, 0x10, 0x0a, + 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x65, 0x0a, 0x24, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x27, + 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, + 0x04, 0x49, 0x47, 0x44, 0x42, 0x10, 0x79, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x4b, 0x0a, 0x15, 0x54, + 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x45, 0x53, 0x54, 0x44, 0x55, 0x4d, 0x4d, + 0x59, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x32, 0x10, 0x02, 0x42, 0x04, 0x48, 0x02, 0x50, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_proto_igdbapi_proto_rawDescOnce sync.Once + file_proto_igdbapi_proto_rawDescData []byte +) + +func file_proto_igdbapi_proto_rawDescGZIP() []byte { + file_proto_igdbapi_proto_rawDescOnce.Do(func() { + file_proto_igdbapi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc))) + }) + return file_proto_igdbapi_proto_rawDescData +} + +var file_proto_igdbapi_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_proto_igdbapi_proto_msgTypes = make([]protoimpl.MessageInfo, 145) +var file_proto_igdbapi_proto_goTypes = []any{ + (AgeRatingCategoryEnum)(0), // 0: proto.AgeRatingCategoryEnum + (AgeRatingRatingEnum)(0), // 1: proto.AgeRatingRatingEnum + (AgeRatingContentDescriptionCategoryEnum)(0), // 2: proto.AgeRatingContentDescriptionCategoryEnum + (GenderGenderEnum)(0), // 3: proto.GenderGenderEnum + (CharacterSpeciesEnum)(0), // 4: proto.CharacterSpeciesEnum + (DateFormatChangeDateCategoryEnum)(0), // 5: proto.DateFormatChangeDateCategoryEnum + (WebsiteCategoryEnum)(0), // 6: proto.WebsiteCategoryEnum + (ExternalGameCategoryEnum)(0), // 7: proto.ExternalGameCategoryEnum + (ExternalGameMediaEnum)(0), // 8: proto.ExternalGameMediaEnum + (GameCategoryEnum)(0), // 9: proto.GameCategoryEnum + (GameStatusEnum)(0), // 10: proto.GameStatusEnum + (GameVersionFeatureCategoryEnum)(0), // 11: proto.GameVersionFeatureCategoryEnum + (GameVersionFeatureValueIncludedFeatureEnum)(0), // 12: proto.GameVersionFeatureValueIncludedFeatureEnum + (PlatformCategoryEnum)(0), // 13: proto.PlatformCategoryEnum + (RegionRegionEnum)(0), // 14: proto.RegionRegionEnum + (PopularitySourcePopularitySourceEnum)(0), // 15: proto.PopularitySourcePopularitySourceEnum + (TestDummyEnumTestEnum)(0), // 16: proto.TestDummyEnumTestEnum + (*Count)(nil), // 17: proto.Count + (*MultiQueryResult)(nil), // 18: proto.MultiQueryResult + (*MultiQueryResultArray)(nil), // 19: proto.MultiQueryResultArray + (*AgeRatingResult)(nil), // 20: proto.AgeRatingResult + (*AgeRating)(nil), // 21: proto.AgeRating + (*AgeRatingCategoryResult)(nil), // 22: proto.AgeRatingCategoryResult + (*AgeRatingCategory)(nil), // 23: proto.AgeRatingCategory + (*AgeRatingContentDescriptionResult)(nil), // 24: proto.AgeRatingContentDescriptionResult + (*AgeRatingContentDescription)(nil), // 25: proto.AgeRatingContentDescription + (*AgeRatingContentDescriptionV2Result)(nil), // 26: proto.AgeRatingContentDescriptionV2Result + (*AgeRatingContentDescriptionV2)(nil), // 27: proto.AgeRatingContentDescriptionV2 + (*AgeRatingOrganizationResult)(nil), // 28: proto.AgeRatingOrganizationResult + (*AgeRatingOrganization)(nil), // 29: proto.AgeRatingOrganization + (*AlternativeNameResult)(nil), // 30: proto.AlternativeNameResult + (*AlternativeName)(nil), // 31: proto.AlternativeName + (*ArtworkResult)(nil), // 32: proto.ArtworkResult + (*Artwork)(nil), // 33: proto.Artwork + (*CharacterResult)(nil), // 34: proto.CharacterResult + (*Character)(nil), // 35: proto.Character + (*CharacterGenderResult)(nil), // 36: proto.CharacterGenderResult + (*CharacterGender)(nil), // 37: proto.CharacterGender + (*CharacterMugShotResult)(nil), // 38: proto.CharacterMugShotResult + (*CharacterMugShot)(nil), // 39: proto.CharacterMugShot + (*CharacterSpecieResult)(nil), // 40: proto.CharacterSpecieResult + (*CharacterSpecie)(nil), // 41: proto.CharacterSpecie + (*CollectionResult)(nil), // 42: proto.CollectionResult + (*Collection)(nil), // 43: proto.Collection + (*CollectionMembershipResult)(nil), // 44: proto.CollectionMembershipResult + (*CollectionMembership)(nil), // 45: proto.CollectionMembership + (*CollectionMembershipTypeResult)(nil), // 46: proto.CollectionMembershipTypeResult + (*CollectionMembershipType)(nil), // 47: proto.CollectionMembershipType + (*CollectionRelationResult)(nil), // 48: proto.CollectionRelationResult + (*CollectionRelation)(nil), // 49: proto.CollectionRelation + (*CollectionRelationTypeResult)(nil), // 50: proto.CollectionRelationTypeResult + (*CollectionRelationType)(nil), // 51: proto.CollectionRelationType + (*CollectionTypeResult)(nil), // 52: proto.CollectionTypeResult + (*CollectionType)(nil), // 53: proto.CollectionType + (*CompanyResult)(nil), // 54: proto.CompanyResult + (*Company)(nil), // 55: proto.Company + (*CompanyLogoResult)(nil), // 56: proto.CompanyLogoResult + (*CompanyLogo)(nil), // 57: proto.CompanyLogo + (*CompanyStatusResult)(nil), // 58: proto.CompanyStatusResult + (*CompanyStatus)(nil), // 59: proto.CompanyStatus + (*CompanyWebsiteResult)(nil), // 60: proto.CompanyWebsiteResult + (*CompanyWebsite)(nil), // 61: proto.CompanyWebsite + (*CoverResult)(nil), // 62: proto.CoverResult + (*Cover)(nil), // 63: proto.Cover + (*DateFormatResult)(nil), // 64: proto.DateFormatResult + (*DateFormat)(nil), // 65: proto.DateFormat + (*EventResult)(nil), // 66: proto.EventResult + (*Event)(nil), // 67: proto.Event + (*EventLogoResult)(nil), // 68: proto.EventLogoResult + (*EventLogo)(nil), // 69: proto.EventLogo + (*EventNetworkResult)(nil), // 70: proto.EventNetworkResult + (*EventNetwork)(nil), // 71: proto.EventNetwork + (*ExternalGameResult)(nil), // 72: proto.ExternalGameResult + (*ExternalGame)(nil), // 73: proto.ExternalGame + (*ExternalGameSourceResult)(nil), // 74: proto.ExternalGameSourceResult + (*ExternalGameSource)(nil), // 75: proto.ExternalGameSource + (*FranchiseResult)(nil), // 76: proto.FranchiseResult + (*Franchise)(nil), // 77: proto.Franchise + (*GameResult)(nil), // 78: proto.GameResult + (*Game)(nil), // 79: proto.Game + (*GameEngineResult)(nil), // 80: proto.GameEngineResult + (*GameEngine)(nil), // 81: proto.GameEngine + (*GameEngineLogoResult)(nil), // 82: proto.GameEngineLogoResult + (*GameEngineLogo)(nil), // 83: proto.GameEngineLogo + (*GameLocalizationResult)(nil), // 84: proto.GameLocalizationResult + (*GameLocalization)(nil), // 85: proto.GameLocalization + (*GameModeResult)(nil), // 86: proto.GameModeResult + (*GameMode)(nil), // 87: proto.GameMode + (*GameReleaseFormatResult)(nil), // 88: proto.GameReleaseFormatResult + (*GameReleaseFormat)(nil), // 89: proto.GameReleaseFormat + (*GameStatusResult)(nil), // 90: proto.GameStatusResult + (*GameStatus)(nil), // 91: proto.GameStatus + (*GameTimeToBeatResult)(nil), // 92: proto.GameTimeToBeatResult + (*GameTimeToBeat)(nil), // 93: proto.GameTimeToBeat + (*GameTypeResult)(nil), // 94: proto.GameTypeResult + (*GameType)(nil), // 95: proto.GameType + (*GameVersionResult)(nil), // 96: proto.GameVersionResult + (*GameVersion)(nil), // 97: proto.GameVersion + (*GameVersionFeatureResult)(nil), // 98: proto.GameVersionFeatureResult + (*GameVersionFeature)(nil), // 99: proto.GameVersionFeature + (*GameVersionFeatureValueResult)(nil), // 100: proto.GameVersionFeatureValueResult + (*GameVersionFeatureValue)(nil), // 101: proto.GameVersionFeatureValue + (*GameVideoResult)(nil), // 102: proto.GameVideoResult + (*GameVideo)(nil), // 103: proto.GameVideo + (*GenreResult)(nil), // 104: proto.GenreResult + (*Genre)(nil), // 105: proto.Genre + (*InvolvedCompanyResult)(nil), // 106: proto.InvolvedCompanyResult + (*InvolvedCompany)(nil), // 107: proto.InvolvedCompany + (*KeywordResult)(nil), // 108: proto.KeywordResult + (*Keyword)(nil), // 109: proto.Keyword + (*LanguageResult)(nil), // 110: proto.LanguageResult + (*Language)(nil), // 111: proto.Language + (*LanguageSupportResult)(nil), // 112: proto.LanguageSupportResult + (*LanguageSupport)(nil), // 113: proto.LanguageSupport + (*LanguageSupportTypeResult)(nil), // 114: proto.LanguageSupportTypeResult + (*LanguageSupportType)(nil), // 115: proto.LanguageSupportType + (*MultiplayerModeResult)(nil), // 116: proto.MultiplayerModeResult + (*MultiplayerMode)(nil), // 117: proto.MultiplayerMode + (*NetworkTypeResult)(nil), // 118: proto.NetworkTypeResult + (*NetworkType)(nil), // 119: proto.NetworkType + (*PlatformResult)(nil), // 120: proto.PlatformResult + (*Platform)(nil), // 121: proto.Platform + (*PlatformFamilyResult)(nil), // 122: proto.PlatformFamilyResult + (*PlatformFamily)(nil), // 123: proto.PlatformFamily + (*PlatformLogoResult)(nil), // 124: proto.PlatformLogoResult + (*PlatformLogo)(nil), // 125: proto.PlatformLogo + (*PlatformTypeResult)(nil), // 126: proto.PlatformTypeResult + (*PlatformType)(nil), // 127: proto.PlatformType + (*PlatformVersionResult)(nil), // 128: proto.PlatformVersionResult + (*PlatformVersion)(nil), // 129: proto.PlatformVersion + (*PlatformVersionCompanyResult)(nil), // 130: proto.PlatformVersionCompanyResult + (*PlatformVersionCompany)(nil), // 131: proto.PlatformVersionCompany + (*PlatformVersionReleaseDateResult)(nil), // 132: proto.PlatformVersionReleaseDateResult + (*PlatformVersionReleaseDate)(nil), // 133: proto.PlatformVersionReleaseDate + (*PlatformWebsiteResult)(nil), // 134: proto.PlatformWebsiteResult + (*PlatformWebsite)(nil), // 135: proto.PlatformWebsite + (*PlayerPerspectiveResult)(nil), // 136: proto.PlayerPerspectiveResult + (*PlayerPerspective)(nil), // 137: proto.PlayerPerspective + (*PopularityPrimitiveResult)(nil), // 138: proto.PopularityPrimitiveResult + (*PopularityPrimitive)(nil), // 139: proto.PopularityPrimitive + (*PopularityTypeResult)(nil), // 140: proto.PopularityTypeResult + (*PopularityType)(nil), // 141: proto.PopularityType + (*RegionResult)(nil), // 142: proto.RegionResult + (*Region)(nil), // 143: proto.Region + (*ReleaseDateResult)(nil), // 144: proto.ReleaseDateResult + (*ReleaseDate)(nil), // 145: proto.ReleaseDate + (*ReleaseDateRegionResult)(nil), // 146: proto.ReleaseDateRegionResult + (*ReleaseDateRegion)(nil), // 147: proto.ReleaseDateRegion + (*ReleaseDateStatusResult)(nil), // 148: proto.ReleaseDateStatusResult + (*ReleaseDateStatus)(nil), // 149: proto.ReleaseDateStatus + (*ScreenshotResult)(nil), // 150: proto.ScreenshotResult + (*Screenshot)(nil), // 151: proto.Screenshot + (*SearchResult)(nil), // 152: proto.SearchResult + (*Search)(nil), // 153: proto.Search + (*TestDummyResult)(nil), // 154: proto.TestDummyResult + (*TestDummy)(nil), // 155: proto.TestDummy + (*ThemeResult)(nil), // 156: proto.ThemeResult + (*Theme)(nil), // 157: proto.Theme + (*WebsiteResult)(nil), // 158: proto.WebsiteResult + (*Website)(nil), // 159: proto.Website + (*WebsiteTypeResult)(nil), // 160: proto.WebsiteTypeResult + (*WebsiteType)(nil), // 161: proto.WebsiteType + (*timestamppb.Timestamp)(nil), // 162: google.protobuf.Timestamp +} +var file_proto_igdbapi_proto_depIdxs = []int32{ + 18, // 0: proto.MultiQueryResultArray.result:type_name -> proto.MultiQueryResult + 21, // 1: proto.AgeRatingResult.ageratings:type_name -> proto.AgeRating + 0, // 2: proto.AgeRating.category:type_name -> proto.AgeRatingCategoryEnum + 25, // 3: proto.AgeRating.content_descriptions:type_name -> proto.AgeRatingContentDescription + 1, // 4: proto.AgeRating.rating:type_name -> proto.AgeRatingRatingEnum + 29, // 5: proto.AgeRating.organization:type_name -> proto.AgeRatingOrganization + 23, // 6: proto.AgeRating.rating_category:type_name -> proto.AgeRatingCategory + 27, // 7: proto.AgeRating.rating_content_descriptions:type_name -> proto.AgeRatingContentDescriptionV2 + 23, // 8: proto.AgeRatingCategoryResult.ageratingcategories:type_name -> proto.AgeRatingCategory + 29, // 9: proto.AgeRatingCategory.organization:type_name -> proto.AgeRatingOrganization + 162, // 10: proto.AgeRatingCategory.created_at:type_name -> google.protobuf.Timestamp + 162, // 11: proto.AgeRatingCategory.updated_at:type_name -> google.protobuf.Timestamp + 25, // 12: proto.AgeRatingContentDescriptionResult.ageratingcontentdescriptions:type_name -> proto.AgeRatingContentDescription + 2, // 13: proto.AgeRatingContentDescription.category:type_name -> proto.AgeRatingContentDescriptionCategoryEnum + 27, // 14: proto.AgeRatingContentDescriptionV2Result.ageratingcontentdescriptionsv2:type_name -> proto.AgeRatingContentDescriptionV2 + 29, // 15: proto.AgeRatingContentDescriptionV2.organization:type_name -> proto.AgeRatingOrganization + 162, // 16: proto.AgeRatingContentDescriptionV2.created_at:type_name -> google.protobuf.Timestamp + 162, // 17: proto.AgeRatingContentDescriptionV2.updated_at:type_name -> google.protobuf.Timestamp + 29, // 18: proto.AgeRatingOrganizationResult.ageratingorganizations:type_name -> proto.AgeRatingOrganization + 162, // 19: proto.AgeRatingOrganization.created_at:type_name -> google.protobuf.Timestamp + 162, // 20: proto.AgeRatingOrganization.updated_at:type_name -> google.protobuf.Timestamp + 31, // 21: proto.AlternativeNameResult.alternativenames:type_name -> proto.AlternativeName + 79, // 22: proto.AlternativeName.game:type_name -> proto.Game + 33, // 23: proto.ArtworkResult.artworks:type_name -> proto.Artwork + 79, // 24: proto.Artwork.game:type_name -> proto.Game + 35, // 25: proto.CharacterResult.characters:type_name -> proto.Character + 162, // 26: proto.Character.created_at:type_name -> google.protobuf.Timestamp + 79, // 27: proto.Character.games:type_name -> proto.Game + 3, // 28: proto.Character.gender:type_name -> proto.GenderGenderEnum + 39, // 29: proto.Character.mug_shot:type_name -> proto.CharacterMugShot + 4, // 30: proto.Character.species:type_name -> proto.CharacterSpeciesEnum + 162, // 31: proto.Character.updated_at:type_name -> google.protobuf.Timestamp + 37, // 32: proto.Character.character_gender:type_name -> proto.CharacterGender + 41, // 33: proto.Character.character_species:type_name -> proto.CharacterSpecie + 37, // 34: proto.CharacterGenderResult.charactergenders:type_name -> proto.CharacterGender + 162, // 35: proto.CharacterGender.created_at:type_name -> google.protobuf.Timestamp + 162, // 36: proto.CharacterGender.updated_at:type_name -> google.protobuf.Timestamp + 39, // 37: proto.CharacterMugShotResult.charactermugshots:type_name -> proto.CharacterMugShot + 41, // 38: proto.CharacterSpecieResult.characterspecies:type_name -> proto.CharacterSpecie + 162, // 39: proto.CharacterSpecie.created_at:type_name -> google.protobuf.Timestamp + 162, // 40: proto.CharacterSpecie.updated_at:type_name -> google.protobuf.Timestamp + 43, // 41: proto.CollectionResult.collections:type_name -> proto.Collection + 162, // 42: proto.Collection.created_at:type_name -> google.protobuf.Timestamp + 79, // 43: proto.Collection.games:type_name -> proto.Game + 162, // 44: proto.Collection.updated_at:type_name -> google.protobuf.Timestamp + 53, // 45: proto.Collection.type:type_name -> proto.CollectionType + 49, // 46: proto.Collection.as_parent_relations:type_name -> proto.CollectionRelation + 49, // 47: proto.Collection.as_child_relations:type_name -> proto.CollectionRelation + 45, // 48: proto.CollectionMembershipResult.collectionmemberships:type_name -> proto.CollectionMembership + 79, // 49: proto.CollectionMembership.game:type_name -> proto.Game + 43, // 50: proto.CollectionMembership.collection:type_name -> proto.Collection + 47, // 51: proto.CollectionMembership.type:type_name -> proto.CollectionMembershipType + 162, // 52: proto.CollectionMembership.updated_at:type_name -> google.protobuf.Timestamp + 162, // 53: proto.CollectionMembership.created_at:type_name -> google.protobuf.Timestamp + 47, // 54: proto.CollectionMembershipTypeResult.collectionmembershiptypes:type_name -> proto.CollectionMembershipType + 53, // 55: proto.CollectionMembershipType.allowed_collection_type:type_name -> proto.CollectionType + 162, // 56: proto.CollectionMembershipType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 57: proto.CollectionMembershipType.created_at:type_name -> google.protobuf.Timestamp + 49, // 58: proto.CollectionRelationResult.collectionrelations:type_name -> proto.CollectionRelation + 43, // 59: proto.CollectionRelation.child_collection:type_name -> proto.Collection + 43, // 60: proto.CollectionRelation.parent_collection:type_name -> proto.Collection + 51, // 61: proto.CollectionRelation.type:type_name -> proto.CollectionRelationType + 162, // 62: proto.CollectionRelation.updated_at:type_name -> google.protobuf.Timestamp + 162, // 63: proto.CollectionRelation.created_at:type_name -> google.protobuf.Timestamp + 51, // 64: proto.CollectionRelationTypeResult.collectionrelationtypes:type_name -> proto.CollectionRelationType + 53, // 65: proto.CollectionRelationType.allowed_child_type:type_name -> proto.CollectionType + 53, // 66: proto.CollectionRelationType.allowed_parent_type:type_name -> proto.CollectionType + 162, // 67: proto.CollectionRelationType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 68: proto.CollectionRelationType.created_at:type_name -> google.protobuf.Timestamp + 53, // 69: proto.CollectionTypeResult.collectiontypes:type_name -> proto.CollectionType + 162, // 70: proto.CollectionType.updated_at:type_name -> google.protobuf.Timestamp + 162, // 71: proto.CollectionType.created_at:type_name -> google.protobuf.Timestamp + 55, // 72: proto.CompanyResult.companies:type_name -> proto.Company + 162, // 73: proto.Company.change_date:type_name -> google.protobuf.Timestamp + 5, // 74: proto.Company.change_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum + 55, // 75: proto.Company.changed_company_id:type_name -> proto.Company + 162, // 76: proto.Company.created_at:type_name -> google.protobuf.Timestamp + 79, // 77: proto.Company.developed:type_name -> proto.Game + 57, // 78: proto.Company.logo:type_name -> proto.CompanyLogo + 55, // 79: proto.Company.parent:type_name -> proto.Company + 79, // 80: proto.Company.published:type_name -> proto.Game + 162, // 81: proto.Company.start_date:type_name -> google.protobuf.Timestamp + 5, // 82: proto.Company.start_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 83: proto.Company.updated_at:type_name -> google.protobuf.Timestamp + 61, // 84: proto.Company.websites:type_name -> proto.CompanyWebsite + 59, // 85: proto.Company.status:type_name -> proto.CompanyStatus + 65, // 86: proto.Company.start_date_format:type_name -> proto.DateFormat + 65, // 87: proto.Company.change_date_format:type_name -> proto.DateFormat + 57, // 88: proto.CompanyLogoResult.companylogos:type_name -> proto.CompanyLogo + 59, // 89: proto.CompanyStatusResult.companystatuses:type_name -> proto.CompanyStatus + 162, // 90: proto.CompanyStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 91: proto.CompanyStatus.updated_at:type_name -> google.protobuf.Timestamp + 61, // 92: proto.CompanyWebsiteResult.companywebsites:type_name -> proto.CompanyWebsite + 6, // 93: proto.CompanyWebsite.category:type_name -> proto.WebsiteCategoryEnum + 161, // 94: proto.CompanyWebsite.type:type_name -> proto.WebsiteType + 63, // 95: proto.CoverResult.covers:type_name -> proto.Cover + 79, // 96: proto.Cover.game:type_name -> proto.Game + 85, // 97: proto.Cover.game_localization:type_name -> proto.GameLocalization + 65, // 98: proto.DateFormatResult.dateformats:type_name -> proto.DateFormat + 162, // 99: proto.DateFormat.created_at:type_name -> google.protobuf.Timestamp + 162, // 100: proto.DateFormat.updated_at:type_name -> google.protobuf.Timestamp + 67, // 101: proto.EventResult.events:type_name -> proto.Event + 69, // 102: proto.Event.event_logo:type_name -> proto.EventLogo + 162, // 103: proto.Event.start_time:type_name -> google.protobuf.Timestamp + 162, // 104: proto.Event.end_time:type_name -> google.protobuf.Timestamp + 79, // 105: proto.Event.games:type_name -> proto.Game + 103, // 106: proto.Event.videos:type_name -> proto.GameVideo + 71, // 107: proto.Event.event_networks:type_name -> proto.EventNetwork + 162, // 108: proto.Event.created_at:type_name -> google.protobuf.Timestamp + 162, // 109: proto.Event.updated_at:type_name -> google.protobuf.Timestamp + 69, // 110: proto.EventLogoResult.eventlogos:type_name -> proto.EventLogo + 67, // 111: proto.EventLogo.event:type_name -> proto.Event + 162, // 112: proto.EventLogo.created_at:type_name -> google.protobuf.Timestamp + 162, // 113: proto.EventLogo.updated_at:type_name -> google.protobuf.Timestamp + 71, // 114: proto.EventNetworkResult.eventnetworks:type_name -> proto.EventNetwork + 67, // 115: proto.EventNetwork.event:type_name -> proto.Event + 119, // 116: proto.EventNetwork.network_type:type_name -> proto.NetworkType + 162, // 117: proto.EventNetwork.created_at:type_name -> google.protobuf.Timestamp + 162, // 118: proto.EventNetwork.updated_at:type_name -> google.protobuf.Timestamp + 73, // 119: proto.ExternalGameResult.externalgames:type_name -> proto.ExternalGame + 7, // 120: proto.ExternalGame.category:type_name -> proto.ExternalGameCategoryEnum + 162, // 121: proto.ExternalGame.created_at:type_name -> google.protobuf.Timestamp + 79, // 122: proto.ExternalGame.game:type_name -> proto.Game + 162, // 123: proto.ExternalGame.updated_at:type_name -> google.protobuf.Timestamp + 8, // 124: proto.ExternalGame.media:type_name -> proto.ExternalGameMediaEnum + 121, // 125: proto.ExternalGame.platform:type_name -> proto.Platform + 75, // 126: proto.ExternalGame.external_game_source:type_name -> proto.ExternalGameSource + 89, // 127: proto.ExternalGame.game_release_format:type_name -> proto.GameReleaseFormat + 75, // 128: proto.ExternalGameSourceResult.externalgamesources:type_name -> proto.ExternalGameSource + 162, // 129: proto.ExternalGameSource.created_at:type_name -> google.protobuf.Timestamp + 162, // 130: proto.ExternalGameSource.updated_at:type_name -> google.protobuf.Timestamp + 77, // 131: proto.FranchiseResult.franchises:type_name -> proto.Franchise + 162, // 132: proto.Franchise.created_at:type_name -> google.protobuf.Timestamp + 79, // 133: proto.Franchise.games:type_name -> proto.Game + 162, // 134: proto.Franchise.updated_at:type_name -> google.protobuf.Timestamp + 79, // 135: proto.GameResult.games:type_name -> proto.Game + 21, // 136: proto.Game.age_ratings:type_name -> proto.AgeRating + 31, // 137: proto.Game.alternative_names:type_name -> proto.AlternativeName + 33, // 138: proto.Game.artworks:type_name -> proto.Artwork + 79, // 139: proto.Game.bundles:type_name -> proto.Game + 9, // 140: proto.Game.category:type_name -> proto.GameCategoryEnum + 43, // 141: proto.Game.collection:type_name -> proto.Collection + 63, // 142: proto.Game.cover:type_name -> proto.Cover + 162, // 143: proto.Game.created_at:type_name -> google.protobuf.Timestamp + 79, // 144: proto.Game.dlcs:type_name -> proto.Game + 79, // 145: proto.Game.expansions:type_name -> proto.Game + 73, // 146: proto.Game.external_games:type_name -> proto.ExternalGame + 162, // 147: proto.Game.first_release_date:type_name -> google.protobuf.Timestamp + 77, // 148: proto.Game.franchise:type_name -> proto.Franchise + 77, // 149: proto.Game.franchises:type_name -> proto.Franchise + 81, // 150: proto.Game.game_engines:type_name -> proto.GameEngine + 87, // 151: proto.Game.game_modes:type_name -> proto.GameMode + 105, // 152: proto.Game.genres:type_name -> proto.Genre + 107, // 153: proto.Game.involved_companies:type_name -> proto.InvolvedCompany + 109, // 154: proto.Game.keywords:type_name -> proto.Keyword + 117, // 155: proto.Game.multiplayer_modes:type_name -> proto.MultiplayerMode + 79, // 156: proto.Game.parent_game:type_name -> proto.Game + 121, // 157: proto.Game.platforms:type_name -> proto.Platform + 137, // 158: proto.Game.player_perspectives:type_name -> proto.PlayerPerspective + 145, // 159: proto.Game.release_dates:type_name -> proto.ReleaseDate + 151, // 160: proto.Game.screenshots:type_name -> proto.Screenshot + 79, // 161: proto.Game.similar_games:type_name -> proto.Game + 79, // 162: proto.Game.standalone_expansions:type_name -> proto.Game + 10, // 163: proto.Game.status:type_name -> proto.GameStatusEnum + 157, // 164: proto.Game.themes:type_name -> proto.Theme + 162, // 165: proto.Game.updated_at:type_name -> google.protobuf.Timestamp + 79, // 166: proto.Game.version_parent:type_name -> proto.Game + 103, // 167: proto.Game.videos:type_name -> proto.GameVideo + 159, // 168: proto.Game.websites:type_name -> proto.Website + 79, // 169: proto.Game.remakes:type_name -> proto.Game + 79, // 170: proto.Game.remasters:type_name -> proto.Game + 79, // 171: proto.Game.expanded_games:type_name -> proto.Game + 79, // 172: proto.Game.ports:type_name -> proto.Game + 79, // 173: proto.Game.forks:type_name -> proto.Game + 113, // 174: proto.Game.language_supports:type_name -> proto.LanguageSupport + 85, // 175: proto.Game.game_localizations:type_name -> proto.GameLocalization + 43, // 176: proto.Game.collections:type_name -> proto.Collection + 91, // 177: proto.Game.game_status:type_name -> proto.GameStatus + 95, // 178: proto.Game.game_type:type_name -> proto.GameType + 81, // 179: proto.GameEngineResult.gameengines:type_name -> proto.GameEngine + 55, // 180: proto.GameEngine.companies:type_name -> proto.Company + 162, // 181: proto.GameEngine.created_at:type_name -> google.protobuf.Timestamp + 83, // 182: proto.GameEngine.logo:type_name -> proto.GameEngineLogo + 121, // 183: proto.GameEngine.platforms:type_name -> proto.Platform + 162, // 184: proto.GameEngine.updated_at:type_name -> google.protobuf.Timestamp + 83, // 185: proto.GameEngineLogoResult.gameenginelogos:type_name -> proto.GameEngineLogo + 85, // 186: proto.GameLocalizationResult.gamelocalizations:type_name -> proto.GameLocalization + 63, // 187: proto.GameLocalization.cover:type_name -> proto.Cover + 79, // 188: proto.GameLocalization.game:type_name -> proto.Game + 143, // 189: proto.GameLocalization.region:type_name -> proto.Region + 162, // 190: proto.GameLocalization.created_at:type_name -> google.protobuf.Timestamp + 162, // 191: proto.GameLocalization.updated_at:type_name -> google.protobuf.Timestamp + 87, // 192: proto.GameModeResult.gamemodes:type_name -> proto.GameMode + 162, // 193: proto.GameMode.created_at:type_name -> google.protobuf.Timestamp + 162, // 194: proto.GameMode.updated_at:type_name -> google.protobuf.Timestamp + 89, // 195: proto.GameReleaseFormatResult.gamereleaseformats:type_name -> proto.GameReleaseFormat + 162, // 196: proto.GameReleaseFormat.created_at:type_name -> google.protobuf.Timestamp + 162, // 197: proto.GameReleaseFormat.updated_at:type_name -> google.protobuf.Timestamp + 91, // 198: proto.GameStatusResult.gamestatuses:type_name -> proto.GameStatus + 162, // 199: proto.GameStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 200: proto.GameStatus.updated_at:type_name -> google.protobuf.Timestamp + 93, // 201: proto.GameTimeToBeatResult.gametimetobeats:type_name -> proto.GameTimeToBeat + 162, // 202: proto.GameTimeToBeat.created_at:type_name -> google.protobuf.Timestamp + 162, // 203: proto.GameTimeToBeat.updated_at:type_name -> google.protobuf.Timestamp + 95, // 204: proto.GameTypeResult.gametypes:type_name -> proto.GameType + 162, // 205: proto.GameType.created_at:type_name -> google.protobuf.Timestamp + 162, // 206: proto.GameType.updated_at:type_name -> google.protobuf.Timestamp + 97, // 207: proto.GameVersionResult.gameversions:type_name -> proto.GameVersion + 162, // 208: proto.GameVersion.created_at:type_name -> google.protobuf.Timestamp + 99, // 209: proto.GameVersion.features:type_name -> proto.GameVersionFeature + 79, // 210: proto.GameVersion.game:type_name -> proto.Game + 79, // 211: proto.GameVersion.games:type_name -> proto.Game + 162, // 212: proto.GameVersion.updated_at:type_name -> google.protobuf.Timestamp + 99, // 213: proto.GameVersionFeatureResult.gameversionfeatures:type_name -> proto.GameVersionFeature + 11, // 214: proto.GameVersionFeature.category:type_name -> proto.GameVersionFeatureCategoryEnum + 101, // 215: proto.GameVersionFeature.values:type_name -> proto.GameVersionFeatureValue + 101, // 216: proto.GameVersionFeatureValueResult.gameversionfeaturevalues:type_name -> proto.GameVersionFeatureValue + 79, // 217: proto.GameVersionFeatureValue.game:type_name -> proto.Game + 99, // 218: proto.GameVersionFeatureValue.game_feature:type_name -> proto.GameVersionFeature + 12, // 219: proto.GameVersionFeatureValue.included_feature:type_name -> proto.GameVersionFeatureValueIncludedFeatureEnum + 103, // 220: proto.GameVideoResult.gamevideos:type_name -> proto.GameVideo + 79, // 221: proto.GameVideo.game:type_name -> proto.Game + 105, // 222: proto.GenreResult.genres:type_name -> proto.Genre + 162, // 223: proto.Genre.created_at:type_name -> google.protobuf.Timestamp + 162, // 224: proto.Genre.updated_at:type_name -> google.protobuf.Timestamp + 107, // 225: proto.InvolvedCompanyResult.involvedcompanies:type_name -> proto.InvolvedCompany + 55, // 226: proto.InvolvedCompany.company:type_name -> proto.Company + 162, // 227: proto.InvolvedCompany.created_at:type_name -> google.protobuf.Timestamp + 79, // 228: proto.InvolvedCompany.game:type_name -> proto.Game + 162, // 229: proto.InvolvedCompany.updated_at:type_name -> google.protobuf.Timestamp + 109, // 230: proto.KeywordResult.keywords:type_name -> proto.Keyword + 162, // 231: proto.Keyword.created_at:type_name -> google.protobuf.Timestamp + 162, // 232: proto.Keyword.updated_at:type_name -> google.protobuf.Timestamp + 111, // 233: proto.LanguageResult.languages:type_name -> proto.Language + 162, // 234: proto.Language.created_at:type_name -> google.protobuf.Timestamp + 162, // 235: proto.Language.updated_at:type_name -> google.protobuf.Timestamp + 113, // 236: proto.LanguageSupportResult.languagesupports:type_name -> proto.LanguageSupport + 79, // 237: proto.LanguageSupport.game:type_name -> proto.Game + 111, // 238: proto.LanguageSupport.language:type_name -> proto.Language + 115, // 239: proto.LanguageSupport.language_support_type:type_name -> proto.LanguageSupportType + 162, // 240: proto.LanguageSupport.created_at:type_name -> google.protobuf.Timestamp + 162, // 241: proto.LanguageSupport.updated_at:type_name -> google.protobuf.Timestamp + 115, // 242: proto.LanguageSupportTypeResult.languagesupporttypes:type_name -> proto.LanguageSupportType + 162, // 243: proto.LanguageSupportType.created_at:type_name -> google.protobuf.Timestamp + 162, // 244: proto.LanguageSupportType.updated_at:type_name -> google.protobuf.Timestamp + 117, // 245: proto.MultiplayerModeResult.multiplayermodes:type_name -> proto.MultiplayerMode + 79, // 246: proto.MultiplayerMode.game:type_name -> proto.Game + 121, // 247: proto.MultiplayerMode.platform:type_name -> proto.Platform + 119, // 248: proto.NetworkTypeResult.networktypes:type_name -> proto.NetworkType + 71, // 249: proto.NetworkType.event_networks:type_name -> proto.EventNetwork + 162, // 250: proto.NetworkType.created_at:type_name -> google.protobuf.Timestamp + 162, // 251: proto.NetworkType.updated_at:type_name -> google.protobuf.Timestamp + 121, // 252: proto.PlatformResult.platforms:type_name -> proto.Platform + 13, // 253: proto.Platform.category:type_name -> proto.PlatformCategoryEnum + 162, // 254: proto.Platform.created_at:type_name -> google.protobuf.Timestamp + 125, // 255: proto.Platform.platform_logo:type_name -> proto.PlatformLogo + 123, // 256: proto.Platform.platform_family:type_name -> proto.PlatformFamily + 162, // 257: proto.Platform.updated_at:type_name -> google.protobuf.Timestamp + 129, // 258: proto.Platform.versions:type_name -> proto.PlatformVersion + 135, // 259: proto.Platform.websites:type_name -> proto.PlatformWebsite + 127, // 260: proto.Platform.platform_type:type_name -> proto.PlatformType + 123, // 261: proto.PlatformFamilyResult.platformfamilies:type_name -> proto.PlatformFamily + 125, // 262: proto.PlatformLogoResult.platformlogos:type_name -> proto.PlatformLogo + 127, // 263: proto.PlatformTypeResult.platformtypes:type_name -> proto.PlatformType + 162, // 264: proto.PlatformType.created_at:type_name -> google.protobuf.Timestamp + 162, // 265: proto.PlatformType.updated_at:type_name -> google.protobuf.Timestamp + 129, // 266: proto.PlatformVersionResult.platformversions:type_name -> proto.PlatformVersion + 131, // 267: proto.PlatformVersion.companies:type_name -> proto.PlatformVersionCompany + 131, // 268: proto.PlatformVersion.main_manufacturer:type_name -> proto.PlatformVersionCompany + 125, // 269: proto.PlatformVersion.platform_logo:type_name -> proto.PlatformLogo + 133, // 270: proto.PlatformVersion.platform_version_release_dates:type_name -> proto.PlatformVersionReleaseDate + 131, // 271: proto.PlatformVersionCompanyResult.platformversioncompanies:type_name -> proto.PlatformVersionCompany + 55, // 272: proto.PlatformVersionCompany.company:type_name -> proto.Company + 133, // 273: proto.PlatformVersionReleaseDateResult.platformversionreleasedates:type_name -> proto.PlatformVersionReleaseDate + 5, // 274: proto.PlatformVersionReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 275: proto.PlatformVersionReleaseDate.created_at:type_name -> google.protobuf.Timestamp + 162, // 276: proto.PlatformVersionReleaseDate.date:type_name -> google.protobuf.Timestamp + 129, // 277: proto.PlatformVersionReleaseDate.platform_version:type_name -> proto.PlatformVersion + 14, // 278: proto.PlatformVersionReleaseDate.region:type_name -> proto.RegionRegionEnum + 162, // 279: proto.PlatformVersionReleaseDate.updated_at:type_name -> google.protobuf.Timestamp + 65, // 280: proto.PlatformVersionReleaseDate.date_format:type_name -> proto.DateFormat + 147, // 281: proto.PlatformVersionReleaseDate.release_region:type_name -> proto.ReleaseDateRegion + 135, // 282: proto.PlatformWebsiteResult.platformwebsites:type_name -> proto.PlatformWebsite + 6, // 283: proto.PlatformWebsite.category:type_name -> proto.WebsiteCategoryEnum + 161, // 284: proto.PlatformWebsite.type:type_name -> proto.WebsiteType + 137, // 285: proto.PlayerPerspectiveResult.playerperspectives:type_name -> proto.PlayerPerspective + 162, // 286: proto.PlayerPerspective.created_at:type_name -> google.protobuf.Timestamp + 162, // 287: proto.PlayerPerspective.updated_at:type_name -> google.protobuf.Timestamp + 139, // 288: proto.PopularityPrimitiveResult.popularityprimitives:type_name -> proto.PopularityPrimitive + 141, // 289: proto.PopularityPrimitive.popularity_type:type_name -> proto.PopularityType + 15, // 290: proto.PopularityPrimitive.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum + 162, // 291: proto.PopularityPrimitive.calculated_at:type_name -> google.protobuf.Timestamp + 162, // 292: proto.PopularityPrimitive.created_at:type_name -> google.protobuf.Timestamp + 162, // 293: proto.PopularityPrimitive.updated_at:type_name -> google.protobuf.Timestamp + 75, // 294: proto.PopularityPrimitive.external_popularity_source:type_name -> proto.ExternalGameSource + 141, // 295: proto.PopularityTypeResult.popularitytypes:type_name -> proto.PopularityType + 15, // 296: proto.PopularityType.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum + 162, // 297: proto.PopularityType.created_at:type_name -> google.protobuf.Timestamp + 162, // 298: proto.PopularityType.updated_at:type_name -> google.protobuf.Timestamp + 75, // 299: proto.PopularityType.external_popularity_source:type_name -> proto.ExternalGameSource + 143, // 300: proto.RegionResult.regions:type_name -> proto.Region + 162, // 301: proto.Region.created_at:type_name -> google.protobuf.Timestamp + 162, // 302: proto.Region.updated_at:type_name -> google.protobuf.Timestamp + 145, // 303: proto.ReleaseDateResult.releasedates:type_name -> proto.ReleaseDate + 5, // 304: proto.ReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum + 162, // 305: proto.ReleaseDate.created_at:type_name -> google.protobuf.Timestamp + 162, // 306: proto.ReleaseDate.date:type_name -> google.protobuf.Timestamp + 79, // 307: proto.ReleaseDate.game:type_name -> proto.Game + 121, // 308: proto.ReleaseDate.platform:type_name -> proto.Platform + 14, // 309: proto.ReleaseDate.region:type_name -> proto.RegionRegionEnum + 162, // 310: proto.ReleaseDate.updated_at:type_name -> google.protobuf.Timestamp + 149, // 311: proto.ReleaseDate.status:type_name -> proto.ReleaseDateStatus + 65, // 312: proto.ReleaseDate.date_format:type_name -> proto.DateFormat + 147, // 313: proto.ReleaseDate.release_region:type_name -> proto.ReleaseDateRegion + 147, // 314: proto.ReleaseDateRegionResult.releasedateregions:type_name -> proto.ReleaseDateRegion + 162, // 315: proto.ReleaseDateRegion.created_at:type_name -> google.protobuf.Timestamp + 162, // 316: proto.ReleaseDateRegion.updated_at:type_name -> google.protobuf.Timestamp + 149, // 317: proto.ReleaseDateStatusResult.releasedatestatuses:type_name -> proto.ReleaseDateStatus + 162, // 318: proto.ReleaseDateStatus.created_at:type_name -> google.protobuf.Timestamp + 162, // 319: proto.ReleaseDateStatus.updated_at:type_name -> google.protobuf.Timestamp + 151, // 320: proto.ScreenshotResult.screenshots:type_name -> proto.Screenshot + 79, // 321: proto.Screenshot.game:type_name -> proto.Game + 153, // 322: proto.SearchResult.searches:type_name -> proto.Search + 35, // 323: proto.Search.character:type_name -> proto.Character + 43, // 324: proto.Search.collection:type_name -> proto.Collection + 55, // 325: proto.Search.company:type_name -> proto.Company + 79, // 326: proto.Search.game:type_name -> proto.Game + 121, // 327: proto.Search.platform:type_name -> proto.Platform + 162, // 328: proto.Search.published_at:type_name -> google.protobuf.Timestamp + 155, // 329: proto.Search.test_dummy:type_name -> proto.TestDummy + 157, // 330: proto.Search.theme:type_name -> proto.Theme + 155, // 331: proto.TestDummyResult.testdummies:type_name -> proto.TestDummy + 162, // 332: proto.TestDummy.created_at:type_name -> google.protobuf.Timestamp + 16, // 333: proto.TestDummy.enum_test:type_name -> proto.TestDummyEnumTestEnum + 79, // 334: proto.TestDummy.game:type_name -> proto.Game + 155, // 335: proto.TestDummy.test_dummies:type_name -> proto.TestDummy + 155, // 336: proto.TestDummy.test_dummy:type_name -> proto.TestDummy + 162, // 337: proto.TestDummy.updated_at:type_name -> google.protobuf.Timestamp + 157, // 338: proto.ThemeResult.themes:type_name -> proto.Theme + 162, // 339: proto.Theme.created_at:type_name -> google.protobuf.Timestamp + 162, // 340: proto.Theme.updated_at:type_name -> google.protobuf.Timestamp + 159, // 341: proto.WebsiteResult.websites:type_name -> proto.Website + 6, // 342: proto.Website.category:type_name -> proto.WebsiteCategoryEnum + 79, // 343: proto.Website.game:type_name -> proto.Game + 161, // 344: proto.Website.type:type_name -> proto.WebsiteType + 161, // 345: proto.WebsiteTypeResult.websitetypes:type_name -> proto.WebsiteType + 162, // 346: proto.WebsiteType.created_at:type_name -> google.protobuf.Timestamp + 162, // 347: proto.WebsiteType.updated_at:type_name -> google.protobuf.Timestamp + 348, // [348:348] is the sub-list for method output_type + 348, // [348:348] is the sub-list for method input_type + 348, // [348:348] is the sub-list for extension type_name + 348, // [348:348] is the sub-list for extension extendee + 0, // [0:348] is the sub-list for field type_name +} + +func init() { file_proto_igdbapi_proto_init() } +func file_proto_igdbapi_proto_init() { + if File_proto_igdbapi_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc)), + NumEnums: 17, + NumMessages: 145, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_proto_igdbapi_proto_goTypes, + DependencyIndexes: file_proto_igdbapi_proto_depIdxs, + EnumInfos: file_proto_igdbapi_proto_enumTypes, + MessageInfos: file_proto_igdbapi_proto_msgTypes, + }.Build() + File_proto_igdbapi_proto = out.File + file_proto_igdbapi_proto_goTypes = nil + file_proto_igdbapi_proto_depIdxs = nil +} diff --git a/proto/igdbapi.proto b/proto/igdbapi.proto new file mode 100644 index 0000000..43a732e --- /dev/null +++ b/proto/igdbapi.proto @@ -0,0 +1,1478 @@ + +syntax = "proto3"; + +package proto; + +import "google/protobuf/timestamp.proto"; + +option java_multiple_files = true; // Must be true because of private access in files. +option optimize_for = CODE_SIZE; + +message Count { + int64 count = 1; +} + +message MultiQueryResult { + string name = 1; + repeated bytes results = 2; + int64 count = 3; +} + +message MultiQueryResultArray { + repeated MultiQueryResult result = 1; +} + +message AgeRatingResult { + repeated AgeRating ageratings = 1; +} + +message AgeRating { + uint64 id = 1; + AgeRatingCategoryEnum category = 2 [deprecated = true]; + repeated AgeRatingContentDescription content_descriptions = 3; + AgeRatingRatingEnum rating = 4 [deprecated = true]; + string rating_cover_url = 5; + string synopsis = 6; + string checksum = 7; + AgeRatingOrganization organization = 8; + AgeRatingCategory rating_category = 9; + repeated AgeRatingContentDescriptionV2 rating_content_descriptions = 10; +} + + +enum AgeRatingCategoryEnum { + AGERATING_CATEGORY_NULL = 0 [deprecated = true]; + ESRB = 1 [deprecated = true]; + PEGI = 2 [deprecated = true]; + CERO = 3 [deprecated = true]; + USK = 4 [deprecated = true]; + GRAC = 5 [deprecated = true]; + CLASS_IND = 6 [deprecated = true]; + ACB = 7 [deprecated = true]; +} + + +enum AgeRatingRatingEnum { + AGERATING_RATING_NULL = 0 [deprecated = true]; + THREE = 1 [deprecated = true]; + SEVEN = 2 [deprecated = true]; + TWELVE = 3 [deprecated = true]; + SIXTEEN = 4 [deprecated = true]; + EIGHTEEN = 5 [deprecated = true]; + RP = 6 [deprecated = true]; + EC = 7 [deprecated = true]; + E = 8 [deprecated = true]; + E10 = 9 [deprecated = true]; + T = 10 [deprecated = true]; + M = 11 [deprecated = true]; + AO = 12 [deprecated = true]; + CERO_A = 13 [deprecated = true]; + CERO_B = 14 [deprecated = true]; + CERO_C = 15 [deprecated = true]; + CERO_D = 16 [deprecated = true]; + CERO_Z = 17 [deprecated = true]; + USK_0 = 18 [deprecated = true]; + USK_6 = 19 [deprecated = true]; + USK_12 = 20 [deprecated = true]; + USK_16 = 21 [deprecated = true]; + USK_18 = 22 [deprecated = true]; + GRAC_ALL = 23 [deprecated = true]; + GRAC_TWELVE = 24 [deprecated = true]; + GRAC_FIFTEEN = 25 [deprecated = true]; + GRAC_EIGHTEEN = 26 [deprecated = true]; + GRAC_TESTING = 27 [deprecated = true]; + CLASS_IND_L = 28 [deprecated = true]; + CLASS_IND_TEN = 29 [deprecated = true]; + CLASS_IND_TWELVE = 30 [deprecated = true]; + CLASS_IND_FOURTEEN = 31 [deprecated = true]; + CLASS_IND_SIXTEEN = 32 [deprecated = true]; + CLASS_IND_EIGHTEEN = 33 [deprecated = true]; + ACB_G = 34 [deprecated = true]; + ACB_PG = 35 [deprecated = true]; + ACB_M = 36 [deprecated = true]; + ACB_MA15 = 37 [deprecated = true]; + ACB_R18 = 38 [deprecated = true]; + ACB_RC = 39 [deprecated = true]; +} + +message AgeRatingCategoryResult { + repeated AgeRatingCategory ageratingcategories = 1; +} + +message AgeRatingCategory { + uint64 id = 1; + string rating = 2; + AgeRatingOrganization organization = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message AgeRatingContentDescriptionResult { + repeated AgeRatingContentDescription ageratingcontentdescriptions = 1; +} + +message AgeRatingContentDescription { + uint64 id = 1; + AgeRatingContentDescriptionCategoryEnum category = 2 [deprecated = true]; + string description = 3; + string checksum = 4; +} + + +enum AgeRatingContentDescriptionCategoryEnum { + AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL = 0 [deprecated = true]; + ESRB_ALCOHOL_REFERENCE = 1 [deprecated = true]; + ESRB_ANIMATED_BLOOD = 2 [deprecated = true]; + ESRB_BLOOD = 3 [deprecated = true]; + ESRB_BLOOD_AND_GORE = 4 [deprecated = true]; + ESRB_CARTOON_VIOLENCE = 5 [deprecated = true]; + ESRB_COMIC_MISCHIEF = 6 [deprecated = true]; + ESRB_CRUDE_HUMOR = 7 [deprecated = true]; + ESRB_DRUG_REFERENCE = 8 [deprecated = true]; + ESRB_FANTASY_VIOLENCE = 9 [deprecated = true]; + ESRB_INTENSE_VIOLENCE = 10 [deprecated = true]; + ESRB_LANGUAGE = 11 [deprecated = true]; + ESRB_LYRICS = 12 [deprecated = true]; + ESRB_MATURE_HUMOR = 13 [deprecated = true]; + ESRB_NUDITY = 14 [deprecated = true]; + ESRB_PARTIAL_NUDITY = 15 [deprecated = true]; + ESRB_REAL_GAMBLING = 16 [deprecated = true]; + ESRB_SEXUAL_CONTENT = 17 [deprecated = true]; + ESRB_SEXUAL_THEMES = 18 [deprecated = true]; + ESRB_SEXUAL_VIOLENCE = 19 [deprecated = true]; + ESRB_SIMULATED_GAMBLING = 20 [deprecated = true]; + ESRB_STRONG_LANGUAGE = 21 [deprecated = true]; + ESRB_STRONG_LYRICS = 22 [deprecated = true]; + ESRB_STRONG_SEXUAL_CONTENT = 23 [deprecated = true]; + ESRB_SUGGESTIVE_THEMES = 24 [deprecated = true]; + ESRB_TOBACCO_REFERENCE = 25 [deprecated = true]; + ESRB_USE_OF_ALCOHOL = 26 [deprecated = true]; + ESRB_USE_OF_DRUGS = 27 [deprecated = true]; + ESRB_USE_OF_TOBACCO = 28 [deprecated = true]; + ESRB_VIOLENCE = 29 [deprecated = true]; + ESRB_VIOLENT_REFERENCES = 30 [deprecated = true]; + ESRB_ANIMATED_VIOLENCE = 31 [deprecated = true]; + ESRB_MILD_LANGUAGE = 32 [deprecated = true]; + ESRB_MILD_VIOLENCE = 33 [deprecated = true]; + ESRB_USE_OF_DRUGS_AND_ALCOHOL = 34 [deprecated = true]; + ESRB_DRUG_AND_ALCOHOL_REFERENCE = 35 [deprecated = true]; + ESRB_MILD_SUGGESTIVE_THEMES = 36 [deprecated = true]; + ESRB_MILD_CARTOON_VIOLENCE = 37 [deprecated = true]; + ESRB_MILD_BLOOD = 38 [deprecated = true]; + ESRB_REALISTIC_BLOOD_AND_GORE = 39 [deprecated = true]; + ESRB_REALISTIC_VIOLENCE = 40 [deprecated = true]; + ESRB_ALCOHOL_AND_TOBACCO_REFERENCE = 41 [deprecated = true]; + ESRB_MATURE_SEXUAL_THEMES = 42 [deprecated = true]; + ESRB_MILD_ANIMATED_VIOLENCE = 43 [deprecated = true]; + ESRB_MILD_SEXUAL_THEMES = 44 [deprecated = true]; + ESRB_USE_OF_ALCOHOL_AND_TOBACCO = 45 [deprecated = true]; + ESRB_ANIMATED_BLOOD_AND_GORE = 46 [deprecated = true]; + ESRB_MILD_FANTASY_VIOLENCE = 47 [deprecated = true]; + ESRB_MILD_LYRICS = 48 [deprecated = true]; + ESRB_REALISTIC_BLOOD = 49 [deprecated = true]; + PEGI_VIOLENCE = 50 [deprecated = true]; + PEGI_SEX = 51 [deprecated = true]; + PEGI_DRUGS = 52 [deprecated = true]; + PEGI_FEAR = 53 [deprecated = true]; + PEGI_DISCRIMINATION = 54 [deprecated = true]; + PEGI_BAD_LANGUAGE = 55 [deprecated = true]; + PEGI_GAMBLING = 56 [deprecated = true]; + PEGI_ONLINE_GAMEPLAY = 57 [deprecated = true]; + PEGI_IN_GAME_PURCHASES = 58 [deprecated = true]; + CERO_LOVE = 59 [deprecated = true]; + CERO_SEXUAL_CONTENT = 60 [deprecated = true]; + CERO_VIOLENCE = 61 [deprecated = true]; + CERO_HORROR = 62 [deprecated = true]; + CERO_DRINKING_SMOKING = 63 [deprecated = true]; + CERO_GAMBLING = 64 [deprecated = true]; + CERO_CRIME = 65 [deprecated = true]; + CERO_CONTROLLED_SUBSTANCES = 66 [deprecated = true]; + CERO_LANGUAGES_AND_OTHERS = 67 [deprecated = true]; + GRAC_SEXUALITY = 68 [deprecated = true]; + GRAC_VIOLENCE = 69 [deprecated = true]; + GRAC_FEAR_HORROR_THREATENING = 70 [deprecated = true]; + GRAC_LANGUAGE = 71 [deprecated = true]; + GRAC_ALCOHOL_TOBACCO_DRUG = 72 [deprecated = true]; + GRAC_CRIME_ANTI_SOCIAL = 73 [deprecated = true]; + GRAC_GAMBLING = 74 [deprecated = true]; + CLASS_IND_VIOLENCIA = 75 [deprecated = true]; + CLASS_IND_VIOLENCIA_EXTREMA = 76 [deprecated = true]; + CLASS_IND_CONTEUDO_SEXUAL = 77 [deprecated = true]; + CLASS_IND_NUDEZ = 78 [deprecated = true]; + CLASS_IND_SEXO = 79 [deprecated = true]; + CLASS_IND_SEXO_EXPLICITO = 80 [deprecated = true]; + CLASS_IND_DROGAS = 81 [deprecated = true]; + CLASS_IND_DROGAS_LICITAS = 82 [deprecated = true]; + CLASS_IND_DROGAS_ILICITAS = 83 [deprecated = true]; + CLASS_IND_LINGUAGEM_IMPROPRIA = 84 [deprecated = true]; + CLASS_IND_ATOS_CRIMINOSOS = 85 [deprecated = true]; +} + +message AgeRatingContentDescriptionV2Result { + repeated AgeRatingContentDescriptionV2 ageratingcontentdescriptionsv2 = 1; +} + +message AgeRatingContentDescriptionV2 { + uint64 id = 1; + string description = 2; + AgeRatingOrganization organization = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message AgeRatingOrganizationResult { + repeated AgeRatingOrganization ageratingorganizations = 1; +} + +message AgeRatingOrganization { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message AlternativeNameResult { + repeated AlternativeName alternativenames = 1; +} + +message AlternativeName { + uint64 id = 1; + string comment = 2; + Game game = 3; + string name = 4; + string checksum = 5; +} + +message ArtworkResult { + repeated Artwork artworks = 1; +} + +message Artwork { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; +} + +message CharacterResult { + repeated Character characters = 1; +} + +message Character { + uint64 id = 1; + repeated string akas = 2; + string country_name = 3; + google.protobuf.Timestamp created_at = 4; + string description = 5; + repeated Game games = 6; + GenderGenderEnum gender = 7 [deprecated = true]; + CharacterMugShot mug_shot = 8; + string name = 9; + string slug = 10; + CharacterSpeciesEnum species = 11 [deprecated = true]; + google.protobuf.Timestamp updated_at = 12; + string url = 13; + string checksum = 14; + CharacterGender character_gender = 15; + CharacterSpecie character_species = 16; +} + + +enum GenderGenderEnum { + MALE = 0 [deprecated = true]; + FEMALE = 1 [deprecated = true]; + OTHER = 2 [deprecated = true]; +} + + +enum CharacterSpeciesEnum { + CHARACTER_SPECIES_NULL = 0 [deprecated = true]; + HUMAN = 1 [deprecated = true]; + ALIEN = 2 [deprecated = true]; + ANIMAL = 3 [deprecated = true]; + ANDROID = 4 [deprecated = true]; + UNKNOWN = 5 [deprecated = true]; +} + +message CharacterGenderResult { + repeated CharacterGender charactergenders = 1; +} + +message CharacterGender { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CharacterMugShotResult { + repeated CharacterMugShot charactermugshots = 1; +} + +message CharacterMugShot { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message CharacterSpecieResult { + repeated CharacterSpecie characterspecies = 1; +} + +message CharacterSpecie { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CollectionResult { + repeated Collection collections = 1; +} + +message Collection { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated Game games = 3; + string name = 4; + string slug = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; + CollectionType type = 9; + repeated CollectionRelation as_parent_relations = 10; + repeated CollectionRelation as_child_relations = 11; +} + +message CollectionMembershipResult { + repeated CollectionMembership collectionmemberships = 1; +} + +message CollectionMembership { + uint64 id = 1; + Game game = 2; + Collection collection = 3; + CollectionMembershipType type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionMembershipTypeResult { + repeated CollectionMembershipType collectionmembershiptypes = 1; +} + +message CollectionMembershipType { + uint64 id = 1; + string name = 2; + string description = 3; + CollectionType allowed_collection_type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionRelationResult { + repeated CollectionRelation collectionrelations = 1; +} + +message CollectionRelation { + uint64 id = 1; + Collection child_collection = 2; + Collection parent_collection = 3; + CollectionRelationType type = 4; + google.protobuf.Timestamp updated_at = 5; + google.protobuf.Timestamp created_at = 6; + string checksum = 7; +} + +message CollectionRelationTypeResult { + repeated CollectionRelationType collectionrelationtypes = 1; +} + +message CollectionRelationType { + uint64 id = 1; + string name = 2; + string description = 3; + CollectionType allowed_child_type = 4; + CollectionType allowed_parent_type = 5; + google.protobuf.Timestamp updated_at = 6; + google.protobuf.Timestamp created_at = 7; + string checksum = 8; +} + +message CollectionTypeResult { + repeated CollectionType collectiontypes = 1; +} + +message CollectionType { + uint64 id = 1; + string name = 2; + string description = 3; + google.protobuf.Timestamp updated_at = 4; + google.protobuf.Timestamp created_at = 5; + string checksum = 6; +} + +message CompanyResult { + repeated Company companies = 1; +} + +message Company { + uint64 id = 1; + google.protobuf.Timestamp change_date = 2; + DateFormatChangeDateCategoryEnum change_date_category = 3 [deprecated = true]; + Company changed_company_id = 4; + int32 country = 5; + google.protobuf.Timestamp created_at = 6; + string description = 7; + repeated Game developed = 8; + CompanyLogo logo = 9; + string name = 10; + Company parent = 11; + repeated Game published = 12; + string slug = 13; + google.protobuf.Timestamp start_date = 14; + DateFormatChangeDateCategoryEnum start_date_category = 15 [deprecated = true]; + google.protobuf.Timestamp updated_at = 16; + string url = 17; + repeated CompanyWebsite websites = 18; + string checksum = 19; + CompanyStatus status = 20; + DateFormat start_date_format = 21; + DateFormat change_date_format = 22; +} + + +enum DateFormatChangeDateCategoryEnum { + YYYYMMMMDD = 0 [deprecated = true]; + YYYYMMMM = 1 [deprecated = true]; + YYYY = 2 [deprecated = true]; + YYYYQ1 = 3 [deprecated = true]; + YYYYQ2 = 4 [deprecated = true]; + YYYYQ3 = 5 [deprecated = true]; + YYYYQ4 = 6 [deprecated = true]; + TBD = 7 [deprecated = true]; +} + +message CompanyLogoResult { + repeated CompanyLogo companylogos = 1; +} + +message CompanyLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message CompanyStatusResult { + repeated CompanyStatus companystatuses = 1; +} + +message CompanyStatus { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message CompanyWebsiteResult { + repeated CompanyWebsite companywebsites = 1; +} + +message CompanyWebsite { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + bool trusted = 3; + string url = 4; + string checksum = 5; + WebsiteType type = 6; +} + + +enum WebsiteCategoryEnum { + WEBSITE_CATEGORY_NULL = 0 [deprecated = true]; + WEBSITE_OFFICIAL = 1 [deprecated = true]; + WEBSITE_WIKIA = 2 [deprecated = true]; + WEBSITE_WIKIPEDIA = 3 [deprecated = true]; + WEBSITE_FACEBOOK = 4 [deprecated = true]; + WEBSITE_TWITTER = 5 [deprecated = true]; + WEBSITE_TWITCH = 6 [deprecated = true]; + WEBSITE_INSTAGRAM = 8 [deprecated = true]; + WEBSITE_YOUTUBE = 9 [deprecated = true]; + WEBSITE_IPHONE = 10 [deprecated = true]; + WEBSITE_IPAD = 11 [deprecated = true]; + WEBSITE_ANDROID = 12 [deprecated = true]; + WEBSITE_STEAM = 13 [deprecated = true]; + WEBSITE_REDDIT = 14 [deprecated = true]; + WEBSITE_ITCH = 15 [deprecated = true]; + WEBSITE_EPICGAMES = 16 [deprecated = true]; + WEBSITE_GOG = 17 [deprecated = true]; + WEBSITE_DISCORD = 18 [deprecated = true]; + WEBSITE_BLUESKY = 19 [deprecated = true]; +} + +message CoverResult { + repeated Cover covers = 1; +} + +message Cover { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; + GameLocalization game_localization = 10; +} + +message DateFormatResult { + repeated DateFormat dateformats = 1; +} + +message DateFormat { + uint64 id = 1; + string format = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message EventResult { + repeated Event events = 1; +} + +message Event { + uint64 id = 1; + string name = 2; + string description = 3; + string slug = 4; + EventLogo event_logo = 5; + google.protobuf.Timestamp start_time = 6; + string time_zone = 7; + google.protobuf.Timestamp end_time = 8; + string live_stream_url = 9; + repeated Game games = 10; + repeated GameVideo videos = 11; + repeated EventNetwork event_networks = 12; + google.protobuf.Timestamp created_at = 13; + google.protobuf.Timestamp updated_at = 14; + string checksum = 15; +} + +message EventLogoResult { + repeated EventLogo eventlogos = 1; +} + +message EventLogo { + uint64 id = 1; + Event event = 2; + bool alpha_channel = 3; + bool animated = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp updated_at = 10; + string checksum = 11; +} + +message EventNetworkResult { + repeated EventNetwork eventnetworks = 1; +} + +message EventNetwork { + uint64 id = 1; + Event event = 2; + string url = 3; + NetworkType network_type = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message ExternalGameResult { + repeated ExternalGame externalgames = 1; +} + +message ExternalGame { + uint64 id = 1; + ExternalGameCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + Game game = 4; + string name = 5; + string uid = 6; + google.protobuf.Timestamp updated_at = 7; + string url = 8; + int32 year = 9; + ExternalGameMediaEnum media = 10 [deprecated = true]; + Platform platform = 11; + repeated int32 countries = 12; + string checksum = 13; + ExternalGameSource external_game_source = 14; + GameReleaseFormat game_release_format = 15; +} + + +enum ExternalGameCategoryEnum { + EXTERNALGAME_CATEGORY_NULL = 0 [deprecated = true]; + EXTERNALGAME_STEAM = 1 [deprecated = true]; + EXTERNALGAME_GOG = 5 [deprecated = true]; + EXTERNALGAME_YOUTUBE = 10 [deprecated = true]; + EXTERNALGAME_MICROSOFT = 11 [deprecated = true]; + EXTERNALGAME_APPLE = 13 [deprecated = true]; + EXTERNALGAME_TWITCH = 14 [deprecated = true]; + EXTERNALGAME_ANDROID = 15 [deprecated = true]; + EXTERNALGAME_AMAZON_ASIN = 20 [deprecated = true]; + EXTERNALGAME_AMAZON_LUNA = 22 [deprecated = true]; + EXTERNALGAME_AMAZON_ADG = 23 [deprecated = true]; + EXTERNALGAME_EPIC_GAME_STORE = 26 [deprecated = true]; + EXTERNALGAME_OCULUS = 28 [deprecated = true]; + EXTERNALGAME_UTOMIK = 29 [deprecated = true]; + EXTERNALGAME_ITCH_IO = 30 [deprecated = true]; + EXTERNALGAME_XBOX_MARKETPLACE = 31 [deprecated = true]; + EXTERNALGAME_KARTRIDGE = 32 [deprecated = true]; + EXTERNALGAME_PLAYSTATION_STORE_US = 36 [deprecated = true]; + EXTERNALGAME_FOCUS_ENTERTAINMENT = 37 [deprecated = true]; + EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD = 54 [deprecated = true]; + EXTERNALGAME_GAMEJOLT = 55 [deprecated = true]; +} + + +enum ExternalGameMediaEnum { + EXTERNALGAME_MEDIA_NULL = 0 [deprecated = true]; + EXTERNALGAME_DIGITAL = 1 [deprecated = true]; + EXTERNALGAME_PHYSICAL = 2 [deprecated = true]; +} + +message ExternalGameSourceResult { + repeated ExternalGameSource externalgamesources = 1; +} + +message ExternalGameSource { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message FranchiseResult { + repeated Franchise franchises = 1; +} + +message Franchise { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated Game games = 3; + string name = 4; + string slug = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; +} + +message GameResult { + repeated Game games = 1; +} + +message Game { + uint64 id = 1; + repeated AgeRating age_ratings = 2; + double aggregated_rating = 3; + int32 aggregated_rating_count = 4; + repeated AlternativeName alternative_names = 5; + repeated Artwork artworks = 6; + repeated Game bundles = 7; + GameCategoryEnum category = 8 [deprecated = true]; + Collection collection = 9 [deprecated = true]; + Cover cover = 10; + google.protobuf.Timestamp created_at = 11; + repeated Game dlcs = 12; + repeated Game expansions = 13; + repeated ExternalGame external_games = 14; + google.protobuf.Timestamp first_release_date = 15; + int32 follows = 16 [deprecated = true]; + Franchise franchise = 17; + repeated Franchise franchises = 18; + repeated GameEngine game_engines = 19; + repeated GameMode game_modes = 20; + repeated Genre genres = 21; + int32 hypes = 22; + repeated InvolvedCompany involved_companies = 23; + repeated Keyword keywords = 24; + repeated MultiplayerMode multiplayer_modes = 25; + string name = 26; + Game parent_game = 27; + repeated Platform platforms = 28; + repeated PlayerPerspective player_perspectives = 29; + double rating = 30; + int32 rating_count = 31; + repeated ReleaseDate release_dates = 32; + repeated Screenshot screenshots = 33; + repeated Game similar_games = 34; + string slug = 35; + repeated Game standalone_expansions = 36; + GameStatusEnum status = 37 [deprecated = true]; + string storyline = 38; + string summary = 39; + repeated int32 tags = 40; + repeated Theme themes = 41; + double total_rating = 42; + int32 total_rating_count = 43; + google.protobuf.Timestamp updated_at = 44; + string url = 45; + Game version_parent = 46; + string version_title = 47; + repeated GameVideo videos = 48; + repeated Website websites = 49; + string checksum = 50; + repeated Game remakes = 51; + repeated Game remasters = 52; + repeated Game expanded_games = 53; + repeated Game ports = 54; + repeated Game forks = 55; + repeated LanguageSupport language_supports = 56; + repeated GameLocalization game_localizations = 57; + repeated Collection collections = 58; + GameStatus game_status = 59; + GameType game_type = 60; +} + + +enum GameCategoryEnum { + MAIN_GAME = 0 [deprecated = true]; + DLC_ADDON = 1 [deprecated = true]; + EXPANSION = 2 [deprecated = true]; + BUNDLE = 3 [deprecated = true]; + STANDALONE_EXPANSION = 4 [deprecated = true]; + MOD = 5 [deprecated = true]; + EPISODE = 6 [deprecated = true]; + SEASON = 7 [deprecated = true]; + REMAKE = 8 [deprecated = true]; + REMASTER = 9 [deprecated = true]; + EXPANDED_GAME = 10 [deprecated = true]; + PORT = 11 [deprecated = true]; + FORK = 12 [deprecated = true]; + PACK = 13 [deprecated = true]; + UPDATE = 14 [deprecated = true]; +} + + +enum GameStatusEnum { + RELEASED = 0 [deprecated = true]; + ALPHA = 2 [deprecated = true]; + BETA = 3 [deprecated = true]; + EARLY_ACCESS = 4 [deprecated = true]; + OFFLINE = 5 [deprecated = true]; + CANCELLED = 6 [deprecated = true]; + RUMORED = 7 [deprecated = true]; + DELISTED = 8 [deprecated = true]; +} + +message GameEngineResult { + repeated GameEngine gameengines = 1; +} + +message GameEngine { + uint64 id = 1; + repeated Company companies = 2; + google.protobuf.Timestamp created_at = 3; + string description = 4; + GameEngineLogo logo = 5; + string name = 6; + repeated Platform platforms = 7; + string slug = 8; + google.protobuf.Timestamp updated_at = 9; + string url = 10; + string checksum = 11; +} + +message GameEngineLogoResult { + repeated GameEngineLogo gameenginelogos = 1; +} + +message GameEngineLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message GameLocalizationResult { + repeated GameLocalization gamelocalizations = 1; +} + +message GameLocalization { + uint64 id = 1; + string name = 2; + Cover cover = 3; + Game game = 4; + Region region = 5; + google.protobuf.Timestamp created_at = 6; + google.protobuf.Timestamp updated_at = 7; + string checksum = 8; +} + +message GameModeResult { + repeated GameMode gamemodes = 1; +} + +message GameMode { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message GameReleaseFormatResult { + repeated GameReleaseFormat gamereleaseformats = 1; +} + +message GameReleaseFormat { + uint64 id = 1; + string format = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameStatusResult { + repeated GameStatus gamestatuses = 1; +} + +message GameStatus { + uint64 id = 1; + string status = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameTimeToBeatResult { + repeated GameTimeToBeat gametimetobeats = 1; +} + +message GameTimeToBeat { + uint64 id = 1; + int32 game_id = 2; + int32 hastily = 3; + int32 normally = 4; + int32 completely = 5; + int32 count = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; + string checksum = 9; +} + +message GameTypeResult { + repeated GameType gametypes = 1; +} + +message GameType { + uint64 id = 1; + string type = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message GameVersionResult { + repeated GameVersion gameversions = 1; +} + +message GameVersion { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + repeated GameVersionFeature features = 3; + Game game = 4; + repeated Game games = 5; + google.protobuf.Timestamp updated_at = 6; + string url = 7; + string checksum = 8; +} + +message GameVersionFeatureResult { + repeated GameVersionFeature gameversionfeatures = 1; +} + +message GameVersionFeature { + uint64 id = 1; + GameVersionFeatureCategoryEnum category = 2; + string description = 3; + int32 position = 4; + string title = 5; + repeated GameVersionFeatureValue values = 6; + string checksum = 7; +} + + +enum GameVersionFeatureCategoryEnum { + BOOLEAN = 0; + DESCRIPTION = 1; +} + +message GameVersionFeatureValueResult { + repeated GameVersionFeatureValue gameversionfeaturevalues = 1; +} + +message GameVersionFeatureValue { + uint64 id = 1; + Game game = 2; + GameVersionFeature game_feature = 3; + GameVersionFeatureValueIncludedFeatureEnum included_feature = 4; + string note = 5; + string checksum = 6; +} + + +enum GameVersionFeatureValueIncludedFeatureEnum { + NOT_INCLUDED = 0; + INCLUDED = 1; + PRE_ORDER_ONLY = 2; +} + +message GameVideoResult { + repeated GameVideo gamevideos = 1; +} + +message GameVideo { + uint64 id = 1; + Game game = 2; + string name = 3; + string video_id = 4; + string checksum = 5; +} + +message GenreResult { + repeated Genre genres = 1; +} + +message Genre { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message InvolvedCompanyResult { + repeated InvolvedCompany involvedcompanies = 1; +} + +message InvolvedCompany { + uint64 id = 1; + Company company = 2; + google.protobuf.Timestamp created_at = 3; + bool developer = 4; + Game game = 5; + bool porting = 6; + bool publisher = 7; + bool supporting = 8; + google.protobuf.Timestamp updated_at = 9; + string checksum = 10; +} + +message KeywordResult { + repeated Keyword keywords = 1; +} + +message Keyword { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message LanguageResult { + repeated Language languages = 1; +} + +message Language { + uint64 id = 1; + string name = 2; + string native_name = 3; + string locale = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message LanguageSupportResult { + repeated LanguageSupport languagesupports = 1; +} + +message LanguageSupport { + uint64 id = 1; + Game game = 2; + Language language = 3; + LanguageSupportType language_support_type = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message LanguageSupportTypeResult { + repeated LanguageSupportType languagesupporttypes = 1; +} + +message LanguageSupportType { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message MultiplayerModeResult { + repeated MultiplayerMode multiplayermodes = 1; +} + +message MultiplayerMode { + uint64 id = 1; + bool campaigncoop = 2; + bool dropin = 3; + Game game = 4; + bool lancoop = 5; + bool offlinecoop = 6; + int32 offlinecoopmax = 7; + int32 offlinemax = 8; + bool onlinecoop = 9; + int32 onlinecoopmax = 10; + int32 onlinemax = 11; + Platform platform = 12; + bool splitscreen = 13; + bool splitscreenonline = 14; + string checksum = 15; +} + +message NetworkTypeResult { + repeated NetworkType networktypes = 1; +} + +message NetworkType { + uint64 id = 1; + string name = 2; + repeated EventNetwork event_networks = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message PlatformResult { + repeated Platform platforms = 1; +} + +message Platform { + uint64 id = 1; + string abbreviation = 2; + string alternative_name = 3; + PlatformCategoryEnum category = 4 [deprecated = true]; + google.protobuf.Timestamp created_at = 5; + int32 generation = 6; + string name = 7; + PlatformLogo platform_logo = 8; + PlatformFamily platform_family = 9; + string slug = 10; + string summary = 11; + google.protobuf.Timestamp updated_at = 12; + string url = 13; + repeated PlatformVersion versions = 14; + repeated PlatformWebsite websites = 15; + string checksum = 16; + PlatformType platform_type = 17; +} + + +enum PlatformCategoryEnum { + PLATFORM_CATEGORY_NULL = 0 [deprecated = true]; + CONSOLE = 1 [deprecated = true]; + ARCADE = 2 [deprecated = true]; + PLATFORM = 3 [deprecated = true]; + OPERATING_SYSTEM = 4 [deprecated = true]; + PORTABLE_CONSOLE = 5 [deprecated = true]; + COMPUTER = 6 [deprecated = true]; +} + +message PlatformFamilyResult { + repeated PlatformFamily platformfamilies = 1; +} + +message PlatformFamily { + uint64 id = 1; + string name = 2; + string slug = 3; + string checksum = 4; +} + +message PlatformLogoResult { + repeated PlatformLogo platformlogos = 1; +} + +message PlatformLogo { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + int32 height = 4; + string image_id = 5; + string url = 6; + int32 width = 7; + string checksum = 8; +} + +message PlatformTypeResult { + repeated PlatformType platformtypes = 1; +} + +message PlatformType { + uint64 id = 1; + string name = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message PlatformVersionResult { + repeated PlatformVersion platformversions = 1; +} + +message PlatformVersion { + uint64 id = 1; + repeated PlatformVersionCompany companies = 2; + string connectivity = 3; + string cpu = 4; + string graphics = 5; + PlatformVersionCompany main_manufacturer = 6; + string media = 7; + string memory = 8; + string name = 9; + string os = 11; + string output = 12; + PlatformLogo platform_logo = 13; + repeated PlatformVersionReleaseDate platform_version_release_dates = 14; + string resolutions = 15; + string slug = 16; + string sound = 17; + string storage = 18; + string summary = 19; + string url = 20; + string checksum = 21; +} + +message PlatformVersionCompanyResult { + repeated PlatformVersionCompany platformversioncompanies = 1; +} + +message PlatformVersionCompany { + uint64 id = 1; + string comment = 2; + Company company = 3; + bool developer = 4; + bool manufacturer = 5; + string checksum = 6; +} + +message PlatformVersionReleaseDateResult { + repeated PlatformVersionReleaseDate platformversionreleasedates = 1; +} + +message PlatformVersionReleaseDate { + uint64 id = 1; + DateFormatChangeDateCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp date = 4; + string human = 5; + int32 m = 6; + PlatformVersion platform_version = 7; + RegionRegionEnum region = 8 [deprecated = true]; + google.protobuf.Timestamp updated_at = 9; + int32 y = 10; + string checksum = 11; + DateFormat date_format = 12; + ReleaseDateRegion release_region = 13; +} + + +enum RegionRegionEnum { + REGION_REGION_NULL = 0 [deprecated = true]; + EUROPE = 1 [deprecated = true]; + NORTH_AMERICA = 2 [deprecated = true]; + AUSTRALIA = 3 [deprecated = true]; + NEW_ZEALAND = 4 [deprecated = true]; + JAPAN = 5 [deprecated = true]; + CHINA = 6 [deprecated = true]; + ASIA = 7 [deprecated = true]; + WORLDWIDE = 8 [deprecated = true]; + KOREA = 9 [deprecated = true]; + BRAZIL = 10 [deprecated = true]; +} + +message PlatformWebsiteResult { + repeated PlatformWebsite platformwebsites = 1; +} + +message PlatformWebsite { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + bool trusted = 3; + string url = 4; + string checksum = 5; + WebsiteType type = 6; +} + +message PlayerPerspectiveResult { + repeated PlayerPerspective playerperspectives = 1; +} + +message PlayerPerspective { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message PopularityPrimitiveResult { + repeated PopularityPrimitive popularityprimitives = 1; +} + +message PopularityPrimitive { + uint64 id = 1; + int32 game_id = 2; + PopularityType popularity_type = 3; + PopularitySourcePopularitySourceEnum popularity_source = 4 [deprecated = true]; + double value = 5; + google.protobuf.Timestamp calculated_at = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp updated_at = 8; + string checksum = 9; + ExternalGameSource external_popularity_source = 10; +} + + +enum PopularitySourcePopularitySourceEnum { + POPULARITYSOURCE_POPULARITY_SOURCE_NULL = 0 [deprecated = true]; + IGDB = 121 [deprecated = true]; +} + +message PopularityTypeResult { + repeated PopularityType popularitytypes = 1; +} + +message PopularityType { + uint64 id = 1; + PopularitySourcePopularitySourceEnum popularity_source = 2 [deprecated = true]; + string name = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; + ExternalGameSource external_popularity_source = 7; +} + +message RegionResult { + repeated Region regions = 1; +} + +message Region { + uint64 id = 1; + string name = 2; + string category = 3; + string identifier = 4; + google.protobuf.Timestamp created_at = 5; + google.protobuf.Timestamp updated_at = 6; + string checksum = 7; +} + +message ReleaseDateResult { + repeated ReleaseDate releasedates = 1; +} + +message ReleaseDate { + uint64 id = 1; + DateFormatChangeDateCategoryEnum category = 2 [deprecated = true]; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp date = 4; + Game game = 5; + string human = 6; + int32 m = 7; + Platform platform = 8; + RegionRegionEnum region = 9 [deprecated = true]; + google.protobuf.Timestamp updated_at = 10; + int32 y = 11; + string checksum = 12; + ReleaseDateStatus status = 13; + DateFormat date_format = 14; + ReleaseDateRegion release_region = 15; +} + +message ReleaseDateRegionResult { + repeated ReleaseDateRegion releasedateregions = 1; +} + +message ReleaseDateRegion { + uint64 id = 1; + string region = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} + +message ReleaseDateStatusResult { + repeated ReleaseDateStatus releasedatestatuses = 1; +} + +message ReleaseDateStatus { + uint64 id = 1; + string name = 2; + string description = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + string checksum = 6; +} + +message ScreenshotResult { + repeated Screenshot screenshots = 1; +} + +message Screenshot { + uint64 id = 1; + bool alpha_channel = 2; + bool animated = 3; + Game game = 4; + int32 height = 5; + string image_id = 6; + string url = 7; + int32 width = 8; + string checksum = 9; +} + +message SearchResult { + repeated Search searches = 1; +} + +message Search { + uint64 id = 1; + string alternative_name = 2; + Character character = 3; + Collection collection = 4; + Company company = 5; + string description = 6; + Game game = 7; + string name = 8; + Platform platform = 9; + google.protobuf.Timestamp published_at = 10; + TestDummy test_dummy = 11; + Theme theme = 12; + string checksum = 13; +} + +message TestDummyResult { + repeated TestDummy testdummies = 1; +} + +message TestDummy { + uint64 id = 1; + bool bool_value = 2; + google.protobuf.Timestamp created_at = 3; + TestDummyEnumTestEnum enum_test = 4; + double float_value = 5; + Game game = 6; + repeated int32 integer_array = 7; + int32 integer_value = 8; + string name = 9; + int32 new_integer_value = 10; + bool private = 11; + string slug = 12; + repeated string string_array = 13; + repeated TestDummy test_dummies = 14; + TestDummy test_dummy = 15; + google.protobuf.Timestamp updated_at = 16; + string url = 17; + string checksum = 18; +} + + +enum TestDummyEnumTestEnum { + TESTDUMMY_ENUM_TEST_NULL = 0; + ENUM1 = 1; + ENUM2 = 2; +} + +message ThemeResult { + repeated Theme themes = 1; +} + +message Theme { + uint64 id = 1; + google.protobuf.Timestamp created_at = 2; + string name = 3; + string slug = 4; + google.protobuf.Timestamp updated_at = 5; + string url = 6; + string checksum = 7; +} + +message WebsiteResult { + repeated Website websites = 1; +} + +message Website { + uint64 id = 1; + WebsiteCategoryEnum category = 2 [deprecated = true]; + Game game = 3; + bool trusted = 4; + string url = 5; + string checksum = 6; + WebsiteType type = 7; +} + +message WebsiteTypeResult { + repeated WebsiteType websitetypes = 1; +} + +message WebsiteType { + uint64 id = 1; + string type = 2; + google.protobuf.Timestamp created_at = 3; + google.protobuf.Timestamp updated_at = 4; + string checksum = 5; +} diff --git a/protobuf_gen.sh b/protobuf_gen.sh new file mode 100755 index 0000000..5e0ed08 --- /dev/null +++ b/protobuf_gen.sh @@ -0,0 +1,4 @@ +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + +wget https://api.igdb.com/v4/igdbapi.proto -O ./igdbapi.proto +protoc --go_out=. --go_opt=Mproto/igdbapi.proto=/proto ./proto/igdbapi.proto diff --git a/request.go b/request.go new file mode 100644 index 0000000..dbe8e81 --- /dev/null +++ b/request.go @@ -0,0 +1,29 @@ +package igdb + +import ( + "net/http" + "time" + + "github.com/go-resty/resty/v2" +) + +var client *resty.Client + +func init() { + client = resty.New() + client.SetRetryCount(3).SetRetryWaitTime(3 * time.Second).AddRetryCondition( + func(r *resty.Response, err error) bool { + return err != nil || r.StatusCode() == http.StatusTooManyRequests + }, + ) +} + +func request() *resty.Request { + return client.R().SetLogger(disableLogger{}).SetHeader("Accept-Charset", "utf-8").SetHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0") +} + +type disableLogger struct{} + +func (d disableLogger) Errorf(format string, v ...interface{}) {} +func (d disableLogger) Warnf(format string, v ...interface{}) {} +func (d disableLogger) Debugf(format string, v ...interface{}) {} diff --git a/search.go b/search.go new file mode 100644 index 0000000..47f06a8 --- /dev/null +++ b/search.go @@ -0,0 +1,98 @@ +package igdb + +import ( + "encoding/json" + "fmt" + "github/bestnite/go-igdb/constant" + "io" + "net/http" + "net/url" + "strings" + "time" + + pb "github/bestnite/go-igdb/proto" + + "git.nite07.com/nite/flaresolverr" + "github.com/PuerkitoBio/goquery" + "google.golang.org/protobuf/proto" +) + +func (g *igdb) SearchGame(query string) ([]*pb.Game, error) { + resp, err := g.Request(constant.IGDBGameURL, query) + if err != nil { + return nil, fmt.Errorf("failed to search: %s: %w", query, err) + } + + data := pb.GameResult{} + if err = proto.Unmarshal(resp.Body(), &data); err != nil { + return nil, fmt.Errorf("failed to parse IGDB search response: %w", err) + } + + if len(data.Games) != 0 && data.Games[0].Name == "" { + return g.WebSearchGame(query) + } + + return data.Games, nil +} + +var webSearchCFCookies struct { + cookies []*http.Cookie + expires time.Time +} + +func (g *igdb) WebSearchGame(name string) ([]*pb.Game, error) { + params := url.Values{} + params.Add("q", name) + params.Add("utf8", "✓") + Url := fmt.Sprintf("%s?%s", constant.IGDBWebSearchURL, params.Encode()) + + f, err := g.getFlaresolverr() + if err != nil { + return nil, fmt.Errorf("failed to get flaresolverr: %w", err) + } + + var respBody io.Reader + if webSearchCFCookies.cookies == nil || time.Now().After(webSearchCFCookies.expires) { + resp, err := f.GetV1(Url, nil) + if err != nil { + return nil, fmt.Errorf("failed to web search: %s: %w", name, err) + } + webSearchCFCookies.cookies = resp.Solution.Cookies + webSearchCFCookies.expires = time.Now().Add(3 * time.Hour) + respBody = strings.NewReader(resp.Solution.Response) + } else if time.Now().Before(webSearchCFCookies.expires) { + resp, err := f.SimulateGet(Url, &flaresolverr.SimulateOptions{ + HttpCookies: webSearchCFCookies.cookies, + }) + if err != nil { + return nil, fmt.Errorf("failed to search IGDB ID: %s: %w", name, err) + } + respBody = strings.NewReader(resp.Body) + } + + doc, err := goquery.NewDocumentFromReader(respBody) + if err != nil { + return nil, fmt.Errorf("failed to parse IGDB web search response: %w", err) + } + selection := doc.Find("script[data-component-name='GameEntries']") + if selection.Length() == 0 { + return nil, fmt.Errorf("no search results found for: %s", name) + } + innerJson := selection.First().Text() + data := struct { + Games []struct { + Id uint64 `json:"id"` + Name string `json:"name"` + } `json:"games"` + }{} + if err := json.Unmarshal([]byte(innerJson), &data); err != nil { + return nil, fmt.Errorf("failed to unmarshal IGDB web search response: %w", err) + } + + ids := make([]uint64, len(data.Games)) + for i, game := range data.Games { + ids[i] = game.Id + } + + return g.GetGames(ids) +} diff --git a/token.go b/token.go new file mode 100644 index 0000000..f861967 --- /dev/null +++ b/token.go @@ -0,0 +1,62 @@ +package igdb + +import ( + "encoding/json" + "fmt" + "github/bestnite/go-igdb/constant" + "net/url" + "time" +) + +type twitchToken struct { + clientID string + clientSecret string + token string + expires time.Time +} + +func NewTwitchToken(clientID, clientSecret string) *twitchToken { + return &twitchToken{ + clientID: clientID, + clientSecret: clientSecret, + } +} + +func (t *twitchToken) getToken() (string, error) { + if t.token != "" && time.Now().Before(t.expires) { + return t.token, nil + } + token, expires, err := t.loginTwitch() + if err != nil { + return "", fmt.Errorf("failed to login twitch: %w", err) + } + t.token = token + t.expires = time.Now().Add(expires) + return token, nil +} + +func (t *twitchToken) loginTwitch() (string, time.Duration, error) { + baseURL, _ := url.Parse(constant.TwitchAuthURL) + params := url.Values{} + params.Add("client_id", t.clientID) + params.Add("client_secret", t.clientSecret) + params.Add("grant_type", "client_credentials") + baseURL.RawQuery = params.Encode() + + resp, err := request().SetHeader("User-Agent", "").Post(baseURL.String()) + if err != nil { + return "", 0, fmt.Errorf("failed to make request: %s: %w", baseURL.String(), err) + } + + data := struct { + AccessToken string `json:"access_token"` + ExpiresIn int64 `json:"expires_in"` + TokenType string `json:"token_type"` + }{} + + err = json.Unmarshal(resp.Body(), &data) + if err != nil { + return "", 0, fmt.Errorf("failed to parse response: %w", err) + } + return data.AccessToken, time.Second * time.Duration(data.ExpiresIn), nil +} diff --git a/webhook.go b/webhook.go new file mode 100644 index 0000000..75d5aff --- /dev/null +++ b/webhook.go @@ -0,0 +1,37 @@ +package igdb + +import ( + "fmt" + "github/bestnite/go-igdb/constant" + "net/http" + "net/url" +) + +// ActiveWebhook activates a webhook for a specific endpoint. +// +// https://api-docs.igdb.com/#webhooks +func (g *igdb) ActiveWebhook(endpoint, secret, callbackUrl string) error { + t, err := g.token.getToken() + if err != nil { + return fmt.Errorf("failed to get Twitch token: %w", err) + } + dataBody := url.Values{} + dataBody.Set("url", callbackUrl) + dataBody.Set("secret", secret) + dataBody.Set("method", "update") + resp, err := request().SetBody(dataBody.Encode()).SetHeaders(map[string]string{ + "Client-ID": g.clientID, + "Authorization": "Bearer " + t, + "User-Agent": "", + "Content-Type": "application/x-www-form-urlencoded", + }).Post(fmt.Sprintf(constant.IGDBWebhookURL, endpoint)) + + if err != nil { + return fmt.Errorf("failed to make request: %s: %w", callbackUrl, err) + } + + if resp.StatusCode() == http.StatusOK { + return nil + } + return fmt.Errorf("failed to activate webhook: %s: %s", callbackUrl, resp.String()) +}